Documentation Source Text

Hex Artifact Content
Login

Artifact f0bf7b7fa021f91f92bafc04ab594cb456887921:


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 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f  _SQL_LENGTH]  </
1570: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
1580: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
1590: 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75  MBER]  </li>.</u
15a0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e  l>..<a name="con
15b0: 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f  trolfeatures"></
15c0: 61 3e 0a 3c 68 32 3e 31 2e 33 20 4f 70 74 69 6f  a>.<h2>1.3 Optio
15d0: 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20 4f 70  ns To Control Op
15e0: 65 72 61 74 69 6e 67 20 43 68 61 72 61 63 74 65  erating Characte
15f0: 72 69 73 74 69 63 73 3c 2f 68 32 3e 0a 0a 3c 74  ristics</h2>..<t
1600: 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  cl>.COMPILE_OPTI
1610: 4f 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42 59 54  ON {SQLITE_4_BYT
1620: 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43  E_ALIGNED_MALLOC
1630: 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20 73 79  } {.  On most sy
1640: 73 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c 6c 6f  stems, the mallo
1650: 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 20  c() system call 
1660: 72 65 74 75 72 6e 73 20 61 20 62 75 66 66 65 72  returns a buffer
1670: 20 74 68 61 74 20 69 73 0a 20 20 61 6c 69 67 6e   that is.  align
1680: 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 20  ed to an 8-byte 
1690: 62 6f 75 6e 64 61 72 79 2e 20 20 42 75 74 20 6f  boundary.  But o
16a0: 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73 20 28  n some systems (
16b0: 65 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d 61 6c  ex: windows) mal
16c0: 6c 6f 63 28 29 0a 20 20 72 65 74 75 72 6e 73 20  loc().  returns 
16d0: 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70  4-byte aligned p
16e0: 6f 69 6e 74 65 72 2e 20 20 54 68 69 73 20 63 6f  ointer.  This co
16f0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1700: 6e 20 6d 75 73 74 20 62 65 20 75 73 65 64 0a 20  n must be used. 
1710: 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74   on systems that
1720: 20 72 65 74 75 72 6e 20 34 2d 62 79 74 65 20 61   return 4-byte a
1730: 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 73 20  ligned pointers 
1740: 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e 0a 7d  from malloc()..}
1750: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1760: 20 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f 53 45   {SQLITE_CASE_SE
1770: 4e 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20 7b 0a  NSITIVE_LIKE} {.
1780: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
1790: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65   is present, the
17a0: 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b  n the built-in [
17b0: 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 77  LIKE] operator w
17c0: 69 6c 6c 20 62 65 0a 20 20 63 61 73 65 20 73 65  ill be.  case se
17d0: 6e 73 69 74 69 76 65 2e 20 20 54 68 69 73 20 73  nsitive.  This s
17e0: 61 6d 65 20 65 66 66 65 63 74 20 63 61 6e 20 62  ame effect can b
17f0: 65 20 61 63 68 69 65 76 65 64 20 61 74 20 72 75  e achieved at ru
1800: 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 74  n-time using.  t
1810: 68 65 20 5b 63 61 73 65 5f 73 65 6e 73 69 74 69  he [case_sensiti
1820: 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61 5d 2e  ve_like pragma].
1830: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1840: 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56 45 5f  ON {SQLITE_HAVE_
1850: 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68  ISNAN} {.  If th
1860: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
1870: 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69 74  sent, then SQLit
1880: 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 69  e will use the i
1890: 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20  snan() function 
18a0: 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73 74 65  from.  the syste
18b0: 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79 2e 20  m math library. 
18c0: 20 57 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70   Without this op
18d0: 74 69 6f 6e 20 28 74 68 65 20 64 65 66 61 75 6c  tion (the defaul
18e0: 74 20 62 65 68 61 76 69 6f 72 29 0a 20 20 53 51  t behavior).  SQ
18f0: 4c 69 74 65 20 75 73 65 73 20 69 74 73 20 6f 77  Lite uses its ow
1900: 6e 20 69 6e 74 65 72 6e 61 6c 20 69 6d 70 6c 65  n internal imple
1910: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69 73 6e  mentation of isn
1920: 61 6e 28 29 2e 20 20 53 51 4c 69 74 65 20 75 73  an().  SQLite us
1930: 65 73 0a 20 20 69 74 73 20 6f 77 6e 20 69 6e 74  es.  its own int
1940: 65 72 6e 61 6c 20 69 73 6e 61 6e 28 29 20 69 6d  ernal isnan() im
1950: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 62 79 20  plementation by 
1960: 64 65 66 61 75 6c 74 20 62 65 63 61 75 73 65 20  default because 
1970: 6f 66 20 70 61 73 74 0a 20 20 70 72 6f 62 6c 65  of past.  proble
1980: 6d 73 20 77 69 74 68 20 73 79 73 74 65 6d 20 69  ms with system i
1990: 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e 73  snan() functions
19a0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
19b0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f  ION {SQLITE_OS_O
19c0: 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  THER=<i>&lt;0 or
19d0: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
19e0: 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  The option cause
19f0: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
1a00: 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f 70   its built-in op
1a10: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69  erating system i
1a20: 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f 72 20  nterfaces.  for 
1a30: 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20 61  Unix, Windows, a
1a40: 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20 72 65  nd OS/2.  The re
1a50: 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72 79 20  sulting library 
1a60: 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65 66  will have no def
1a70: 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ault.  [sqlite3_
1a80: 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e 67 20  vfs | operating 
1a90: 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65  system interface
1aa0: 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  ].  Applications
1ab0: 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73 71 6c   must use.  [sql
1ac0: 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65  ite3_vfs_registe
1ad0: 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74 65 72  r()] to register
1ae0: 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
1af0: 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f 72 65  interface before
1b00: 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74 65 2e  .  using SQLite.
1b10: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d    Applications m
1b20: 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c 79 20  ust also supply 
1b30: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
1b40: 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  for the.  [sqlit
1b50: 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61 6e  e3_os_init()] an
1b60: 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  d [sqlite3_os_en
1b70: 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  d()] interfaces.
1b80: 20 20 54 68 65 20 75 73 75 61 6c 20 70 72 61 63    The usual prac
1b90: 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20 74 68  tice.  is for th
1ba0: 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71 6c 69  e supplied [sqli
1bb0: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 74  te3_os_init()] t
1bc0: 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  o invoke [sqlite
1bd0: 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29  3_vfs_register()
1be0: 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69 6c 6c  ]..  SQLite will
1bf0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
1c00: 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 6f  nvoke [sqlite3_o
1c10: 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e 20 69  s_init()] when i
1c20: 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a 0a  t initializes...
1c30: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
1c40: 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 64 20   typically used 
1c50: 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 53 51  when building SQ
1c60: 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d 62 65  Lite for an embe
1c70: 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d 20  dded.  platform 
1c80: 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20 6f 70  with a custom op
1c90: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a  erating system..
1ca0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1cb0: 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55 52 45  N {SQLITE_SECURE
1cc0: 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69  _DELETE} {.  Thi
1cd0: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
1ce0: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
1cf0: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
1d00: 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65 63 75  g of the.  [secu
1d10: 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61  re_delete pragma
1d20: 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  ].  When this op
1d30: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
1d40: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
1d50: 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f 66  defaults.  to of
1d60: 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  f.  When this op
1d70: 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c  tion is present,
1d80: 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64   secure_delete d
1d90: 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a  efaults to on...
1da0: 20 20 54 68 65 20 73 65 63 75 72 65 5f 64 65 6c    The secure_del
1db0: 65 74 65 20 73 65 74 74 69 6e 67 20 63 61 75 73  ete setting caus
1dc0: 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e 74 65  es deleted conte
1dd0: 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77 72 69  nt to be overwri
1de0: 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65 72 6f  tten with.  zero
1df0: 73 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 73  s.  There is a s
1e00: 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65  mall performance
1e10: 20 70 65 6e 61 6c 74 79 20 66 6f 72 20 74 68 69   penalty for thi
1e20: 73 20 73 69 6e 63 65 20 61 64 64 69 74 69 6f 6e  s since addition
1e30: 61 6c 20 49 2f 4f 0a 20 20 6d 75 73 74 20 6f 63  al I/O.  must oc
1e40: 63 75 72 2e 20 20 4f 6e 20 74 68 65 20 6f 74 68  cur.  On the oth
1e50: 65 72 20 68 61 6e 64 2c 20 73 65 63 75 72 65 5f  er hand, secure_
1e60: 64 65 6c 65 74 65 20 63 61 6e 20 70 72 65 76 65  delete can preve
1e70: 6e 74 20 73 65 6e 73 69 74 69 76 65 20 0a 20 20  nt sensitive .  
1e80: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d  information from
1e90: 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20 75 6e   lingering in un
1ea0: 75 73 65 64 20 70 61 72 74 73 20 6f 66 20 74 68  used parts of th
1eb0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
1ec0: 61 66 74 65 72 20 69 74 0a 20 20 68 61 73 20 61  after it.  has a
1ed0: 6c 6c 65 67 65 64 6c 79 20 62 65 65 6e 20 64 65  llegedly been de
1ee0: 6c 65 74 65 64 2e 20 20 53 65 65 20 74 68 65 20  leted.  See the 
1ef0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e  documentation on
1f00: 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64   the.  [secure_d
1f10: 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 20 66 6f  elete pragma] fo
1f20: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
1f30: 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d  ormation..}..COM
1f40: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
1f50: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 3c  ITE_THREADSAFE=<
1f60: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20  i>&lt;0 or 1 or 
1f70: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  2&gt;</i>} {.  T
1f80: 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72  his option contr
1f90: 6f 6c 73 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ols whether or n
1fa0: 6f 74 20 63 6f 64 65 20 69 73 20 69 6e 63 6c 75  ot code is inclu
1fb0: 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20 74 6f  ded in SQLite to
1fc0: 0a 20 20 65 6e 61 62 6c 65 20 69 74 20 74 6f 20  .  enable it to 
1fd0: 6f 70 65 72 61 74 65 20 73 61 66 65 6c 79 20 69  operate safely i
1fe0: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
1ff0: 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20  d environment.  
2000: 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20 69 73  The.  default is
2010: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2020: 46 45 3d 31 20 77 68 69 63 68 20 69 73 20 73 61  FE=1 which is sa
2030: 66 65 20 66 6f 72 20 75 73 65 20 69 6e 20 61 20  fe for use in a 
2040: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20 20  multithreaded.  
2050: 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 57 68  environment.  Wh
2060: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
2070: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2080: 46 45 3d 30 20 61 6c 6c 20 6d 75 74 65 78 69 6e  FE=0 all mutexin
2090: 67 20 63 6f 64 65 0a 20 20 69 73 20 6f 6d 69 74  g code.  is omit
20a0: 74 65 64 20 61 6e 64 20 69 74 20 69 73 20 75 6e  ted and it is un
20b0: 73 61 66 65 20 74 6f 20 75 73 65 20 53 51 4c 69  safe to use SQLi
20c0: 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  te in a multithr
20d0: 65 61 64 65 64 20 70 72 6f 67 72 61 6d 2e 0a 20  eaded program.. 
20e0: 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77   When compiled w
20f0: 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41  ith SQLITE_THREA
2100: 44 53 41 46 45 3d 32 2c 20 53 51 4c 69 74 65 20  DSAFE=2, SQLite 
2110: 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
2120: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20   multithreaded. 
2130: 20 70 72 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e 67   program so long
2140: 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72 65 61   as no two threa
2150: 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  ds attempt to us
2160: 65 20 74 68 65 20 73 61 6d 65 0a 20 20 5b 64 61  e the same.  [da
2170: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2180: 6e 5d 20 61 74 20 74 68 65 20 73 61 6d 65 20 74  n] at the same t
2190: 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69  ime...  To put i
21a0: 74 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 53  t another way, S
21b0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
21c0: 3d 31 20 73 65 74 73 20 74 68 65 20 64 65 66 61  =1 sets the defa
21d0: 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  ult.  [threading
21e0: 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c   mode] to Serial
21f0: 69 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f 54 48  ized.  SQLITE_TH
2200: 52 45 41 44 53 41 46 45 3d 32 20 73 65 74 73 20  READSAFE=2 sets 
2210: 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74  the default.  [t
2220: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
2230: 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 65 64  o Multi-threaded
2240: 2e 20 20 41 6e 64 20 53 51 4c 49 54 45 5f 54 48  .  And SQLITE_TH
2250: 52 45 41 44 53 41 46 45 3d 30 20 73 65 74 73 20  READSAFE=0 sets 
2260: 74 68 65 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  the.  [threading
2270: 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65   mode] to Single
2280: 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20 20 54 68  -threaded...  Th
2290: 65 20 76 61 6c 75 65 20 6f 66 20 53 51 4c 49 54  e value of SQLIT
22a0: 45 5f 54 48 52 45 41 44 53 41 46 45 20 63 61 6e  E_THREADSAFE can
22b0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61   be determined a
22c0: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
22d0: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
22e0: 74 68 72 65 61 64 73 61 66 65 28 29 5d 20 69 6e  threadsafe()] in
22f0: 74 65 72 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e  terface...  When
2300: 20 53 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e   SQLite has been
2310: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
2320: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
2330: 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54  =1 or.  SQLITE_T
2340: 48 52 45 41 44 53 41 46 45 3d 32 20 74 68 65 6e  HREADSAFE=2 then
2350: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
2360: 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65 20 61  mode].  can be a
2370: 6c 74 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69  ltered at run-ti
2380: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71  me using the [sq
2390: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
23a0: 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65 74 68  interface togeth
23b0: 65 72 0a 20 20 77 69 74 68 20 6f 6e 65 20 6f 66  er.  with one of
23c0: 20 74 68 65 73 65 20 76 65 72 62 73 3a 0a 0a 20   these verbs:.. 
23d0: 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c   <ul>.  <li>[SQL
23e0: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
23f0: 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b  ETHREAD].  <li>[
2400: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
2410: 4c 54 49 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69  LTITHREAD].  <li
2420: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
2430: 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f  SERIALIZED].  </
2440: 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49  ul>..  The [SQLI
2450: 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d  TE_OPEN_NOMUTEX]
2460: 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f   and.  [SQLITE_O
2470: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66  PEN_FULLMUTEX] f
2480: 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  lags to [sqlite3
2490: 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20  _open_v2()] can 
24a0: 61 6c 73 6f 20 62 65 20 75 73 65 64 0a 20 20 74  also be used.  t
24b0: 6f 20 61 64 6a 75 73 74 20 74 68 65 20 5b 74 68  o adjust the [th
24c0: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66  reading mode] of
24d0: 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74   individual [dat
24e0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
24f0: 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65  s].  at run-time
2500: 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 77  ...  Note that w
2510: 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f  hen SQLite is co
2520: 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49  mpiled with SQLI
2530: 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 2c  TE_THREADSAFE=0,
2540: 20 74 68 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d   the code.  to m
2550: 61 6b 65 20 53 51 4c 69 74 65 20 74 68 72 65 61  ake SQLite threa
2560: 64 73 61 66 65 20 69 73 20 6f 6d 69 74 74 65 64  dsafe is omitted
2570: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
2580: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 63 63 75    When this occu
2590: 72 73 2c 0a 20 20 69 74 20 69 73 20 69 6d 70 6f  rs,.  it is impo
25a0: 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65  ssible to change
25b0: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
25c0: 6d 6f 64 65 5d 20 61 74 20 73 74 61 72 74 2d 74  mode] at start-t
25d0: 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e  ime or run-time.
25e0: 0a 0a 20 20 53 65 65 20 74 68 65 20 5b 74 68 72  ..  See the [thr
25f0: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
2600: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
2610: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
2620: 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63  ation.  on aspec
2630: 74 73 20 6f 66 20 75 73 69 6e 67 20 53 51 4c 69  ts of using SQLi
2640: 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  te in a multithr
2650: 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  eaded environmen
2660: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
2670: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d  TION {SQLITE_TEM
2680: 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30  P_STORE=<i>&lt;0
2690: 20 74 68 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f   through 3&gt;</
26a0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
26b0: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  ion controls whe
26c0: 74 68 65 72 20 74 65 6d 70 6f 72 61 72 79 20 66  ther temporary f
26d0: 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  iles are stored 
26e0: 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20  on disk or.  in 
26f0: 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d 65 61  memory.  The mea
2700: 6e 69 6e 67 73 20 66 6f 72 20 76 61 72 69 6f 75  nings for variou
2710: 73 20 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68  s settings of th
2720: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
2730: 20 20 6f 70 74 69 6f 6e 20 61 72 65 20 61 73 20    option are as 
2740: 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62  follows:..  <tab
2750: 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  le cellpadding="
2760: 32 22 20 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20  2" border="1">. 
2770: 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f   <tr><th>SQLITE_
2780: 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c  TEMP_STORE</th><
2790: 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c  th>Meaning</th><
27a0: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
27b0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
27c0: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
27d0: 73 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  se temporary fil
27e0: 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  es</td></tr>.  <
27f0: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
2800: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e  nter">1</td><td>
2810: 55 73 65 20 66 69 6c 65 73 20 62 79 20 64 65 66  Use files by def
2820: 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74  ault but allow t
2830: 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d  he.  [PRAGMA tem
2840: 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64  p_store] command
2850: 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64   to override</td
2860: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
2870: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
2880: 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65  2</td><td>Use me
2890: 6d 6f 72 79 20 62 79 20 64 65 66 61 75 6c 74 20  mory by default 
28a0: 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20  but allow the.  
28b0: 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f  [PRAGMA temp_sto
28c0: 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f  re] command to o
28d0: 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72  verride</td></tr
28e0: 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67  >.  <tr><td alig
28f0: 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64  n="center">3</td
2900: 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20  ><td>Always use 
2910: 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e  memory</td></tr>
2920: 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54  .  </table>..  T
2930: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
2940: 6e 67 20 69 73 20 31 2e 20 20 0a 20 20 41 64 64  ng is 1.  .  Add
2950: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
2960: 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64  ion can be found
2970: 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c   in [tempstore |
2980: 20 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d   tempfiles.html]
2990: 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e  ..}.</tcl>..<a n
29a0: 61 6d 65 3d 22 65 6e 61 62 6c 65 66 65 61 74 75  ame="enablefeatu
29b0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  res"></a>.<h2>1.
29c0: 34 20 4f 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61  4 Options To Ena
29d0: 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f 72  ble Features Nor
29e0: 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 66 66  mally Turned Off
29f0: 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  </h2>..<tcl>.COM
2a00: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
2a10: 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49  ITE_ENABLE_ATOMI
2a20: 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20  C_WRITE} {.  If 
2a30: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
2a40: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
2a50: 69 6e 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a  ined and if the.
2a60: 20 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74    xDeviceCharact
2a70: 65 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20  eristics method 
2a80: 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  of [sqlite3_io_m
2a90: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66  ethods] object f
2aa0: 6f 72 0a 20 20 61 20 64 61 74 61 62 61 73 65 20  or.  a database 
2ab0: 66 69 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69  file reports (vi
2ac0: 61 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51  a one of the [SQ
2ad0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
2ae0: 43 5d 20 62 69 74 73 29 0a 20 20 74 68 61 74 20  C] bits).  that 
2af0: 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73  the filesystem s
2b00: 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77  upports atomic w
2b10: 72 69 74 65 73 20 61 6e 64 20 69 66 20 61 20 74  rites and if a t
2b20: 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76  ransaction.  inv
2b30: 6f 6c 76 65 73 20 61 20 63 68 61 6e 67 65 20 74  olves a change t
2b40: 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  o only a single 
2b50: 70 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61  page of the data
2b60: 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65  base file,.  the
2b70: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
2b80: 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a  n commits with j
2b90: 75 73 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69  ust a single wri
2ba0: 74 65 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20  te request of.  
2bb0: 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66  a single page of
2bc0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
2bd0: 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  d no rollback jo
2be0: 75 72 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64  urnal is created
2bf0: 0a 20 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20  .  or written.  
2c00: 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74  On filesystems t
2c10: 68 61 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d  hat support atom
2c20: 69 63 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a  ic writes, this.
2c30: 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63    optimization c
2c40: 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67  an result in sig
2c50: 6e 69 66 69 63 61 6e 74 20 73 70 65 65 64 20 69  nificant speed i
2c60: 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a  mprovements for.
2c70: 20 20 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e    small updates.
2c80: 20 20 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66    However, few f
2c90: 69 6c 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f  ilesystems suppo
2ca0: 72 74 20 74 68 69 73 20 63 61 70 61 62 69 6c 69  rt this capabili
2cb0: 74 79 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64  ty.  and the cod
2cc0: 65 20 70 61 74 68 73 20 74 68 61 74 20 63 68 65  e paths that che
2cd0: 63 6b 20 66 6f 72 20 74 68 69 73 20 63 61 70 61  ck for this capa
2ce0: 62 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e  bility slow down
2cf0: 20 77 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d   write.  perform
2d00: 61 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20  ance on systems 
2d10: 74 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63  that lack atomic
2d20: 20 77 72 69 74 65 20 63 61 70 61 62 69 6c 69 74   write capabilit
2d30: 79 2c 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61  y, so this.  fea
2d40: 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65 64  ture is disabled
2d50: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a   by default..}..
2d60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
2d70: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
2d80: 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d 20 7b  LUMN_METADATA} {
2d90: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43 2d 70  .  When this C-p
2da0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
2db0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  o is defined, SQ
2dc0: 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 73 6f  Lite includes so
2dd0: 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61 6c 20  me.  additional 
2de0: 41 50 49 73 20 74 68 61 74 20 70 72 6f 76 69 64  APIs that provid
2df0: 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 63 63  e convenient acc
2e00: 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61 74 61  ess to meta-data
2e10: 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65 73 20   about.  tables 
2e20: 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20 54 68  and queries.  Th
2e30: 65 20 41 50 49 73 20 74 68 61 74 20 61 72 65 20  e APIs that are 
2e40: 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20  enabled by this 
2e50: 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c  option are:..  <
2e60: 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  ul>.  <li> [sqli
2e70: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
2e80: 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  ase_name()] </li
2e90: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
2ea0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
2eb0: 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69  e_name16()] </li
2ec0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
2ed0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
2ee0: 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ame()] </li>.  <
2ef0: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
2f00: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
2f10: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
2f20: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
2f30: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29 5d 20  _origin_name()] 
2f40: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
2f50: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
2f60: 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  gin_name16()] </
2f70: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
2f80: 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
2f90: 5f 6d 65 74 61 64 61 74 61 28 29 5d 20 3c 2f 6c  _metadata()] </l
2fa0: 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f  i>.  </ul>.}..CO
2fb0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
2fc0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
2fd0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
2fe0: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
2ff0: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
3000: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
3010: 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   3.  of the full
3020: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
3030: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
3040: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
3050: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
3060: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3070: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50  TE_ENABLE_FTS3_P
3080: 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a 20 20  ARENTHESIS} {.  
3090: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f 64 69  This option modi
30a0: 66 69 65 73 20 74 68 65 20 71 75 65 72 79 20 70  fies the query p
30b0: 61 74 74 65 72 6e 20 70 61 72 73 65 72 20 69 6e  attern parser in
30c0: 20 46 54 53 33 20 73 75 63 68 20 74 68 61 74 20   FTS3 such that 
30d0: 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20 6f 70  it.  supports op
30e0: 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e 64 20  erators AND and 
30f0: 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69 6f 6e  NOT (in addition
3100: 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20 4f 52   to the usual OR
3110: 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61 6e 64   and NEAR).  and
3120: 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71 75 65   also allows que
3130: 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  ry expressions t
3140: 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74 65 64  o contain nested
3150: 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a 7d 0a   parenthesis..}.
3160: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3170: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49  {SQLITE_ENABLE_I
3180: 43 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CU} {.  This opt
3190: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 0a  ion causes the .
31a0: 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 69 63    [http://www.ic
31b0: 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 20 7c  u-project.org/ |
31c0: 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43   International C
31d0: 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20 55 6e  omponents for Un
31e0: 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49 43 55  icode].  or "ICU
31f0: 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 53  " extension to S
3200: 51 4c 69 74 65 20 74 6f 20 62 65 20 61 64 64 65  QLite to be adde
3210: 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 2e 20  d to the build. 
3220: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
3230: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
3240: 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a 20 20  LE_IOTRACE} {.  
3250: 57 68 65 6e 20 62 6f 74 68 20 74 68 65 20 53 51  When both the SQ
3260: 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68  Lite core and th
3270: 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20  e [Command Line 
3280: 49 6e 74 65 72 66 61 63 65 5d 20 28 43 4c 49 29  Interface] (CLI)
3290: 20 61 72 65 20 62 6f 74 68 20 0a 20 20 63 6f 6d   are both .  com
32a0: 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20  piled with this 
32b0: 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65  option, then the
32c0: 20 43 4c 49 20 70 72 6f 76 69 64 65 73 20 61 6e   CLI provides an
32d0: 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64 0a 20   extra command. 
32e0: 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61 63 65   named ".iotrace
32f0: 22 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20  " that provides 
3300: 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67 20  a low-level log 
3310: 6f 66 20 49 2f 4f 20 61 63 74 69 76 69 74 79 2e  of I/O activity.
3320: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
3330: 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61  s experimental a
3340: 6e 64 20 6d 61 79 20 62 65 20 64 69 73 63 6f 6e  nd may be discon
3350: 74 69 6e 75 65 64 20 69 6e 20 61 20 66 75 74 75  tinued in a futu
3360: 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a 43  re release..}..C
3370: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3380: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43  QLITE_ENABLE_LOC
3390: 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a 20 20  KING_STYLE} {.  
33a0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
33b0: 6c 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c  les additional l
33c0: 6f 67 69 63 20 69 6e 20 74 68 65 20 4f 53 20 69  ogic in the OS i
33d0: 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72 20 66  nterface layer f
33e0: 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e 20 54  or.  Mac OS X. T
33f0: 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  he additional lo
3400: 67 69 63 20 61 74 74 65 6d 70 74 73 20 74 6f 20  gic attempts to 
3410: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 79  determine the ty
3420: 70 65 20 6f 66 20 74 68 65 0a 20 20 75 6e 64 65  pe of the.  unde
3430: 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65  rlying filesyste
3440: 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20 61 6e 64  m and choose and
3450: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 63   alternative loc
3460: 6b 69 6e 67 20 73 74 72 61 74 65 67 79 0a 20 20  king strategy.  
3470: 74 68 61 74 20 77 6f 72 6b 73 20 63 6f 72 72 65  that works corre
3480: 63 74 6c 79 20 66 6f 72 20 74 68 61 74 20 66 69  ctly for that fi
3490: 6c 65 73 79 73 74 65 6d 20 74 79 70 65 2e 20 46  lesystem type. F
34a0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
34b0: 74 65 67 69 65 73 20 0a 20 20 61 72 65 20 61 76  tegies .  are av
34c0: 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c 3e  ailable:..  <ul>
34d0: 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49 58 20  .    <li> POSIX 
34e0: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
34f0: 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75  his is the defau
3500: 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  lt locking style
3510: 20 61 6e 64 20 74 68 65 0a 20 20 20 20 20 20 20   and the.       
3520: 20 20 73 74 79 6c 65 20 75 73 65 64 20 62 79 20    style used by 
3530: 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63 20 4f  other (non Mac O
3540: 53 20 58 29 20 55 6e 69 78 65 73 2e 20 4c 6f 63  S X) Unixes. Loc
3550: 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20  ks are obtained 
3560: 61 6e 64 20 0a 20 20 20 20 20 20 20 20 20 72 65  and .         re
3570: 6c 65 61 73 65 64 20 75 73 69 6e 67 20 74 68 65  leased using the
3580: 20 66 63 6e 74 6c 28 29 20 73 79 73 74 65 6d 20   fcntl() system 
3590: 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  call...    <li> 
35a0: 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  AFP locking styl
35b0: 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20  e. This locking 
35c0: 73 74 79 6c 65 20 69 73 20 75 73 65 64 20 66 6f  style is used fo
35d0: 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 20 0a  r network file .
35e0: 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 73           systems
35f0: 20 74 68 61 74 20 75 73 65 20 74 68 65 20 41 46   that use the AF
3600: 50 20 28 41 70 70 6c 65 20 46 69 6c 69 6e 67 20  P (Apple Filing 
3610: 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74 6f 63  Protocol) protoc
3620: 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20 20 20  ol. Locks.      
3630: 20 20 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20     are obtained 
3640: 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 6c  by calling the l
3650: 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
3660: 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b 28 29 2e  _AFPFSSetLock().
3670: 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b  ..    <li> Flock
3680: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
3690: 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72  This is used for
36a0: 20 66 69 6c 65 2d 73 79 73 74 65 6d 73 20 74 68   file-systems th
36b0: 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20 20 20  at do not.      
36c0: 20 20 20 73 75 70 70 6f 72 74 20 50 4f 53 49 58     support POSIX
36d0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
36e0: 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e  Locks are obtain
36f0: 65 64 20 61 6e 64 20 72 65 6c 65 61 73 65 64 20  ed and released 
3700: 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20 20 74  using.         t
3710: 68 65 20 66 6c 6f 63 6b 28 29 20 73 79 73 74 65  he flock() syste
3720: 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69  m call...    <li
3730: 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 69  > Dot-file locki
3740: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
3750: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
3760: 75 73 65 64 20 77 68 65 6e 20 6e 65 69 74 68 65  used when neithe
3770: 72 0a 20 20 20 20 20 20 20 20 20 66 6c 6f 63 6b  r.         flock
3780: 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63 6b 69   nor POSIX locki
3790: 6e 67 20 73 74 79 6c 65 73 20 61 72 65 20 73 75  ng styles are su
37a0: 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 66  pported by the f
37b0: 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20 20 20  ile system..    
37c0: 20 20 20 20 20 44 61 74 61 62 61 73 65 20 6c 6f       Database lo
37d0: 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64  cks are obtained
37e0: 20 62 79 20 63 72 65 61 74 69 6e 67 20 61 6e 64   by creating and
37f0: 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 66 69   entry in the fi
3800: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20 20 20 20  le-system.      
3810: 20 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f     at a well-kno
3820: 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65 6c 61  wn location rela
3830: 74 69 76 65 20 74 6f 20 74 68 65 20 64 61 74 61  tive to the data
3840: 62 61 73 65 20 66 69 6c 65 20 28 61 20 22 64 6f  base file (a "do
3850: 74 2d 66 69 6c 65 22 29 0a 20 20 20 20 20 20 20  t-file").       
3860: 20 20 61 6e 64 20 72 65 6c 69 6e 71 75 69 73 68    and relinquish
3870: 65 64 20 62 79 20 64 65 6c 65 74 69 6e 67 20 74  ed by deleting t
3880: 68 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a 0a 20  he same file... 
3890: 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69     <li> No locki
38a0: 6e 67 20 73 74 79 6c 65 2e 20 49 66 20 6e 6f 6e  ng style. If non
38b0: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 63  e of the above c
38c0: 61 6e 20 62 65 20 73 75 70 70 6f 72 74 65 64 2c  an be supported,
38d0: 20 74 68 69 73 20 0a 20 20 20 20 20 20 20 20 20   this .         
38e0: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73  locking style is
38f0: 20 75 73 65 64 2e 20 4e 6f 20 64 61 74 61 62 61   used. No databa
3900: 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63 68 61  se locking mecha
3910: 6e 69 73 6d 20 69 73 20 75 73 65 64 2e 20 57 68  nism is used. Wh
3920: 65 6e 0a 20 20 20 20 20 20 20 20 20 74 68 69 73  en.         this
3930: 20 73 79 73 74 65 6d 20 69 73 20 75 73 65 64 20   system is used 
3940: 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20 66  it is not safe f
3950: 6f 72 20 61 20 73 69 6e 67 6c 65 20 64 61 74 61  or a single data
3960: 62 61 73 65 20 74 6f 20 62 65 0a 20 20 20 20 20  base to be.     
3970: 20 20 20 20 61 63 63 65 73 73 65 64 20 62 79 20      accessed by 
3980: 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e 74 73  multiple clients
3990: 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64  ..  </ul>..  Add
39a0: 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76 65 20  itionally, five 
39b0: 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d  extra VFS implem
39c0: 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 70 72  entations are pr
39d0: 6f 76 69 64 65 64 20 61 73 20 77 65 6c 6c 20 61  ovided as well a
39e0: 73 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74 2e  s the.  default.
39f0: 20 42 79 20 73 70 65 63 69 66 79 69 6e 67 20 6f   By specifying o
3a00: 6e 65 20 6f 66 20 74 68 65 20 65 78 74 72 61 20  ne of the extra 
3a10: 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
3a20: 6f 6e 73 20 0a 20 20 77 68 65 6e 20 63 61 6c 6c  ons .  when call
3a30: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  ing [sqlite3_ope
3a40: 6e 5f 76 32 28 29 5d 2c 20 61 6e 20 61 70 70 6c  n_v2()], an appl
3a50: 69 63 61 74 69 6f 6e 20 6d 61 79 20 62 79 70 61  ication may bypa
3a60: 73 73 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74  ss the file-syst
3a70: 65 6d 0a 20 20 64 65 74 65 63 74 69 6f 6e 20 6c  em.  detection l
3a80: 6f 67 69 63 20 61 6e 64 20 65 78 70 6c 69 63 69  ogic and explici
3a90: 74 6c 79 20 73 65 6c 65 63 74 20 6f 6e 65 20 6f  tly select one o
3aa0: 66 20 74 68 65 20 61 62 6f 76 65 20 6c 6f 63 6b  f the above lock
3ab0: 69 6e 67 20 73 74 79 6c 65 73 2e 20 54 68 65 0a  ing styles. The.
3ac0: 20 20 66 69 76 65 20 65 78 74 72 61 20 56 46 53    five extra VFS
3ad0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
3ae0: 20 61 72 65 20 63 61 6c 6c 65 64 20 22 75 6e 69   are called "uni
3af0: 78 2d 70 6f 73 69 78 22 2c 20 22 75 6e 69 78 2d  x-posix", "unix-
3b00: 61 66 70 22 2c 0a 20 20 22 75 6e 69 78 2d 66 6c  afp",.  "unix-fl
3b10: 6f 63 6b 22 2c 20 22 75 6e 69 78 2d 64 6f 74 66  ock", "unix-dotf
3b20: 69 6c 65 22 20 61 6e 64 20 22 75 6e 69 78 2d 6e  ile" and "unix-n
3b30: 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  one"..}..COMPILE
3b40: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3b50: 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41  ENABLE_MEMORY_MA
3b60: 4e 41 47 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68  NAGEMENT} {.  Th
3b70: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 65  is option adds e
3b80: 78 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53 51  xtra logic to SQ
3b90: 4c 69 74 65 20 74 68 61 74 20 61 6c 6c 6f 77 73  Lite that allows
3ba0: 20 69 74 20 74 6f 20 72 65 6c 65 61 73 65 20 75   it to release u
3bb0: 6e 75 73 65 64 0a 20 20 6d 65 6d 6f 72 79 20 75  nused.  memory u
3bc0: 70 6f 6e 20 72 65 71 75 65 73 74 2e 20 20 54 68  pon request.  Th
3bd0: 69 73 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62  is option must b
3be0: 65 20 65 6e 61 62 6c 65 64 20 69 6e 20 6f 72 64  e enabled in ord
3bf0: 65 72 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71  er for the.  [sq
3c00: 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
3c10: 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63  mory()] interfac
3c20: 65 20 74 6f 20 77 6f 72 6b 2e 20 20 49 66 20 74  e to work.  If t
3c30: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
3c40: 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74  .  option is not
3c50: 20 75 73 65 64 2c 20 74 68 65 20 5b 73 71 6c 69   used, the [sqli
3c60: 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
3c70: 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ry()] interface 
3c80: 69 73 20 61 20 0a 20 20 6e 6f 2d 6f 70 2e 20 20  is a .  no-op.  
3c90: 53 69 6e 63 65 20 5b 73 71 6c 69 74 65 33 5f 73  Since [sqlite3_s
3ca0: 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28 29  oft_heap_limit()
3cb0: 5d 20 64 65 70 65 6e 64 73 20 6f 6e 0a 20 20 5b  ] depends on.  [
3cc0: 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
3cd0: 6d 65 6d 6f 72 79 28 29 5d 2c 20 74 68 69 73 20  memory()], this 
3ce0: 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 6e  option is also n
3cf0: 65 63 65 73 73 61 72 79 20 66 6f 72 0a 20 20 74  ecessary for.  t
3d00: 68 65 20 63 6f 72 72 65 63 74 20 6f 70 65 72 61  he correct opera
3d10: 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69 74 65 33  tion of [sqlite3
3d20: 5f 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74  _soft_heap_limit
3d30: 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ()]..}..COMPILE_
3d40: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
3d50: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b  NABLE_MEMSYS3} {
3d60: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
3d70: 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20  ncludes code in 
3d80: 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c  SQLite that impl
3d90: 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e  ements an altern
3da0: 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61  ative.  memory a
3db0: 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20  llocator.  This 
3dc0: 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f  alternative memo
3dd0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ry allocator is 
3de0: 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77  only engaged.  w
3df0: 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  hen the [SQLITE_
3e00: 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74  CONFIG_HEAP] opt
3e10: 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ion to [sqlite3_
3e20: 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65  config()] is use
3e30: 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20  d to.  supply a 
3e40: 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d  large chunk of m
3e50: 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68  emory from which
3e60: 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
3e70: 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61  cations are.  ta
3e80: 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59  ken..  The MEMSY
3e90: 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  S3 memory alloca
3ea0: 74 6f 72 20 75 73 65 73 20 61 20 68 79 62 72 69  tor uses a hybri
3eb0: 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67  d allocation alg
3ec0: 6f 72 69 74 68 6d 20 0a 20 20 70 61 74 74 65 72  orithm .  patter
3ed0: 6e 65 64 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c  ned after dlmall
3ee0: 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65  oc().   Only one
3ef0: 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   of SQLITE_ENABL
3f00: 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a 20  E_MEMSYS3 and . 
3f10: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
3f20: 45 4d 53 59 53 35 20 6d 61 79 20 62 65 20 65 6e  EMSYS5 may be en
3f30: 61 62 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d  abled at once..}
3f40: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
3f50: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
3f60: 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68 69  MEMSYS5} {.  Thi
3f70: 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65  s option include
3f80: 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65  s code in SQLite
3f90: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
3fa0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
3fb0: 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    memory allocat
3fc0: 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e  or.  This altern
3fd0: 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  ative memory all
3fe0: 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65  ocator is only e
3ff0: 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68  ngaged.  when th
4000: 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  e [SQLITE_CONFIG
4010: 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f  _HEAP] option to
4020: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
4030: 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20  ()] is used to. 
4040: 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20   supply a large 
4050: 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20  chunk of memory 
4060: 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d  from which all m
4070: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
4080: 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20  s are.  taken.. 
4090: 20 54 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64   The MEMSYS5 mod
40a0: 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61  ule rounds all a
40b0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70 20 74 6f  llocations up to
40c0: 20 74 68 65 20 6e 65 78 74 20 70 6f 77 65 72 0a   the next power.
40d0: 20 20 6f 66 20 74 77 6f 20 61 6e 64 20 75 73 65    of two and use
40e0: 73 20 61 20 66 69 72 73 74 2d 66 69 74 2c 20 62  s a first-fit, b
40f0: 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61  uddy-allocator a
4100: 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68 61 74 20  lgorithm.  that 
4110: 70 72 6f 76 69 64 65 73 20 73 74 72 6f 6e 67 20  provides strong 
4120: 67 75 61 72 61 6e 74 65 65 73 20 61 67 61 69 6e  guarantees again
4130: 73 74 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e  st fragmentation
4140: 20 61 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20   and breakdown. 
4150: 20 73 75 62 6a 65 63 74 20 74 6f 20 63 65 72 74   subject to cert
4160: 61 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 63 6f  ain operating co
4170: 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f  nstraints..}..CO
4180: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4190: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45  LITE_ENABLE_RTRE
41a0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
41b0: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
41c0: 20 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70   to include supp
41d0: 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72  ort for the.  [r
41e0: 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e  tree | R*Tree in
41f0: 64 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a  dex extension]..
4200: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4210: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
4220: 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54 68 69 73  _STAT2} {.  This
4230: 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64   option adds add
4240: 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f  itional logic to
4250: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
4260: 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20  ommand and to.  
4270: 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
4280: 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c  er] that can hel
4290: 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73  p SQLite to chos
42a0: 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79  e a better query
42b0: 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65   plan.  under ce
42c0: 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73  rtain situations
42d0: 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  .  The [ANALYZE]
42e0: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61   command is enha
42f0: 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  nced to collect.
4300: 20 20 61 20 31 30 2d 73 61 6d 70 6c 65 20 68 69    a 10-sample hi
4310: 73 74 6f 67 72 61 6d 20 6f 66 20 74 68 65 20 64  stogram of the d
4320: 61 74 61 20 69 6e 20 65 61 63 68 20 69 6e 64 65  ata in each inde
4330: 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74  x and store that
4340: 20 68 69 73 74 6f 67 72 61 6d 0a 20 20 69 6e 20   histogram.  in 
4350: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74  the <b>sqlite_st
4360: 61 74 32 3c 2f 62 3e 20 74 61 62 6c 65 2e 20 20  at2</b> table.  
4370: 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65  The query planne
4380: 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20  r will then use 
4390: 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20  the.  histogram 
43a0: 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20  data to help it 
43b0: 65 73 74 69 6d 61 74 65 20 68 6f 77 20 6d 61 6e  estimate how man
43c0: 79 20 72 6f 77 73 20 77 69 6c 6c 20 62 65 20 73  y rows will be s
43d0: 65 6c 65 63 74 65 64 20 62 79 20 61 0a 20 20 3c  elected by a.  <
43e0: 61 20 68 72 65 66 3d 22 6f 70 74 6f 76 65 72 76  a href="optoverv
43f0: 69 65 77 2e 68 74 6d 6c 23 72 61 6e 67 65 71 75  iew.html#rangequ
4400: 65 72 79 22 3e 72 61 6e 67 65 20 63 6f 6e 73 74  ery">range const
4410: 72 61 69 6e 74 3c 2f 61 3e 20 69 6e 20 61 20 57  raint</a> in a W
4420: 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a  HERE clause..}..
4430: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4440: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50  SQLITE_ENABLE_UP
4450: 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49  DATE_DELETE_LIMI
4460: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
4470: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70  on enables an op
4480: 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20  tional ORDER BY 
4490: 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  and LIMIT clause
44a0: 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20   on .  [UPDATE] 
44b0: 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61  and [DELETE] sta
44c0: 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49  tements...  <p>I
44d0: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
44e0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69   defined, then i
44f0: 74 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a  t must also be .
4500: 20 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75    defined when u
4510: 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27  sing the 'lemon'
4520: 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74   tool to generat
4530: 65 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69  e a parse.c.  fi
4540: 6c 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74  le. Because of t
4550: 68 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  his, this option
4560: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
4570: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
4580: 72 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72  ry is built.  fr
4590: 6f 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66  om source, not f
45a0: 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d  rom the [amalgam
45b0: 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74  ation] or from t
45c0: 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66  he collection of
45d0: 0a 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20  .  pre-packaged 
45e0: 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64  C files provided
45f0: 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69   for non-Unix li
4600: 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20  ke platforms on 
4610: 74 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c  the website..  <
4620: 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  /p>.}..COMPILE_O
4630: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
4640: 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49  ABLE_UNLOCK_NOTI
4650: 46 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  FY} {.  This opt
4660: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
4670: 5b 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f  [sqlite3_unlock_
4680: 6e 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66  notify()] interf
4690: 61 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73  ace and.  its as
46a0: 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f  sociated functio
46b0: 6e 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65  nality.  See the
46c0: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74   documentation t
46d0: 69 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74  itled.  [Using t
46e0: 68 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b  he SQLite Unlock
46f0: 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65   Notification Fe
4700: 61 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74  ature] for addit
4710: 69 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74  ional.  informat
4720: 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ion..}..COMPILE_
4730: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53  OPTION {SQLITE_S
4740: 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73  OUNDEX} {.  This
4750: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
4760: 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53  the [soundex() S
4770: 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a  QL function]..}.
4780: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4790: 7b 59 59 54 52 41 43 4b 4d 41 58 53 54 41 43 4b  {YYTRACKMAXSTACK
47a0: 44 45 50 54 48 7d 20 7b 0a 20 20 54 68 69 73 20  DEPTH} {.  This 
47b0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
47c0: 65 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72  e LALR(1) parser
47d0: 20 73 74 61 63 6b 20 64 65 70 74 68 20 74 6f 20   stack depth to 
47e0: 62 65 20 74 72 61 63 6b 65 64 0a 20 20 61 6e 64  be tracked.  and
47f0: 20 72 65 70 6f 72 74 65 64 20 75 73 69 6e 67 20   reported using 
4800: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 61  the [sqlite3_sta
4810: 74 75 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41  tus]([SQLITE_STA
4820: 54 55 53 5f 50 41 52 53 45 52 5f 53 54 41 43 4b  TUS_PARSER_STACK
4830: 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61  ],...).  interfa
4840: 63 65 2e 20 20 53 51 4c 69 74 65 27 73 20 4c 41  ce.  SQLite's LA
4850: 4c 52 28 31 29 20 70 61 72 73 65 72 20 68 61 73  LR(1) parser has
4860: 20 61 20 66 69 78 65 64 20 73 74 61 63 6b 20 64   a fixed stack d
4870: 65 70 74 68 0a 20 20 28 64 65 74 65 72 6d 69 6e  epth.  (determin
4880: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
4890: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 59 59  me using the [YY
48a0: 53 54 41 43 4b 44 45 50 54 48 5d 20 6f 70 74 69  STACKDEPTH] opti
48b0: 6f 6e 73 29 2e 0a 20 20 54 68 69 73 20 6f 70 74  ons)..  This opt
48c0: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
48d0: 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e  to help determin
48e0: 65 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74  e if an applicat
48f0: 69 6f 6e 20 69 73 0a 20 20 67 65 74 74 69 6e 67  ion is.  getting
4900: 20 63 6c 6f 73 65 20 74 6f 20 65 78 63 65 65 64   close to exceed
4910: 69 6e 67 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ing the maximum 
4920: 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 64 65  LALR(1) stack de
4930: 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  pth..}.</tcl>..<
4940: 61 20 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65 66  a name="disablef
4950: 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68  eatures"></a>.<h
4960: 32 3e 31 2e 35 20 4f 70 74 69 6f 6e 73 20 54 6f  2>1.5 Options To
4970: 20 44 69 73 61 62 6c 65 20 46 65 61 74 75 72 65   Disable Feature
4980: 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65  s Normally Turne
4990: 64 20 4f 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  d On</h2>..<tcl>
49a0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
49b0: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
49c0: 4c 46 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  LFS} {.  If this
49d0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
49e0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
49f0: 2c 20 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70  , large file sup
4a00: 70 6f 72 74 0a 20 20 69 73 20 64 69 73 61 62 6c  port.  is disabl
4a10: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
4a20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
4a30: 53 41 42 4c 45 5f 44 49 52 53 59 4e 43 7d 20 7b  SABLE_DIRSYNC} {
4a40: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
4a50: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
4a60: 69 73 20 64 65 66 69 6e 65 64 2c 20 64 69 72 65  is defined, dire
4a70: 63 74 6f 72 79 20 73 79 6e 63 73 0a 20 20 61 72  ctory syncs.  ar
4a80: 65 20 64 69 73 61 62 6c 65 64 2e 20 20 53 51 4c  e disabled.  SQL
4a90: 69 74 65 20 74 79 70 69 63 61 6c 6c 79 20 61 74  ite typically at
4aa0: 74 65 6d 70 74 73 20 74 6f 20 73 79 6e 63 20 74  tempts to sync t
4ab0: 68 65 20 70 61 72 65 6e 74 0a 20 20 64 69 72 65  he parent.  dire
4ac0: 63 74 6f 72 79 20 77 68 65 6e 20 61 20 66 69 6c  ctory when a fil
4ad0: 65 20 69 73 20 64 65 6c 65 74 65 64 20 74 6f 20  e is deleted to 
4ae0: 65 6e 73 75 72 65 20 74 68 65 20 64 69 72 65 63  ensure the direc
4af0: 74 6f 72 79 0a 20 20 65 6e 74 72 69 65 73 20 61  tory.  entries a
4b00: 72 65 20 75 70 64 61 74 65 64 20 69 6d 6d 65 64  re updated immed
4b10: 69 61 74 65 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a  iately on disk..
4b20: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a  }.</tcl>..<tcl>.
4b30: 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f    hd_fragment "o
4b40: 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20 20 68  mitfeatures".  h
4b50: 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74  d_keywords "omit
4b60: 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e  features".</tcl>
4b70: 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73  .<h2>1.6 Options
4b80: 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65   To Omit Feature
4b90: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66  s</h2>..<p>The f
4ba0: 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73  ollowing options
4bb0: 20 63 61 6e 20 75 73 65 64 20 74 6f 20 72 65 64   can used to red
4bc0: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
4bd0: 74 68 65 20 63 6f 6d 70 69 6c 65 64 0a 6c 69 62  the compiled.lib
4be0: 72 61 72 79 20 62 79 20 6f 6d 69 74 74 69 6e 67  rary by omitting
4bf0: 20 6f 70 74 69 6f 6e 61 6c 20 66 65 61 74 75 72   optional featur
4c00: 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62  es. This is prob
4c10: 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c  ably only useful
4c20: 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73  .in embedded sys
4c30: 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65  tems where space
4c40: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74   is especially t
4c50: 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69  ight, as even wi
4c60: 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20  th all.features 
4c70: 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c  included the SQL
4c80: 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72  ite library is r
4c90: 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e  elatively small.
4ca0: 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f   Don't forget.to
4cb0: 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69   tell your compi
4cc0: 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  ler to optimize 
4cd0: 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21  for binary size!
4ce0: 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e   (the -Os option
4cf0: 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20   if.using GCC). 
4d00: 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f   Telling your co
4d10: 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69  mpiler to optimi
4d20: 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61  ze for size usua
4d30: 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c  lly has.a much l
4d40: 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20  arger impact on 
4d50: 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e  library footprin
4d60: 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67  t than employing
4d70: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f   any of these.co
4d80: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
4d90: 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20  ns.  You should 
4da0: 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74  also verify that
4db0: 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75   .<a href="#debu
4dc0: 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67  goptions">debugg
4dd0: 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20  ing options</a> 
4de0: 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70  are disabled.</p
4df0: 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73  >..<p>The macros
4e00: 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e   in this section
4e10: 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20   do not require 
4e20: 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c  values. The foll
4e30: 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69  owing .compilati
4e40: 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20  on switches all 
4e50: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66  have the same ef
4e60: 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49  fect:<br>.-DSQLI
4e70: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
4e80: 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  LE<br>.-DSQLITE_
4e90: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
4ea0: 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  1<br>.-DSQLITE_O
4eb0: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30  MIT_ALTERTABLE=0
4ec0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79  .</p>..<p>If any
4ed0: 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e   of these option
4ee0: 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74  s are defined, t
4ef0: 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74  hen the same set
4f00: 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f   of SQLITE_OMIT_
4f10: 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61  *.options must a
4f20: 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77  lso be defined w
4f30: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c  hen using the 'l
4f40: 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65  emon' tool to ge
4f50: 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65  nerate the.parse
4f60: 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e  .c file and when
4f70: 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27   compiling the '
4f80: 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74  mkkeywordhash' t
4f90: 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61  ool which genera
4fa0: 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64  tes .the keyword
4fb0: 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63  hash.h file..Bec
4fc0: 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68  ause of this, th
4fd0: 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ese options may 
4fe0: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
4ff0: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
5000: 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f   built.from cano
5010: 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f  nical source, no
5020: 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c  t from the [amal
5030: 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f  gamation] or fro
5040: 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  m the collection
5050: 20 6f 66 0a 70 72 65 2d 70 61 63 6b 61 67 65 64   of.pre-packaged
5060: 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65   C files provide
5070: 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c  d for non-Unix l
5080: 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e  ike platforms on
5090: 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 41 6e   the website..An
50a0: 79 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  y SQLITE_OMIT_* 
50b0: 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 63 61  options which ca
50c0: 6e 20 62 65 20 75 73 65 64 20 64 69 72 65 63 74  n be used direct
50d0: 6c 79 20 77 69 74 68 20 74 68 65 20 5b 61 6d 61  ly with the [ama
50e0: 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a 61 72 65 20  lgamation] .are 
50f0: 6c 69 73 74 65 64 20 62 65 6c 6f 77 2c 20 68 6f  listed below, ho
5100: 77 65 76 65 72 2c 20 74 68 65 20 77 61 72 6e 69  wever, the warni
5110: 6e 67 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  ngs in the follo
5120: 77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20 73  wing paragraph s
5130: 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65 64 2e 0a  hould be noted..
5140: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
5150: 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61  e>.<i><b>Importa
5160: 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65  nt Note:</b> The
5170: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
5180: 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 77 6f  ptions do not wo
5190: 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61  rk with the.[ama
51a0: 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 77 69  lgamation] or wi
51b0: 74 68 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20  th pre-packaged 
51c0: 43 20 63 6f 64 65 20 66 69 6c 65 73 2e 20 20 53  C code files.  S
51d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d  QLITE_OMIT_* com
51e0: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
51f0: 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 63 6f 72 72  s only work corr
5200: 65 63 74 6c 79 20 77 68 65 6e 20 53 51 4c 69 74  ectly when SQLit
5210: 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d 20  e is built from 
5220: 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65  canonical source
5230: 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f 62   files..</i>.</b
5240: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70 3e  lockquote>...<p>
5250: 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e 73  Special versions
5260: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 61   of the SQLite a
5270: 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61 74  malgamation that
5280: 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61 0a   do work with a.
5290: 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73 65  predetermined se
52a0: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
52b0: 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62  _* options can b
52c0: 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54 6f  e generated.  To
52d0: 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20 63   do so,.make a c
52e0: 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65 66  opy of the Makef
52f0: 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d 61  ile.linux-gcc ma
5300: 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65 20  kefile template 
5310: 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c  in the canonical
5320: 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69 73  .source code dis
5330: 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61 6e  tribution.  Chan
5340: 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79  ge the name of y
5350: 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d 70  our copy to simp
5360: 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a 54  ly "Makefile"..T
5370: 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66 69  hen edit "Makefi
5380: 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20 61 70  le" to set up ap
5390: 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69 6c  propriate compil
53a0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20  e-time options. 
53b0: 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62 6c 6f   Then.type:.<blo
53c0: 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61 6b 65  ckquote><tt>make
53d0: 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c   clean; make sql
53e0: 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62 6c 6f  ite3.c</tt></blo
53f0: 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72 65 73  ckquote>.The res
5400: 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33 2e  ulting "sqlite3.
5410: 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  c" amalgamation 
5420: 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20 69  code file (and i
5430: 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68 65  ts associated.he
5440: 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69 74  ader file "sqlit
5450: 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e 20  e3.h") can then 
5460: 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 6f  be moved to a no
5470: 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d 0a  n-unix platform.
5480: 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69 6c  for final compil
5490: 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e 61  ation using a na
54a0: 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c 2f  tive compiler.</
54b0: 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f 66 20 74 68  p>..<p>All of th
54c0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
54d0: 6f 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75  options are unsu
54e0: 70 70 6f 72 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 62  pported.</p>..<b
54f0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62  lockquote>.<i><b
5500: 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a  >Important Note:
5510: 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f  </b>.The SQLITE_
5520: 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74  OMIT_* compile-t
5530: 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ime options are 
5540: 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69  unsupported..</i
5550: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
5560: 3c 70 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f  <p>.The SQLITE_O
5570: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
5580: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75  me options are u
5590: 73 75 61 6c 6c 79 20 75 6e 74 65 73 74 65 64 20  sually untested 
55a0: 61 6e 64 0a 61 72 65 20 61 6c 6d 6f 73 74 20 63  and.are almost c
55b0: 65 72 74 61 69 6e 6c 79 20 75 6e 74 65 73 74 65  ertainly unteste
55c0: 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  d in combination
55d0: 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c 20 6f 66 20  ..Any or all of 
55e0: 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61  these options ma
55f0: 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f  y be removed fro
5600: 6d 20 74 68 65 20 63 6f 64 65 20 69 6e 20 66 75  m the code in fu
5610: 74 75 72 65 20 72 65 6c 65 61 73 65 73 0a 61 6e  ture releases.an
5620: 64 20 77 69 74 68 6f 75 74 20 77 61 72 6e 69 6e  d without warnin
5630: 67 2e 20 20 46 6f 72 20 61 6e 79 20 70 61 72 74  g.  For any part
5640: 69 63 75 6c 61 72 20 72 65 6c 65 61 73 65 2c 20  icular release, 
5650: 73 6f 6d 65 20 6f 66 20 74 68 65 73 65 0a 6f 70  some of these.op
5660: 74 69 6f 6e 73 20 6d 61 79 20 63 61 75 73 65 20  tions may cause 
5670: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20  compile-time or 
5680: 72 75 6e 2d 74 69 6d 65 20 66 61 69 6c 75 72 65  run-time failure
5690: 73 2c 20 70 61 72 74 69 63 75 6c 61 72 6c 79 0a  s, particularly.
56a0: 77 68 65 6e 20 75 73 65 64 20 69 6e 20 63 6f 6d  when used in com
56b0: 62 69 6e 61 74 69 6f 6e 20 77 69 74 68 20 6f 74  bination with ot
56c0: 68 65 72 20 6f 70 74 69 6f 6e 73 2e 3c 2f 70 3e  her options.</p>
56d0: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
56e0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
56f0: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20  MIT_ALTERTABLE} 
5700: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
5710: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
5720: 20 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54   the .  [ALTER T
5730: 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  ABLE] command is
5740: 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e   not included in
5750: 20 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e   the .  library.
5760: 20 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41   Executing an [A
5770: 4c 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74  LTER TABLE] stat
5780: 65 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20 70  ement causes a p
5790: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
57a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
57b0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59  QLITE_OMIT_ANALY
57c0: 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  ZE} {.  When thi
57d0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
57e0: 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a  ned, the [ANALYZ
57f0: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d  E] command is om
5800: 69 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65  itted from.  the
5810: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
5820: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5830: 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b  E_OMIT_ATTACH} {
5840: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
5850: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
5860: 74 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64  the [ATTACH] and
5870: 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e   [DETACH] comman
5880: 64 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64  ds are.  omitted
5890: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
58a0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
58b0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
58c0: 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b  AUTHORIZATION} {
58d0: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
58e0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
58f0: 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20  e authorization 
5900: 63 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65  callback feature
5910: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
5920: 61 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65  ary. The [sqlite
5930: 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
5940: 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  ()] API function
5950: 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a   is not present.
5960: 20 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79    in the library
5970: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5980: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
5990: 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20  _AUTOINCREMENT} 
59a0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
59b0: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
59c0: 74 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52  the .  [AUTOINCR
59d0: 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61  EMENT] functiona
59e0: 6c 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73 20  lity. When this 
59f0: 0a 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64  .  is macro is d
5a00: 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20  efined, columns 
5a10: 64 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22  declared as .  "
5a20: 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
5a30: 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d   KEY] AUTOINCREM
5a40: 45 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e  ENT".  behave in
5a50: 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 61 73   the same way as
5a60: 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65   columns declare
5a70: 64 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50  d as "[INTEGER P
5a80: 52 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65  RIMARY KEY]" whe
5a90: 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69  n a .  NULL is i
5aa0: 6e 73 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c  nserted. The sql
5ab0: 69 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73  ite_sequence sys
5ac0: 74 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69  tem table is nei
5ad0: 74 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f  ther created, no
5ae0: 72 0a 20 20 72 65 73 70 65 63 74 65 64 20 69 66  r.  respected if
5af0: 20 69 74 20 61 6c 72 65 61 64 79 20 65 78 69 73   it already exis
5b00: 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ts..}..COMPILE_O
5b10: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
5b20: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
5b30: 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  EX} {.  This opt
5b40: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
5b50: 6d 69 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f  mit the .  [auto
5b60: 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20  matic indexing] 
5b70: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 7d  functionality..}
5b80: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5b90: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
5ba0: 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20  TOINIT} {.  For 
5bb0: 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74  backwards compat
5bc0: 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f 6c 64  ibility with old
5bd0: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
5be0: 51 4c 69 74 65 20 74 68 61 74 20 6c 61 63 6b 0a  QLite that lack.
5bf0: 20 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69    the [sqlite3_i
5c00: 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74  nitialize()] int
5c10: 65 72 66 61 63 65 2c 20 74 68 65 20 5b 73 71 6c  erface, the [sql
5c20: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
5c30: 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 20 20 69  )] interface.  i
5c40: 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74  s called automat
5c50: 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72  ically upon entr
5c60: 79 20 74 6f 20 63 65 72 74 61 69 6e 20 6b 65 79  y to certain key
5c70: 20 69 6e 74 65 72 66 61 63 65 73 20 73 75 63 68   interfaces such
5c80: 20 61 73 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f   as.  [sqlite3_o
5c90: 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
5ca0: 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
5cb0: 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d  , and [sqlite3_m
5cc0: 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65  printf()]..  The
5cd0: 20 6f 76 65 72 68 65 61 64 20 6f 66 20 69 6e 76   overhead of inv
5ce0: 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69  oking [sqlite3_i
5cf0: 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 61 75 74  nitialize()] aut
5d00: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68  omatically in th
5d10: 69 73 0a 20 20 77 61 79 20 6d 61 79 20 62 65 20  is.  way may be 
5d20: 6f 6d 69 74 74 65 64 20 62 79 20 62 75 69 6c 64  omitted by build
5d30: 69 6e 67 20 53 51 4c 69 74 65 20 77 69 74 68 20  ing SQLite with 
5d40: 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  the SQLITE_OMIT_
5d50: 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65  AUTOINIT.  C-pre
5d60: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e  processor macro.
5d70: 20 20 57 68 65 6e 20 62 75 69 6c 74 20 75 73 69    When built usi
5d80: 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  ng SQLITE_OMIT_A
5d90: 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a  UTOINIT, SQLite.
5da0: 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d    will not autom
5db0: 61 74 69 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c  atically initial
5dc0: 69 7a 65 20 69 74 73 65 6c 66 20 61 6e 64 20 74  ize itself and t
5dd0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  he application i
5de0: 73 20 72 65 71 75 69 72 65 64 0a 20 20 74 6f 20  s required.  to 
5df0: 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f  invoke [sqlite3_
5e00: 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 64 69  initialize()] di
5e10: 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20  rectly prior to 
5e20: 62 65 67 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66  beginning use of
5e30: 20 74 68 65 0a 20 20 53 51 4c 69 74 65 20 6c 69   the.  SQLite li
5e40: 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  brary..}..COMPIL
5e50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
5e60: 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d  _OMIT_AUTOVACUUM
5e70: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
5e80: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
5e90: 20 74 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e   the library can
5ea0: 6e 6f 74 20 63 72 65 61 74 65 20 6f 72 20 77 72  not create or wr
5eb0: 69 74 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61  ite to .  databa
5ec0: 73 65 73 20 74 68 61 74 20 73 75 70 70 6f 72 74  ses that support
5ed0: 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a   [auto_vacuum]..
5ee0: 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50    Executing a [P
5ef0: 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75  RAGMA auto_vacuu
5f00: 6d 5d 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  m] statement is 
5f10: 6e 6f 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28  not an error.  (
5f20: 73 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52  since unknown PR
5f30: 41 47 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74  AGMAs are silent
5f40: 6c 79 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74  ly ignored), but
5f50: 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e   does not return
5f60: 20 61 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f   a value.  or mo
5f70: 64 69 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61  dify the auto-va
5f80: 63 75 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65  cuum flag in the
5f90: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20   database file. 
5fa0: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 74 68  If a database th
5fb0: 61 74 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75  at.  supports au
5fc0: 74 6f 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65  to-vacuum is ope
5fd0: 6e 65 64 20 62 79 20 61 20 6c 69 62 72 61 72 79  ned by a library
5fe0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
5ff0: 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20  his option, it. 
6000: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
6010: 79 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64  y opened in read
6020: 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43  -only mode..}..C
6030: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6040: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45  QLITE_OMIT_BETWE
6050: 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  EN_OPTIMIZATION}
6060: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
6070: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 75 73   disables the us
6080: 65 20 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74  e of indices wit
6090: 68 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 74  h WHERE clause t
60a0: 65 72 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c  erms.  that empl
60b0: 6f 79 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f  oy the BETWEEN o
60c0: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
60d0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
60e0: 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54  TE_OMIT_BLOB_LIT
60f0: 45 52 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74  ERAL} {.  When t
6100: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
6110: 66 69 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74  fined, it is not
6120: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65   possible to spe
6130: 63 69 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20  cify a blob in. 
6140: 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
6150: 74 20 75 73 69 6e 67 20 74 68 65 20 58 27 41 42  t using the X'AB
6160: 43 44 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43  CD' syntax..}..C
6170: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6180: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45  QLITE_OMIT_BTREE
6190: 43 4f 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20  COUNT} {.  When 
61a0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
61b0: 65 66 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d  efined, an optim
61c0: 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63  ization that acc
61d0: 65 6c 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e  elerates countin
61e0: 67 0a 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20  g.  all entries 
61f0: 69 6e 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f  in a table (in o
6200: 74 68 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f  ther words, an o
6210: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74  ptimization that
6220: 20 68 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54   helps.  "SELECT
6230: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
6240: 61 62 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72  able" run faster
6250: 29 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  ) is omitted..}.
6260: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6270: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49  {SQLITE_OMIT_BUI
6280: 4c 54 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41  LTIN_TEST} {.  A
6290: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
62a0: 20 62 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20   build includes 
62b0: 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f  a small amount o
62c0: 66 20 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c  f logic controll
62d0: 65 64 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c  ed.  by the [sql
62e0: 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f  ite3_test_contro
62f0: 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74  l()] interface t
6300: 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 65  hat is used to e
6310: 78 65 72 63 69 73 65 0a 20 20 70 61 72 74 73 20  xercise.  parts 
6320: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  of the SQLite co
6330: 72 65 20 74 68 61 74 20 61 72 65 20 64 69 66 66  re that are diff
6340: 69 63 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c  icult to control
6350: 20 61 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69   and measure usi
6360: 6e 67 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72  ng.  the standar
6370: 64 20 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74  d API.  This opt
6380: 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62  ion omits that b
6390: 75 69 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67  uilt-in test log
63a0: 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ic..}..COMPILE_O
63b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
63c0: 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69  IT_CAST} {.  Thi
63d0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
63e0: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
63f0: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43  upport for the C
6400: 41 53 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  AST operator..}.
6410: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6420: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45  {SQLITE_OMIT_CHE
6430: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
6440: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
6450: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
6460: 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73  t for CHECK cons
6470: 74 72 61 69 6e 74 73 2e 0a 20 20 54 68 65 20 70  traints..  The p
6480: 61 72 73 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c  arser will still
6490: 20 61 63 63 65 70 74 20 43 48 45 43 4b 20 63 6f   accept CHECK co
64a0: 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 53 51 4c  nstraints in SQL
64b0: 20 73 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74   statements,.  t
64c0: 68 65 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f  hey will just no
64d0: 74 20 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d  t be enforced..}
64e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
64f0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
6500: 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47  MPILEOPTION_DIAG
6510: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
6520: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
6530: 69 74 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  it the compile-t
6540: 69 6d 65 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e  ime option diagn
6550: 6f 73 74 69 63 73 20 61 76 61 69 6c 61 62 6c 65  ostics available
6560: 0a 20 20 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e  .  in SQLite, in
6570: 63 6c 75 64 69 6e 67 20 74 68 65 20 5b 73 71 6c  cluding the [sql
6580: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
6590: 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 20  on_used()] and. 
65a0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c   [sqlite3_compil
65b0: 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43  eoption_get()] C
65c0: 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20  /C++ functions, 
65d0: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f  the.  [sqlite_co
65e0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
65f0: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f  ()] and [sqlite_
6600: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
6610: 74 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f  t()] SQL functio
6620: 6e 73 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 63  ns,.  and the [c
6630: 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70  ompile_options p
6640: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
6650: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6660: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d  E_OMIT_COMPLETE}
6670: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
6680: 20 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c   causes the [sql
6690: 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d  ite3_complete()]
66a0: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f   and [sqlite3_co
66b0: 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e  mplete16()].  in
66c0: 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f  terfaces to be o
66d0: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
66e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
66f0: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f  E_OMIT_COMPOUND_
6700: 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73  SELECT} {.  This
6710: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
6720: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70  to omit the comp
6730: 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75  ound [SELECT] fu
6740: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20  nctionality. .  
6750: 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
6760: 6e 74 73 20 74 68 61 74 20 75 73 65 20 74 68 65  nts that use the
6770: 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e   .  UNION, UNION
6780: 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20   ALL, INTERSECT 
6790: 6f 72 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75  or EXCEPT compou
67a0: 6e 64 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74  nd SELECT operat
67b0: 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73  ors will .  caus
67c0: 65 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  e a parse error.
67d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
67e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
67f0: 43 4f 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 7d  CONFLICT_CLAUSE}
6800: 20 7b 0a 20 20 49 6e 20 74 68 65 20 66 75 74 75   {.  In the futu
6810: 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  re, this option 
6820: 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20  will be used to 
6830: 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 4f 4e 20  omit the .  [ON 
6840: 43 4f 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65  CONFLICT] clause
6850: 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72   from the librar
6860: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
6870: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6880: 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53  T_DATETIME_FUNCS
6890: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
68a0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
68b0: 20 53 51 4c 69 74 65 27 73 20 62 75 69 6c 74 2d   SQLite's built-
68c0: 69 6e 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  in date and time
68d0: 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20   manipulation.  
68e0: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d  functions are om
68f0: 69 74 74 65 64 2e 20 53 70 65 63 69 66 69 63 61  itted. Specifica
6900: 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20 66 75 6e  lly, the SQL fun
6910: 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79  ctions julianday
6920: 28 29 2c 20 64 61 74 65 28 29 2c 0a 20 20 74 69  (), date(),.  ti
6930: 6d 65 28 29 2c 20 64 61 74 65 74 69 6d 65 28 29  me(), datetime()
6940: 20 61 6e 64 20 73 74 72 66 74 69 6d 65 28 29 20   and strftime() 
6950: 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  are not availabl
6960: 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 63  e. The default c
6970: 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43  olumn.  values C
6980: 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52  URRENT_TIME, CUR
6990: 52 45 4e 54 5f 44 41 54 45 20 61 6e 64 20 43 55  RENT_DATE and CU
69a0: 52 52 45 4e 54 5f 44 41 54 45 54 49 4d 45 20 61  RRENT_DATETIME a
69b0: 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62  re still availab
69c0: 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  le..}..COMPILE_O
69d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
69e0: 49 54 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20  IT_DECLTYPE} {. 
69f0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
6a00: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
6a10: 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  it support for t
6a20: 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  he.  [sqlite3_co
6a30: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d  lumn_decltype()]
6a40: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f   and [sqlite3_co
6a50: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
6a60: 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e  )].  interfaces.
6a70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6a80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6a90: 44 45 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20  DEPRECATED} {.  
6aa0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
6ab0: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
6ac0: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e  t support for in
6ad0: 74 65 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65  terfaces.  marke
6ae0: 64 20 61 73 20 64 65 70 72 65 63 61 74 65 64 2e  d as deprecated.
6af0: 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20    This includes 
6b00: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72  .  [sqlite3_aggr
6b10: 65 67 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a  egate_count()],.
6b20: 20 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72    [sqlite3_expir
6b30: 65 64 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  ed()],.  [sqlite
6b40: 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69  3_transfer_bindi
6b50: 6e 67 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74  ngs()],.  [sqlit
6b60: 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65  e3_global_recove
6b70: 72 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  r()],.  [sqlite3
6b80: 5f 74 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28  _thread_cleanup(
6b90: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
6ba0: 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29  3_memory_alarm()
6bb0: 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a  ] interfaces..}.
6bc0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6bd0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53  {SQLITE_OMIT_DIS
6be0: 4b 49 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  KIO} {.  This op
6bf0: 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73  tion omits all s
6c00: 75 70 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69  upport for writi
6c10: 6e 67 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61  ng to the disk a
6c20: 6e 64 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61  nd forces.  data
6c30: 62 61 73 65 73 20 74 6f 20 65 78 69 73 74 20 69  bases to exist i
6c40: 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20  n memory only.  
6c50: 54 68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20  This option has 
6c60: 6e 6f 74 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e  not been .  main
6c70: 74 61 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61  tained and proba
6c80: 62 6c 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72  bly does not wor
6c90: 6b 20 77 69 74 68 20 6e 65 77 65 72 20 76 65 72  k with newer ver
6ca0: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e  sions of SQLite.
6cb0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6cc0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6cd0: 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66  EXPLAIN} {.  Def
6ce0: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
6cf0: 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 45 58  n causes the [EX
6d00: 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74  PLAIN] command t
6d10: 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f  o be omitted fro
6d20: 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e  m the.  library.
6d30: 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65   Attempting to e
6d40: 78 65 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41  xecute an [EXPLA
6d50: 49 4e 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69  IN] statement wi
6d60: 6c 6c 20 63 61 75 73 65 20 61 20 70 61 72 73 65  ll cause a parse
6d70: 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  .  error..}..COM
6d80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6d90: 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52  ITE_OMIT_FLAG_PR
6da0: 41 47 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20  AGMAS} {.  This 
6db0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
6dc0: 70 6f 72 74 20 66 6f 72 20 61 20 73 75 62 73 65  port for a subse
6dd0: 74 20 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f  t of [PRAGMA] co
6de0: 6d 6d 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75  mmands that.  qu
6df0: 65 72 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c  ery and set bool
6e00: 65 61 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a  ean properties..
6e10: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6e20: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  N {SQLITE_OMIT_F
6e30: 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b  LOATING_POINT} {
6e40: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
6e50: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66  s used to omit f
6e60: 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75  loating-point nu
6e70: 6d 62 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f  mber support fro
6e80: 6d 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c  m the SQLite.  l
6e90: 69 62 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65  ibrary. When spe
6ea0: 63 69 66 69 65 64 2c 20 73 70 65 63 69 66 79 69  cified, specifyi
6eb0: 6e 67 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ng a floating po
6ec0: 69 6e 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20  int number as a 
6ed0: 6c 69 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e  literal .  (i.e.
6ee0: 20 22 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73   "1.01") results
6ef0: 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
6f00: 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20  r...  <p>In the 
6f10: 66 75 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74  future, this opt
6f20: 69 6f 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73  ion may also dis
6f30: 61 62 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74  able other float
6f40: 69 6e 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e  ing point .  fun
6f50: 63 74 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20  ctionality, for 
6f60: 65 78 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c  example the [sql
6f70: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
6f80: 6c 65 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74  le()], .  [sqlit
6f90: 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29  e3_bind_double()
6fa0: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75  ], [sqlite3_valu
6fb0: 65 5f 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a  e_double()] and.
6fc0: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d    [sqlite3_colum
6fd0: 6e 5f 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20  n_double()] API 
6fe0: 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70  functions..  </p
6ff0: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
7000: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
7010: 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a  _FOREIGN_KEY} {.
7020: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
7030: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
7040: 6e 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  n [foreign key c
7050: 6f 6e 73 74 72 61 69 6e 74 5d 20 73 79 6e 74 61  onstraint] synta
7060: 78 20 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67  x is.  not recog
7070: 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  nized..}..COMPIL
7080: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7090: 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d  _OMIT_GET_TABLE}
70a0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
70b0: 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20   causes support 
70c0: 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74  for [sqlite3_get
70d0: 5f 74 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20  _table()] and.  
70e0: 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61  [sqlite3_free_ta
70f0: 62 6c 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69  ble()] to be omi
7100: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
7110: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7120: 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b  OMIT_INCRBLOB} {
7130: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
7140: 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f  auses support fo
7150: 72 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20  r [sqlite3_blob 
7160: 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c  | incremental BL
7170: 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20  OB I/O].  to be 
7180: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
7190: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
71a0: 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54  TE_OMIT_INTEGRIT
71b0: 59 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69  Y_CHECK} {.  Thi
71c0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
71d0: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b  upport for the [
71e0: 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20  integrity_check 
71f0: 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50  pragma]..}..COMP
7200: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7210: 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54  TE_OMIT_LIKE_OPT
7220: 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54  IMIZATION} {.  T
7230: 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62  his option disab
7240: 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20  les the ability 
7250: 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  of SQLite to use
7260: 20 69 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70   indices to help
7270: 0a 20 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45  .  resolve [LIKE
7280: 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65  ] and [GLOB] ope
7290: 72 61 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52  rators in a WHER
72a0: 45 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d  E clause..}..COM
72b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
72c0: 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58  ITE_OMIT_LOAD_EX
72d0: 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  TENSION} {.  Thi
72e0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
72f0: 68 65 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73  he entire extens
7300: 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68  ion loading mech
7310: 61 6e 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c  anism from.  SQL
7320: 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b  ite, including [
7330: 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c  sqlite3_enable_l
7340: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d  oad_extension()]
7350: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
7360: 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29  load_extension()
7370: 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a  ] interfaces..}.
7380: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7390: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43  {SQLITE_OMIT_LOC
73a0: 41 4c 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73  ALTIME} {.  This
73b0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
73c0: 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f  e "localtime" mo
73d0: 64 69 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20  difier from the 
73e0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20  date and time.  
73f0: 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73  functions.  This
7400: 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74   option is somet
7410: 69 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e  imes useful when
7420: 20 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69   trying to compi
7430: 6c 65 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e  le.  the date an
7440: 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
7450: 20 6f 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74   on a platform t
7460: 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
7470: 70 6f 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65  port the.  conce
7480: 70 74 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65  pt of local time
7490: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
74a0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
74b0: 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20  _LOOKASIDE} {.  
74c0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
74d0: 73 20 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65  s the [lookaside
74e0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
74f0: 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  r]..}..COMPILE_O
7500: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
7510: 49 54 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20  IT_MEMORYDB} {. 
7520: 20 57 68 65 6e 20 74 68 69 73 20 69 73 20 64 65   When this is de
7530: 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61  fined, the libra
7540: 72 79 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 70  ry does not resp
7550: 65 63 74 20 74 68 65 20 73 70 65 63 69 61 6c 20  ect the special 
7560: 64 61 74 61 62 61 73 65 0a 20 20 6e 61 6d 65 20  database.  name 
7570: 22 3a 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d  ":memory:" (norm
7580: 61 6c 6c 79 20 75 73 65 64 20 74 6f 20 63 72 65  ally used to cre
7590: 61 74 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72  ate an [in-memor
75a0: 79 20 64 61 74 61 62 61 73 65 5d 29 2e 20 49 66  y database]). If
75b0: 20 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69   .  ":memory:" i
75c0: 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c  s passed to [sql
75d0: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73  ite3_open()], [s
75e0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d  qlite3_open16()]
75f0: 2c 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f  , or.  [sqlite3_
7600: 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69  open_v2()], a fi
7610: 6c 65 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d  le with this nam
7620: 65 20 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65  e will be .  ope
7630: 6e 65 64 20 6f 72 20 63 72 65 61 74 65 64 2e 0a  ned or created..
7640: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7650: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f  N {SQLITE_OMIT_O
7660: 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20  R_OPTIMIZATION} 
7670: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7680: 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69  disables the abi
7690: 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74  lity of SQLite t
76a0: 6f 20 75 73 65 20 61 6e 20 69 6e 64 65 78 20 74  o use an index t
76b0: 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68 20 74  ogether.  with t
76c0: 65 72 6d 73 20 6f 66 20 61 20 57 48 45 52 45 20  erms of a WHERE 
76d0: 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74 65 64  clause connected
76e0: 20 62 79 20 74 68 65 20 4f 52 20 6f 70 65 72 61   by the OR opera
76f0: 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tor..}..COMPILE_
7700: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7710: 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41  MIT_PAGER_PRAGMA
7720: 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  S} {.  Defining 
7730: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
7740: 73 20 70 72 61 67 6d 61 73 20 72 65 6c 61 74 65  s pragmas relate
7750: 64 20 74 6f 20 74 68 65 20 70 61 67 65 72 20 73  d to the pager s
7760: 75 62 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a 20  ubsystem from . 
7770: 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43   the build..}..C
7780: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
7790: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d  QLITE_OMIT_PRAGM
77a0: 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  A} {.  This opti
77b0: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
77c0: 69 74 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20  it the [PRAGMA] 
77d0: 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20 74  command.  from t
77e0: 68 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74 65  he library. Note
77f0: 20 74 68 61 74 20 69 74 20 69 73 20 75 73 65 66   that it is usef
7800: 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65  ul to define the
7810: 20 6d 61 63 72 6f 73 20 74 68 61 74 20 6f 6d 69   macros that omi
7820: 74 0a 20 20 73 70 65 63 69 66 69 63 20 70 72 61  t.  specific pra
7830: 67 6d 61 73 20 69 6e 20 61 64 64 69 74 69 6f 6e  gmas in addition
7840: 20 74 6f 20 74 68 69 73 2c 20 61 73 20 74 68 65   to this, as the
7850: 79 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f 76  y may also remov
7860: 65 20 73 75 70 70 6f 72 74 69 6e 67 20 63 6f 64  e supporting cod
7870: 65 0a 20 20 69 6e 20 6f 74 68 65 72 20 73 75 62  e.  in other sub
7880: 2d 73 79 73 74 65 6d 73 2e 20 54 68 69 73 20 6d  -systems. This m
7890: 61 63 72 6f 20 72 65 6d 6f 76 65 73 20 74 68 65  acro removes the
78a0: 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e   [PRAGMA] comman
78b0: 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  d only..}..COMPI
78c0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
78d0: 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f  E_OMIT_PROGRESS_
78e0: 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68  CALLBACK} {.  Th
78f0: 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65  is option may be
7900: 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69 74   defined to omit
7910: 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 79 20   the capability 
7920: 74 6f 20 69 73 73 75 65 20 22 70 72 6f 67 72 65  to issue "progre
7930: 73 73 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b 73  ss" .  callbacks
7940: 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e   during long-run
7950: 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65  ning SQL stateme
7960: 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b 73 71 6c  nts. The .  [sql
7970: 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
7980: 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50 49 20 66  ndler()].  API f
7990: 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70  unction is not p
79a0: 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 6c 69  resent in the li
79b0: 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  brary..}..COMPIL
79c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
79d0: 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e  _OMIT_QUICKBALAN
79e0: 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CE} {.  This opt
79f0: 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c 74  ion omits an alt
7a00: 65 72 6e 61 74 69 76 65 2c 20 66 61 73 74 65 72  ernative, faster
7a10: 20 42 2d 54 72 65 65 20 62 61 6c 61 6e 63 69 6e   B-Tree balancin
7a20: 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73 69  g routine..  Usi
7a30: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d  ng this option m
7a40: 61 6b 65 73 20 53 51 4c 69 74 65 20 73 6c 69 67  akes SQLite slig
7a50: 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74 20  htly smaller at 
7a60: 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 0a 20  the expense of. 
7a70: 20 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e 20 73   making it run s
7a80: 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e 0a  lightly slower..
7a90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7aa0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52  N {SQLITE_OMIT_R
7ab0: 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65 6e  EINDEX} {.  When
7ac0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
7ad0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 52 45  defined, the [RE
7ae0: 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64  INDEX].  command
7af0: 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64   is not included
7b00: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
7b10: 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b  .  Executing a [
7b20: 52 45 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65  REINDEX] stateme
7b30: 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70  nt causes .  a p
7b40: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
7b50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
7b60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d  QLITE_OMIT_SCHEM
7b70: 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44  A_PRAGMAS} {.  D
7b80: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
7b90: 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61  ion omits pragma
7ba0: 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20 74  s for querying t
7bb0: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
7bc0: 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62  ma from .  the b
7bd0: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
7be0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7bf0: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53  OMIT_SCHEMA_VERS
7c00: 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  ION_PRAGMAS} {. 
7c10: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
7c20: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
7c30: 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67  mas for querying
7c40: 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20 74   and modifying t
7c50: 68 65 20 0a 20 20 64 61 74 61 62 61 73 65 20 73  he .  database s
7c60: 63 68 65 6d 61 20 76 65 72 73 69 6f 6e 20 61 6e  chema version an
7c70: 64 20 75 73 65 72 20 76 65 72 73 69 6f 6e 20 66  d user version f
7c80: 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 53  rom the build. S
7c90: 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65  pecifically, the
7ca0: 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65 72 73   .  [schema_vers
7cb0: 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f 76  ion] and [user_v
7cc0: 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73 20  ersion] PRAGMAs 
7cd0: 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a  are omitted..}..
7ce0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7cf0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52  SQLITE_OMIT_SHAR
7d00: 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54 68  ED_CACHE} {.  Th
7d10: 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73  is option builds
7d20: 20 53 51 4c 69 74 65 20 77 69 74 68 6f 75 74 20   SQLite without 
7d30: 73 75 70 70 6f 72 74 20 66 6f 72 20 73 68 61 72  support for shar
7d40: 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a 20  ed-cache mode.. 
7d50: 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e   The [sqlite3_en
7d60: 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68  able_shared_cach
7d70: 65 28 29 5d 20 69 73 20 6f 6d 69 74 74 65 64 20  e()] is omitted 
7d80: 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 66 61 69  along with a fai
7d90: 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f  r.  amount of lo
7da0: 67 69 63 20 77 69 74 68 69 6e 20 74 68 65 20 42  gic within the B
7db0: 2d 54 72 65 65 20 73 75 62 73 79 73 74 65 6d 20  -Tree subsystem 
7dc0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
7dd0: 73 68 61 72 65 64 0a 20 20 63 61 63 68 65 20 6d  shared.  cache m
7de0: 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f  anagement..}..CO
7df0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7e00: 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45  LITE_OMIT_SUBQUE
7e10: 52 59 7d 20 7b 0a 20 20 49 66 20 64 65 66 69 6e  RY} {.  If defin
7e20: 65 64 2c 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ed, support for 
7e30: 73 75 62 2d 73 65 6c 65 63 74 73 20 61 6e 64 20  sub-selects and 
7e40: 74 68 65 20 49 4e 28 29 20 6f 70 65 72 61 74 6f  the IN() operato
7e50: 72 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  r are omitted..}
7e60: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7e70: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43   {SQLITE_OMIT_TC
7e80: 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20 20  L_VARIABLE} {.  
7e90: 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73  If this macro is
7ea0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74   defined, then t
7eb0: 68 65 20 73 70 65 63 69 61 6c 20 22 24 3c 76 61  he special "$<va
7ec0: 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73 79  riable-name>" sy
7ed0: 6e 74 61 78 0a 20 20 75 73 65 64 20 74 6f 20 61  ntax.  used to a
7ee0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e  utomatically bin
7ef0: 64 20 53 51 4c 20 76 61 72 69 61 62 6c 65 73 20  d SQL variables 
7f00: 74 6f 20 54 43 4c 20 76 61 72 69 61 62 6c 65 73  to TCL variables
7f10: 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   is omitted..}..
7f20: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7f30: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50  SQLITE_OMIT_TEMP
7f40: 44 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  DB} {.  This opt
7f50: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
7f60: 74 20 66 6f 72 20 54 45 4d 50 20 6f 72 20 54 45  t for TEMP or TE
7f70: 4d 50 4f 52 41 52 59 20 74 61 62 6c 65 73 2e 0a  MPORARY tables..
7f80: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7f90: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  N {SQLITE_OMIT_T
7fa0: 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  RACE} {.  This o
7fb0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
7fc0: 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c  ort for the [sql
7fd0: 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20  ite3_profile()] 
7fe0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  and.  [sqlite3_t
7ff0: 72 61 63 65 28 29 5d 20 69 6e 74 65 72 66 61 63  race()] interfac
8000: 65 73 20 61 6e 64 20 74 68 65 69 72 20 61 73 73  es and their ass
8010: 6f 63 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a 7d  ociated logic..}
8020: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8030: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52   {SQLITE_OMIT_TR
8040: 49 47 47 45 52 7d 20 7b 0a 20 20 44 65 66 69 6e  IGGER} {.  Defin
8050: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
8060: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
8070: 72 20 54 52 49 47 47 45 52 20 6f 62 6a 65 63 74  r TRIGGER object
8080: 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a  s. Neither the .
8090: 20 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45    [CREATE TRIGGE
80a0: 52 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52 49 47  R] or [DROP TRIG
80b0: 47 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20  GER].  commands 
80c0: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e  are available in
80d0: 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 20   this case, and 
80e0: 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78  attempting to ex
80f0: 65 63 75 74 65 0a 20 20 65 69 74 68 65 72 20 77  ecute.  either w
8100: 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20  ill result in a 
8110: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 20 20 54  parse error..  T
8120: 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 20  his option also 
8130: 64 69 73 61 62 6c 65 73 20 65 6e 66 6f 72 63 65  disables enforce
8140: 6d 65 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e  ment of [foreign
8150: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73   key constraints
8160: 5d 2c 0a 20 20 73 69 6e 63 65 20 74 68 65 20 63  ],.  since the c
8170: 6f 64 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ode that impleme
8180: 6e 74 73 20 74 72 69 67 67 65 72 73 20 61 6e 64  nts triggers and
8190: 20 77 68 69 63 68 20 69 73 20 6f 6d 69 74 74 65   which is omitte
81a0: 64 20 62 79 20 74 68 69 73 0a 20 20 6f 70 74 69  d by this.  opti
81b0: 6f 6e 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20  on is also used 
81c0: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f  to implement [fo
81d0: 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e  reign key action
81e0: 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  s]..}..COMPILE_O
81f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
8200: 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49  IT_TRUNCATE_OPTI
8210: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41 20  MIZATION} {.  A 
8220: 64 65 66 61 75 6c 74 20 62 75 69 6c 64 20 6f 66  default build of
8230: 20 53 51 4c 69 74 65 2c 20 69 66 20 61 20 5b 44   SQLite, if a [D
8240: 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74  ELETE] statement
8250: 20 68 61 73 20 6e 6f 20 57 48 45 52 45 20 63 6c   has no WHERE cl
8260: 61 75 73 65 0a 20 20 61 6e 64 20 6f 70 65 72 61  ause.  and opera
8270: 74 65 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77  tes on a table w
8280: 69 74 68 20 6e 6f 20 74 72 69 67 67 65 72 73 2c  ith no triggers,
8290: 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e   an optimization
82a0: 20 6f 63 63 75 72 73 20 74 68 61 74 0a 20 20 63   occurs that.  c
82b0: 61 75 73 65 73 20 74 68 65 20 44 45 4c 45 54 45  auses the DELETE
82c0: 20 74 6f 20 6f 63 63 75 72 20 62 79 20 64 72 6f   to occur by dro
82d0: 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61  pping and recrea
82e0: 74 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20  ting the table. 
82f0: 20 0a 20 20 44 72 6f 70 70 69 6e 67 20 61 6e 64   .  Dropping and
8300: 20 72 65 63 72 65 61 74 69 6e 67 20 61 20 74 61   recreating a ta
8310: 62 6c 65 20 69 73 20 75 73 75 61 6c 6c 79 20 6d  ble is usually m
8320: 75 63 68 20 66 61 73 74 65 72 20 74 68 61 6e 20  uch faster than 
8330: 64 65 6c 65 74 69 6e 67 0a 20 20 74 68 65 20 74  deleting.  the t
8340: 61 62 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f 77  able content row
8350: 20 62 79 20 72 6f 77 2e 20 20 54 68 69 73 20 69   by row.  This i
8360: 73 20 74 68 65 20 22 74 72 75 6e 63 61 74 65 20  s the "truncate 
8370: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d  optimization"..}
8380: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8390: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54   {SQLITE_OMIT_UT
83a0: 46 31 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  F16} {.  This ma
83b0: 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 6f  cro is used to o
83c0: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
83d0: 55 54 46 31 36 20 74 65 78 74 20 65 6e 63 6f 64  UTF16 text encod
83e0: 69 6e 67 2e 20 57 68 65 6e 20 74 68 69 73 20 69  ing. When this i
83f0: 73 0a 20 20 64 65 66 69 6e 65 64 20 61 6c 6c 20  s.  defined all 
8400: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 74 68  API functions th
8410: 61 74 20 72 65 74 75 72 6e 20 6f 72 20 61 63 63  at return or acc
8420: 65 70 74 20 55 54 46 31 36 20 65 6e 63 6f 64 65  ept UTF16 encode
8430: 64 20 74 65 78 74 20 61 72 65 0a 20 20 75 6e 61  d text are.  una
8440: 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 73 65 20  vailable. These 
8450: 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65  functions can be
8460: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 74   identified by t
8470: 68 65 20 66 61 63 74 20 74 68 61 74 20 74 68 65  he fact that the
8480: 79 20 65 6e 64 0a 20 20 77 69 74 68 20 27 31 36  y end.  with '16
8490: 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b  ', for example [
84a0: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
84b0: 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63  6()], [sqlite3_c
84c0: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20  olumn_text16()] 
84d0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62  and.  [sqlite3_b
84e0: 69 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d  ind_text16()]..}
84f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8500: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41   {SQLITE_OMIT_VA
8510: 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74  CUUM} {.  When t
8520: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
8530: 66 69 6e 65 64 2c 20 74 68 65 20 5b 56 41 43 55  fined, the [VACU
8540: 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73  UM].  command is
8550: 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e   not included in
8560: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20   the library..  
8570: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 56 41 43  Executing a [VAC
8580: 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20 63  UUM] statement c
8590: 61 75 73 65 73 20 0a 20 20 61 20 70 61 72 73 65  auses .  a parse
85a0: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
85b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
85c0: 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20  E_OMIT_VIEW} {. 
85d0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
85e0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
85f0: 6f 72 74 20 66 6f 72 20 56 49 45 57 20 6f 62 6a  ort for VIEW obj
8600: 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68  ects. Neither th
8610: 65 20 0a 20 20 5b 43 52 45 41 54 45 20 56 49 45  e .  [CREATE VIE
8620: 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50  W] nor the [DROP
8630: 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64   VIEW].  command
8640: 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20  s are available 
8650: 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e  in this case, an
8660: 64 0a 20 20 61 74 74 65 6d 70 74 69 6e 67 20 74  d.  attempting t
8670: 6f 20 65 78 65 63 75 74 65 20 65 69 74 68 65 72  o execute either
8680: 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20   will result in 
8690: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
86a0: 20 20 57 41 52 4e 49 4e 47 3a 20 49 66 20 74 68    WARNING: If th
86b0: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
86c0: 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74  ned, it will not
86d0: 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20   be possible to 
86e0: 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a  open a database.
86f0: 20 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20    for which the 
8700: 73 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20  schema contains 
8710: 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d  VIEW objects. .}
8720: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8730: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49   {SQLITE_OMIT_VI
8740: 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20  RTUALTABLE} {.  
8750: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
8760: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  s support for th
8770: 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 20  e [sqlite3_vtab 
8780: 7c 20 56 69 72 74 75 61 6c 20 54 61 62 6c 65 5d  | Virtual Table]
8790: 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20  .  mechanism in 
87a0: 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  SQLite..}..COMPI
87b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
87c0: 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20 20  E_OMIT_WAL} {.  
87d0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
87e0: 73 20 74 68 65 20 22 5b 77 72 69 74 65 2d 61 68  s the "[write-ah
87f0: 65 61 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61  ead log]" (a.k.a
8800: 2e 20 22 5b 57 41 4c 5d 22 29 20 63 61 70 61 62  . "[WAL]") capab
8810: 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ility..}..COMPIL
8820: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8830: 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20 54  _OMIT_WSD} {.  T
8840: 68 69 73 20 6f 70 74 69 6f 6e 73 20 62 75 69 6c  his options buil
8850: 64 73 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20  ds a version of 
8860: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
8870: 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ry that contains
8880: 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c 65 20 53   no.  Writable S
8890: 74 61 74 69 63 20 44 61 74 61 20 28 57 53 44 29  tatic Data (WSD)
88a0: 2e 20 20 57 53 44 20 69 73 20 67 6c 6f 62 61 6c  .  WSD is global
88b0: 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f   variables and/o
88c0: 72 20 73 74 61 74 69 63 0a 20 20 76 61 72 69 61  r static.  varia
88d0: 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74  bles.  Some plat
88e0: 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70  forms do not sup
88f0: 70 6f 72 74 20 57 53 44 2c 20 61 6e 64 20 74 68  port WSD, and th
8900: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63  is option is nec
8910: 65 73 73 61 72 79 0a 20 20 69 6e 20 6f 72 64 65  essary.  in orde
8920: 72 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20  r for SQLite to 
8930: 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c 61 74 66  work those platf
8940: 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b  orms.  ..  Unlik
8950: 65 20 6f 74 68 65 72 20 4f 4d 49 54 20 6f 70 74  e other OMIT opt
8960: 69 6f 6e 73 20 77 68 69 63 68 20 6d 61 6b 65 20  ions which make 
8970: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
8980: 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68  ry smaller,.  th
8990: 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c  is option actual
89a0: 6c 79 20 69 6e 63 72 65 61 73 65 73 20 74 68 65  ly increases the
89b0: 20 73 69 7a 65 20 6f 66 20 53 51 4c 69 74 65 20   size of SQLite 
89c0: 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 72 75 6e  and makes it run
89d0: 0a 20 20 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77  .  a little slow
89e0: 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65 20 74 68  er.  Only use th
89f0: 69 73 20 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c  is option if SQL
8a00: 69 74 65 20 69 73 20 62 65 69 6e 67 20 62 75 69  ite is being bui
8a10: 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65  lt for an.  embe
8a20: 64 64 65 64 20 74 61 72 67 65 74 20 74 68 61 74  dded target that
8a30: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
8a40: 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  t WSD..}..COMPIL
8a50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8a60: 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20  _OMIT_XFER_OPT} 
8a70: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
8a80: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
8a90: 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20  r optimizations 
8aa0: 74 68 61 74 20 68 65 6c 70 20 73 74 61 74 65 6d  that help statem
8ab0: 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20 66 6f  ents.  of the fo
8ac0: 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  rm "INSERT INTO 
8ad0: 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20  ... SELECT ..." 
8ae0: 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43  run faster..}..C
8af0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8b00: 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f  QLITE_ZERO_MALLO
8b10: 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  C} {.  This opti
8b20: 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20 74 68  on omits both th
8b30: 65 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72  e [default memor
8b40: 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64  y allocator] and
8b50: 20 74 68 65 0a 20 20 5b 64 65 62 75 67 67 69 6e   the.  [debuggin
8b60: 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  g memory allocat
8b70: 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20 62 75 69  or] from the bui
8b80: 6c 64 20 61 6e 64 20 73 75 62 73 74 69 74 75 74  ld and substitut
8b90: 65 73 20 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f  es a stub.  memo
8ba0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61  ry allocator tha
8bb0: 74 20 61 6c 77 61 79 73 20 66 61 69 6c 73 2e 20  t always fails. 
8bc0: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74   SQLite will not
8bd0: 20 72 75 6e 20 77 69 74 68 20 74 68 69 73 0a 20   run with this. 
8be0: 20 73 74 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c   stub memory all
8bf0: 6f 63 61 74 6f 72 20 73 69 6e 63 65 20 69 74 20  ocator since it 
8c00: 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74  will be unable t
8c10: 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72  o allocate memor
8c20: 79 2e 20 20 42 75 74 0a 20 20 74 68 69 73 20 73  y.  But.  this s
8c30: 74 75 62 20 63 61 6e 20 62 65 20 72 65 70 6c 61  tub can be repla
8c40: 63 65 64 20 61 74 20 73 74 61 72 74 2d 74 69 6d  ced at start-tim
8c50: 65 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74  e using.  [sqlit
8c60: 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49  e3_config]([SQLI
8c70: 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
8c80: 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c  ],...) or.  [sql
8c90: 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51  ite3_config]([SQ
8ca0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
8cb0: 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65  ],...)..  So the
8cc0: 20 6e 65 74 20 65 66 66 65 63 74 20 6f 66 20 74   net effect of t
8cd0: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
8ce0: 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61 74 20   option is that 
8cf0: 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65  it allows SQLite
8d00: 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65  .  to be compile
8d10: 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61  d and linked aga
8d20: 69 6e 73 74 20 61 20 73 79 73 74 65 6d 20 6c 69  inst a system li
8d30: 62 72 61 72 79 20 74 68 61 74 20 64 6f 65 73 20  brary that does 
8d40: 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20 6d 61  not support.  ma
8d50: 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28 29 2c 20  lloc(), free(), 
8d60: 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29  and/or realloc()
8d70: 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e  ..}..</tcl>.<a n
8d80: 61 6d 65 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e  ame="debugoption
8d90: 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 37 20  s"></a>.<h2>1.7 
8da0: 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 44 65 62  Analysis and Deb
8db0: 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f  ugging Options</
8dc0: 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49  h2>.<tcl>..COMPI
8dd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8de0: 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65  E_DEBUG} {.  The
8df0: 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63   SQLite source c
8e00: 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74  ode contains lit
8e10: 65 72 61 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73  erally thousands
8e20: 20 6f 66 20 61 73 73 65 72 74 28 29 20 73 74 61   of assert() sta
8e30: 74 65 6d 65 6e 74 73 0a 20 20 75 73 65 64 20 74  tements.  used t
8e40: 6f 20 76 65 72 69 66 79 20 69 6e 74 65 72 6e 61  o verify interna
8e50: 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e  l assumptions an
8e60: 64 20 73 75 62 72 6f 75 74 69 6e 65 20 70 72 65  d subroutine pre
8e70: 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20  conditions and. 
8e80: 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e   postconditions.
8e90: 20 20 54 68 65 73 65 20 61 73 73 65 72 74 28 29    These assert()
8ea0: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
8eb0: 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20  normally turned 
8ec0: 6f 66 66 0a 20 20 28 74 68 65 79 20 67 65 6e 65  off.  (they gene
8ed0: 72 61 74 65 20 6e 6f 20 63 6f 64 65 29 20 73 69  rate no code) si
8ee0: 6e 63 65 20 74 75 72 6e 69 6e 67 20 74 68 65 6d  nce turning them
8ef0: 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65   on makes SQLite
8f00: 20 72 75 6e 20 61 70 70 72 6f 78 69 6d 61 74 65   run approximate
8f10: 6c 79 0a 20 20 74 68 72 65 65 20 74 69 6d 65 73  ly.  three times
8f20: 20 73 6c 6f 77 65 72 2e 20 20 42 75 74 20 66 6f   slower.  But fo
8f30: 72 20 74 65 73 74 69 6e 67 20 61 6e 64 20 61 6e  r testing and an
8f40: 61 6c 79 73 69 73 2c 20 69 74 20 69 73 20 75 73  alysis, it is us
8f50: 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74  eful to turn.  t
8f60: 68 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74  he assert() stat
8f70: 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20  ements on.  The 
8f80: 53 51 4c 49 54 45 5f 44 45 42 55 47 20 63 6f 6d  SQLITE_DEBUG com
8f90: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8fa0: 20 64 6f 65 73 20 74 68 69 73 2e 0a 20 20 53 51   does this..  SQ
8fb0: 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f 20  LITE_DEBUG also 
8fc0: 74 75 72 6e 73 20 6f 6e 20 73 6f 6d 65 20 6f 74  turns on some ot
8fd0: 68 65 72 20 64 65 62 75 67 67 69 6e 67 20 66 65  her debugging fe
8fe0: 61 74 75 72 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  atures..}..COMPI
8ff0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9000: 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a 20 20  E_MEMDEBUG} {.  
9010: 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d 44 45  The SQLITE_MEMDE
9020: 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  BUG option cause
9030: 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e 74 65  s an instrumente
9040: 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20  d .  [debugging 
9050: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
9060: 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64 20 61  ].  to be used a
9070: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65  s the default me
9080: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 77  mory allocator w
9090: 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  ithin SQLite.  T
90a0: 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e 74 65  he.  instrumente
90b0: 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
90c0: 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20 6d 69  or checks for mi
90d0: 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69 63 61  suse of dynamica
90e0: 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a 20 20  lly allocated.  
90f0: 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70 6c 65  memory.  Example
9100: 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e 63 6c  s of misuse incl
9110: 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79  ude using memory
9120: 20 61 66 74 65 72 20 69 74 20 69 73 20 66 72 65   after it is fre
9130: 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20 6f 66  ed,.  writing of
9140: 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20 61 20  f the ends of a 
9150: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
9160: 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d 6f 72  n, freeing memor
9170: 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79  y not previously
9180: 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  .  obtained from
9190: 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   the memory allo
91a0: 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c 69 6e  cator, or failin
91b0: 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  g to initialize 
91c0: 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61 74 65  newly.  allocate
91d0: 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74  d memory..}..</t
91e0: 63 6c 3e 0a                                      cl>.