Documentation Source Text

Hex Artifact Content
Login

Artifact f12bb6caa55ff6e7f0b7559aa41537758d642e86:


0000: 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31  <?xml version="1
0010: 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 57 69  .0" encoding="Wi
0020: 6e 64 6f 77 73 2d 31 32 35 32 22 3f 3e 0a 3c 74  ndows-1252"?>.<t
0030: 69 74 6c 65 3e 43 6f 6d 70 69 6c 61 74 69 6f 6e  itle>Compilation
0040: 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53 51 4c   Options For SQL
0050: 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 0a 3c 68 31  ite</title>..<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 31 20 6f 72 20 30 26 67 74 3b 3c  >&lt;1 or 0&gt;<
0550: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
0560: 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 69  cro determines i
0570: 66 20 53 51 4c 69 74 65 20 63 72 65 61 74 65 73  f SQLite creates
0580: 20 64 61 74 61 62 61 73 65 73 20 77 69 74 68 20   databases with 
0590: 74 68 65 20 0a 20 20 5b 61 75 74 6f 5f 76 61 63  the .  [auto_vac
05a0: 75 75 6d 5d 20 66 6c 61 67 20 73 65 74 20 62 79  uum] flag set by
05b0: 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64 65   default. The de
05c0: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 30  fault value is 0
05d0: 20 0a 20 20 28 64 6f 20 6e 6f 74 20 63 72 65 61   .  (do not crea
05e0: 74 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 64  te auto-vacuum d
05f0: 61 74 61 62 61 73 65 73 29 2e 20 49 6e 20 61 6e  atabases). In an
0600: 79 20 63 61 73 65 20 74 68 65 0a 20 20 63 6f 6d  y case the.  com
0610: 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c  pile-time defaul
0620: 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64  t may be overrid
0630: 64 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50  den by the .  [P
0640: 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75  RAGMA auto_vacuu
0650: 6d 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43  m] command..}..C
0660: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
0670: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 43 41  QLITE_DEFAULT_CA
0680: 43 48 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b  CHE_SIZE=<i>&lt;
0690: 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b  pages&gt;</i>} {
06a0: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65  .  This macro se
06b0: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  ts the default s
06c0: 69 7a 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d  ize of the page-
06d0: 63 61 63 68 65 20 66 6f 72 20 65 61 63 68 20 61  cache for each a
06e0: 74 74 61 63 68 65 64 0a 20 20 64 61 74 61 62 61  ttached.  databa
06f0: 73 65 2c 20 69 6e 20 70 61 67 65 73 2e 20 54 68  se, in pages. Th
0700: 69 73 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69  is can be overri
0710: 64 64 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b  dden by the .  [
0720: 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
0730: 65 5d 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20  e] command. The 
0740: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
0750: 20 32 30 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   2000..}..COMPIL
0760: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
0770: 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f  _DEFAULT_FILE_FO
0780: 52 4d 41 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72  RMAT=<i>&lt;1 or
0790: 20 34 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   4&gt;</i>} {.  
07a0: 54 68 65 20 64 65 66 61 75 6c 74 20 73 63 68 65  The default sche
07b0: 6d 61 2d 6c 65 76 65 6c 20 66 69 6c 65 20 66 6f  ma-level file fo
07c0: 72 6d 61 74 20 75 73 65 64 20 62 79 20 53 51 4c  rmat used by SQL
07d0: 69 74 65 20 77 68 65 6e 20 63 72 65 61 74 69 6e  ite when creatin
07e0: 67 0a 20 20 6e 65 77 20 64 61 74 61 62 61 73 65  g.  new database
07f0: 20 66 69 6c 65 73 20 69 73 20 73 65 74 20 62 79   files is set by
0800: 20 74 68 69 73 20 6d 61 63 72 6f 2e 20 20 54 68   this macro.  Th
0810: 65 20 66 69 6c 65 20 66 6f 72 6d 61 74 73 20 61  e file formats a
0820: 72 65 20 61 6c 6c 0a 20 20 76 65 72 79 20 73 69  re all.  very si
0830: 6d 69 6c 61 72 2e 20 20 54 68 65 20 64 69 66 66  milar.  The diff
0840: 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 66  erence between f
0850: 6f 72 6d 61 74 73 20 31 20 61 6e 64 20 34 20 69  ormats 1 and 4 i
0860: 73 20 74 68 61 74 20 66 6f 72 6d 61 74 0a 20 20  s that format.  
0870: 34 20 75 6e 64 65 72 73 74 61 6e 64 73 20 64 65  4 understands de
0880: 73 63 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73  scending indices
0890: 20 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74   and has a tight
08a0: 65 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a  er encoding for.
08b0: 20 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73    boolean values
08c0: 2e 0a 0a 20 20 53 51 4c 69 74 65 20 28 61 73 20  ...  SQLite (as 
08d0: 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e  of [version 3.6.
08e0: 30 5d 29 20 63 61 6e 20 72 65 61 64 20 61 6e 64  0]) can read and
08f0: 20 77 72 69 74 65 20 61 6e 79 20 66 69 6c 65 20   write any file 
0900: 66 6f 72 6d 61 74 0a 20 20 62 65 74 77 65 65 6e  format.  between
0910: 20 31 20 61 6e 64 20 34 2e 20 20 42 75 74 20 6f   1 and 4.  But o
0920: 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  lder versions of
0930: 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 6e 6f   SQLite might no
0940: 74 20 62 65 20 61 62 6c 65 20 74 6f 0a 20 20 72  t be able to.  r
0950: 65 61 64 20 66 6f 72 6d 61 74 73 20 67 72 65 61  ead formats grea
0960: 74 65 72 20 74 68 61 6e 20 31 2e 20 20 53 6f 20  ter than 1.  So 
0970: 74 68 61 74 20 6f 6c 64 65 72 20 76 65 72 73 69  that older versi
0980: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 77 69  ons of SQLite wi
0990: 6c 6c 0a 20 20 62 65 20 61 62 6c 65 20 74 6f 20  ll.  be able to 
09a0: 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 64  read and write d
09b0: 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 63 72  atabase files cr
09c0: 65 61 74 65 64 20 62 79 20 6e 65 77 65 72 20 76  eated by newer v
09d0: 65 72 73 69 6f 6e 73 0a 20 20 6f 66 20 53 51 4c  ersions.  of SQL
09e0: 69 74 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74  ite, the default
09f0: 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69 73 20   file format is 
0a00: 73 65 74 20 74 6f 20 31 20 66 6f 72 20 6d 61 78  set to 1 for max
0a10: 69 6d 75 6d 0a 20 20 63 6f 6d 70 61 74 69 62 69  imum.  compatibi
0a20: 6c 69 74 79 2e 0a 0a 20 20 54 68 65 20 66 69 6c  lity...  The fil
0a30: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 61 20 6e  e format for a n
0a40: 65 77 20 64 61 74 61 62 61 73 65 20 63 61 6e 20  ew database can 
0a50: 62 65 20 73 65 74 20 61 74 20 72 75 6e 74 69 6d  be set at runtim
0a60: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 50  e using.  the [P
0a70: 52 41 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c  RAGMA legacy_fil
0a80: 65 5f 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e  e_format] comman
0a90: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
0aa0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
0ab0: 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a  AULT_JOURNAL_SIZ
0ac0: 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26 6c 74 3b 62  E_LIMIT=<i>&lt;b
0ad0: 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ytes&gt;</i>} {.
0ae0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 73 65    This option se
0af0: 74 73 20 74 68 65 20 73 69 7a 65 20 6c 69 6d 69  ts the size limi
0b00: 74 20 6f 6e 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  t on rollback jo
0b10: 75 72 6e 61 6c 20 66 69 6c 65 73 20 69 6e 0a 20  urnal files in. 
0b20: 20 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 70   [journal_mode p
0b30: 72 61 67 6d 61 20 7c 20 70 65 72 73 69 73 74 65  ragma | persiste
0b40: 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 5d  nt journal mode]
0b50: 2e 20 20 57 68 65 6e 20 74 68 69 73 20 0a 20 20  .  When this .  
0b60: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0b70: 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 74  ion is omitted t
0b80: 68 65 72 65 20 69 73 20 6e 6f 20 75 70 70 65 72  here is no upper
0b90: 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 0a 20 20   bound on the.  
0ba0: 73 69 7a 65 20 6f 66 20 74 68 65 20 72 6f 6c 6c  size of the roll
0bb0: 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 66 69 6c  back journal fil
0bc0: 65 2e 20 20 54 68 65 20 6a 6f 75 72 6e 61 6c 20  e.  The journal 
0bd0: 66 69 6c 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a  file size limit.
0be0: 20 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64    can be changed
0bf0: 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69   at run-time usi
0c00: 6e 67 20 74 68 65 20 5b 6a 6f 75 72 6e 61 6c 5f  ng the [journal_
0c10: 73 69 7a 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d  size_limit pragm
0c20: 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  a]..}..COMPILE_O
0c30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
0c40: 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53 3d  FAULT_MEMSTATUS=
0c50: 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74  <i>&lt;1 or 0&gt
0c60: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
0c70: 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f  macro is used to
0c80: 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68   determine wheth
0c90: 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 66 65  er or not the fe
0ca0: 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 20 61  atures enabled a
0cb0: 6e 64 0a 20 20 64 69 73 61 62 6c 65 64 20 75 73  nd.  disabled us
0cc0: 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f 43  ing the SQLITE_C
0cd0: 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20  ONFIG_MEMSTATUS 
0ce0: 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c  argument to [sql
0cf0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 20  ite3_config()]. 
0d00: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62   are available b
0d10: 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64  y default. The d
0d20: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
0d30: 31 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  1 ([SQLITE_CONFI
0d40: 47 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20 72  G_MEMSTATUS].  r
0d50: 65 6c 61 74 65 64 20 66 65 61 74 75 72 65 73 20  elated features 
0d60: 65 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f 4d  enabled)..}..COM
0d70: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
0d80: 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45  ITE_DEFAULT_PAGE
0d90: 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79 74  _SIZE=<i>&lt;byt
0da0: 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  es&gt;</i>} {.  
0db0: 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73  This macro is us
0dc0: 65 64 20 74 6f 20 73 65 74 20 74 68 65 20 64 65  ed to set the de
0dd0: 66 61 75 6c 74 20 70 61 67 65 2d 73 69 7a 65 20  fault page-size 
0de0: 75 73 65 64 20 77 68 65 6e 20 61 0a 20 20 64 61  used when a.  da
0df0: 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65  tabase is create
0e00: 64 2e 20 54 68 65 20 76 61 6c 75 65 20 61 73 73  d. The value ass
0e10: 69 67 6e 65 64 20 6d 75 73 74 20 62 65 20 61 20  igned must be a 
0e20: 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68 65 0a  power of 2. The.
0e30: 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20    default value 
0e40: 69 73 20 31 30 32 34 2e 20 54 68 65 20 63 6f 6d  is 1024. The com
0e50: 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c  pile-time defaul
0e60: 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64  t may be overrid
0e70: 64 65 6e 20 61 74 20 0a 20 20 72 75 6e 74 69 6d  den at .  runtim
0e80: 65 20 62 79 20 74 68 65 20 5b 50 52 41 47 4d 41  e by the [PRAGMA
0e90: 20 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d   page_size] comm
0ea0: 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  and..}..COMPILE_
0eb0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
0ec0: 45 46 41 55 4c 54 5f 54 45 4d 50 5f 43 41 43 48  EFAULT_TEMP_CACH
0ed0: 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61  E_SIZE=<i>&lt;pa
0ee0: 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  ges&gt;</i>} {. 
0ef0: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
0f00: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a   the default siz
0f10: 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61  e of the page-ca
0f20: 63 68 65 20 66 6f 72 20 74 65 6d 70 6f 72 61 72  che for temporar
0f30: 79 20 66 69 6c 65 73 0a 20 20 63 72 65 61 74 65  y files.  create
0f40: 64 20 62 79 20 53 51 4c 69 74 65 20 74 6f 20 73  d by SQLite to s
0f50: 74 6f 72 65 20 69 6e 74 65 72 6d 65 64 69 61 74  tore intermediat
0f60: 65 20 72 65 73 75 6c 74 73 2c 20 69 6e 20 70 61  e results, in pa
0f70: 67 65 73 2e 20 49 74 20 64 6f 65 73 0a 20 20 6e  ges. It does.  n
0f80: 6f 74 20 61 66 66 65 63 74 20 74 68 65 20 70 61  ot affect the pa
0f90: 67 65 2d 63 61 63 68 65 20 66 6f 72 20 74 68 65  ge-cache for the
0fa0: 20 74 65 6d 70 20 64 61 74 61 62 61 73 65 2c 20   temp database, 
0fb0: 77 68 65 72 65 20 74 61 62 6c 65 73 20 63 72 65  where tables cre
0fc0: 61 74 65 64 0a 20 20 75 73 69 6e 67 20 5b 43 52  ated.  using [CR
0fd0: 45 41 54 45 20 54 41 42 4c 45 20 7c 20 43 52 45  EATE TABLE | CRE
0fe0: 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45 5d 20  ATE TEMP TABLE] 
0ff0: 61 72 65 20 73 74 6f 72 65 64 2e 20 54 68 65 20  are stored. The 
1000: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 0a 20 20  default value.  
1010: 69 73 20 35 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49  is 500..}..COMPI
1020: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41  LE_OPTION {YYSTA
1030: 43 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d  CKDEPTH=<i>&lt;m
1040: 61 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e  ax_depth&gt;</i>
1050: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
1060: 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75   sets the maximu
1070: 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c  m depth of the L
1080: 41 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73 65  ALR(1) stack use
1090: 64 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70  d by.  the SQL p
10a0: 61 72 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c  arser within SQL
10b0: 69 74 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ite.  The defaul
10c0: 74 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20  t value is 100. 
10d0: 20 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70   A typical.  app
10e0: 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73  lication will us
10f0: 65 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75  e less than abou
1100: 74 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74  t 20 levels of t
1110: 68 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65  he stack..  Deve
1120: 6c 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70 70  lopers whose app
1130: 6c 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69  lications contai
1140: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
1150: 20 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f   that .  need mo
1160: 72 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52  re than 100 LALR
1170: 28 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65  (1) stack entrie
1180: 73 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73  s should serious
1190: 6c 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65  ly.  consider re
11a0: 66 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20  factoring their 
11b0: 53 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b  SQL as it is lik
11c0: 65 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62  ely to be well b
11d0: 65 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c  eyond.  the abil
11e0: 69 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e  ity of any human
11f0: 20 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a   to comprehend..
1200: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e  }.</tcl>..<h2>1.
1210: 32 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74  2 Options To Set
1220: 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32   Size Limits</h2
1230: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20  >..<p>There are 
1240: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1250: 69 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73  ions that will s
1260: 65 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a  et upper bounds.
1270: 6f 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20  on the sizes of 
1280: 76 61 72 69 6f 75 73 20 73 74 72 75 63 74 75 72  various structur
1290: 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  es in SQLite.  T
12a0: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  he compile-time.
12b0: 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79  options normally
12c0: 20 73 65 74 20 61 20 68 61 72 64 20 75 70 70 65   set a hard uppe
12d0: 72 20 62 6f 75 6e 64 20 74 68 61 74 20 63 61 6e  r bound that can
12e0: 20 62 65 20 63 68 61 6e 67 65 64 0a 61 74 20 72   be changed.at r
12f0: 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76  un-time on indiv
1300: 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20  idual [database 
1310: 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69  connections] usi
1320: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
1330: 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61  limit()] interfa
1340: 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ce.</p>..<p>The 
1350: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1360: 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67  ions for setting
1370: 20 75 70 70 65 72 20 62 6f 75 6e 64 73 20 61 72   upper bounds ar
1380: 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75  e.[limits | docu
1390: 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c  mented separatel
13a0: 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69  y].  The followi
13b0: 6e 67 20 69 73 20 61 20 6c 69 73 74 20 6f 66 0a  ng is a list of.
13c0: 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65  the available se
13d0: 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c  ttings:</p>..<ul
13e0: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
13f0: 41 58 5f 41 54 54 41 43 48 45 44 5d 20 20 3c 2f  AX_ATTACHED]  </
1400: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
1410: 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f  _MAX_COLUMN]  </
1420: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
1430: 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  _MAX_COMPOUND_SE
1440: 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  LECT]  </li>.<li
1450: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58  > [SQLITE_MAX_EX
1460: 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e  PR_DEPTH]  </li>
1470: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
1480: 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20  X_FUNCTION_ARG] 
1490: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
14a0: 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20  ITE_MAX_LENGTH] 
14b0: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
14c0: 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54  ITE_MAX_LIKE_PAT
14d0: 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f  TERN_LENGTH]  </
14e0: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
14f0: 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d  _MAX_PAGE_COUNT]
1500: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
1510: 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 53 49  LITE_MAX_PAGE_SI
1520: 5a 45 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  ZE]  </li>.<li> 
1530: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f  [SQLITE_MAX_SQL_
1540: 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c  LENGTH]  </li>.<
1550: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
1560: 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d  VARIABLE_NUMBER]
1570: 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c    </li>.</ul>..<
1580: 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66  a name="controlf
1590: 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68  eatures"></a>.<h
15a0: 32 3e 31 2e 33 20 4f 70 74 69 6f 6e 73 20 54 6f  2>1.3 Options To
15b0: 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69   Control Operati
15c0: 6e 67 20 43 68 61 72 61 63 74 65 72 69 73 74 69  ng Characteristi
15d0: 63 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43  cs</h2>..<tcl>.C
15e0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
15f0: 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52 3d 3c  QLITE_OS_OTHER=<
1600: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b  i>&lt;0 or 1&gt;
1610: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 6f 70  </i>} {.  The op
1620: 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69  tion causes SQLi
1630: 74 65 20 74 6f 20 6f 6d 69 74 20 69 74 73 20 62  te to omit its b
1640: 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74 69 6e  uilt-in operatin
1650: 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61  g system interfa
1660: 63 65 73 0a 20 20 66 6f 72 20 55 6e 69 78 2c 20  ces.  for Unix, 
1670: 57 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f 53 2f  Windows, and OS/
1680: 32 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69 6e  2.  The resultin
1690: 67 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 20 68  g library will h
16a0: 61 76 65 20 6e 6f 20 64 65 66 61 75 6c 74 0a 20  ave no default. 
16b0: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20 7c 20   [sqlite3_vfs | 
16c0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
16d0: 20 69 6e 74 65 72 66 61 63 65 5d 2e 20 20 41 70   interface].  Ap
16e0: 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20  plications must 
16f0: 75 73 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76  use.  [sqlite3_v
1700: 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 20 74  fs_register()] t
1710: 6f 20 72 65 67 69 73 74 65 72 20 61 6e 20 61 70  o register an ap
1720: 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65 72 66  propriate interf
1730: 61 63 65 20 62 65 66 6f 72 65 0a 20 20 75 73 69  ace before.  usi
1740: 6e 67 20 53 51 4c 69 74 65 2e 20 20 41 70 70 6c  ng SQLite.  Appl
1750: 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c  ications must al
1760: 73 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c 65 6d  so supply implem
1770: 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 74 68  entations for th
1780: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  e.  [sqlite3_os_
1790: 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73 71 6c  init()] and [sql
17a0: 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d 20 69  ite3_os_end()] i
17b0: 6e 74 65 72 66 61 63 65 73 2e 20 20 54 68 65 20  nterfaces.  The 
17c0: 75 73 75 61 6c 20 70 72 61 63 74 69 63 65 0a 20  usual practice. 
17d0: 20 69 73 20 66 6f 72 20 74 68 65 20 73 75 70 70   is for the supp
17e0: 6c 69 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73  lied [sqlite3_os
17f0: 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e 76 6f  _init()] to invo
1800: 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f  ke [sqlite3_vfs_
1810: 72 65 67 69 73 74 65 72 28 29 5d 2e 0a 20 20 53  register()]..  S
1820: 51 4c 69 74 65 20 77 69 6c 6c 20 61 75 74 6f 6d  QLite will autom
1830: 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 20  atically invoke 
1840: 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74  [sqlite3_os_init
1850: 28 29 5d 20 77 68 65 6e 20 69 74 20 69 6e 69 74  ()] when it init
1860: 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68 69 73  ializes...  This
1870: 20 6f 70 74 69 6f 6e 20 69 73 20 74 79 70 69 63   option is typic
1880: 61 6c 6c 79 20 75 73 65 64 20 77 68 65 6e 20 62  ally used when b
1890: 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 66  uilding SQLite f
18a0: 6f 72 20 61 6e 20 65 6d 62 65 64 64 65 64 0a 20  or an embedded. 
18b0: 20 70 6c 61 74 66 6f 72 6d 20 77 69 74 68 20 61   platform with a
18c0: 20 63 75 73 74 6f 6d 20 6f 70 65 72 61 74 69 6e   custom operatin
18d0: 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d  g system..}..COM
18e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
18f0: 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54  ITE_SECURE_DELET
1900: 45 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70  E} {.  This comp
1910: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1920: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
1930: 20 6f 76 65 72 77 72 69 74 65 20 64 65 6c 65 74   overwrite delet
1940: 65 64 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ed.  information
1950: 20 77 69 74 68 20 7a 65 72 6f 73 20 69 6e 20 61   with zeros in a
1960: 64 64 69 74 69 6f 6e 20 74 6f 20 6d 61 72 6b 69  ddition to marki
1970: 6e 67 20 74 68 65 20 73 70 61 63 65 0a 20 20 61  ng the space.  a
1980: 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20  s available for 
1990: 72 65 75 73 65 2e 20 20 57 69 74 68 6f 75 74 20  reuse.  Without 
19a0: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 64 65 6c  this option, del
19b0: 65 74 65 64 20 64 61 74 61 0a 20 20 6d 69 67 68  eted data.  migh
19c0: 74 20 62 65 20 72 65 63 6f 76 65 72 61 62 6c 65  t be recoverable
19d0: 20 66 72 6f 6d 20 61 20 64 61 74 61 62 61 73 65   from a database
19e0: 20 75 73 69 6e 67 20 61 20 62 69 6e 61 72 79 20   using a binary 
19f0: 65 64 69 74 6f 72 2e 0a 20 20 48 6f 77 65 76 65  editor..  Howeve
1a00: 72 2c 20 74 68 65 72 65 20 69 73 20 61 20 70 65  r, there is a pe
1a10: 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74  rformance penalt
1a20: 79 20 66 6f 72 20 75 73 69 6e 67 20 74 68 69 73  y for using this
1a30: 20 6f 70 74 69 6f 6e 2e 0a 0a 20 20 54 68 69 73   option...  This
1a40: 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 3c 75 3e   option does <u>
1a50: 6e 6f 74 3c 2f 75 3e 20 63 61 75 73 65 20 64 65  not</u> cause de
1a60: 6c 65 74 65 64 20 64 61 74 61 20 69 73 20 73 65  leted data is se
1a70: 63 75 72 65 6c 79 0a 20 20 72 65 6d 6f 76 65 64  curely.  removed
1a80: 20 66 72 6f 6d 20 74 68 65 20 75 6e 64 65 72 6c   from the underl
1a90: 79 69 6e 67 20 73 74 6f 72 61 67 65 20 6d 65 64  ying storage med
1aa0: 69 61 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ia..}..COMPILE_O
1ab0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 48  PTION {SQLITE_TH
1ac0: 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c 74 3b  READSAFE=<i>&lt;
1ad0: 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74 3b 3c  0 or 1 or 2&gt;<
1ae0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  /i>} {.  This op
1af0: 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68  tion controls wh
1b00: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64  ether or not cod
1b10: 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e  e is included in
1b20: 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61   SQLite to.  ena
1b30: 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72 61 74  ble it to operat
1b40: 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20 6d 75  e safely in a mu
1b50: 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e 76 69  ltithreaded envi
1b60: 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20  ronment.  The.  
1b70: 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c 49 54  default is SQLIT
1b80: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 77  E_THREADSAFE=1 w
1b90: 68 69 63 68 20 69 73 20 73 61 66 65 20 66 6f 72  hich is safe for
1ba0: 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 74   use in a multit
1bb0: 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69 72 6f  hreaded.  enviro
1bc0: 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d  nment.  When com
1bd0: 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54  piled with SQLIT
1be0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 61  E_THREADSAFE=0 a
1bf0: 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65  ll mutexing code
1c00: 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6e  .  is omitted an
1c10: 64 20 69 74 20 69 73 20 75 6e 73 61 66 65 20 74  d it is unsafe t
1c20: 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20  o use SQLite in 
1c30: 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20  a multithreaded 
1c40: 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65 6e 20  program..  When 
1c50: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51  compiled with SQ
1c60: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
1c70: 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65  2, SQLite can be
1c80: 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c 74 69   used in a multi
1c90: 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f 67 72  threaded.  progr
1ca0: 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f  am so long as no
1cb0: 20 74 77 6f 20 74 68 72 65 61 64 73 20 61 74 74   two threads att
1cc0: 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20  empt to use the 
1cd0: 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61 73 65  same.  [database
1ce0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 74 20   connection] at 
1cf0: 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a 0a  the same time...
1d00: 20 20 54 6f 20 70 75 74 20 69 74 20 61 6e 6f 74    To put it anot
1d10: 68 65 72 20 77 61 79 2c 20 53 51 4c 49 54 45 5f  her way, SQLITE_
1d20: 54 48 52 45 41 44 53 41 46 45 3d 31 20 73 65 74  THREADSAFE=1 set
1d30: 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20  s the default.  
1d40: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
1d50: 20 74 6f 20 53 65 72 69 61 6c 69 7a 65 64 2e 20   to Serialized. 
1d60: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1d70: 46 45 3d 32 20 73 65 74 73 20 74 68 65 20 64 65  FE=2 sets the de
1d80: 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69  fault.  [threadi
1d90: 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74  ng mode] to Mult
1da0: 69 2d 74 68 72 65 61 64 65 64 2e 20 20 41 6e 64  i-threaded.  And
1db0: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1dc0: 46 45 3d 30 20 73 65 74 73 20 74 68 65 0a 20 20  FE=0 sets the.  
1dd0: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
1de0: 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68 72 65 61   to Single-threa
1df0: 64 65 64 2e 0a 0a 20 20 54 68 65 20 76 61 6c 75  ded...  The valu
1e00: 65 20 6f 66 20 53 51 4c 49 54 45 5f 54 48 52 45  e of SQLITE_THRE
1e10: 41 44 53 41 46 45 20 63 61 6e 20 62 65 20 64 65  ADSAFE can be de
1e20: 74 65 72 6d 69 6e 65 64 20 61 74 20 72 75 6e 2d  termined at run-
1e30: 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65  time.  using the
1e40: 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64   [sqlite3_thread
1e50: 73 61 66 65 28 29 5d 20 69 6e 74 65 72 66 61 63  safe()] interfac
1e60: 65 2e 0a 0a 20 20 57 68 65 6e 20 53 51 4c 69 74  e...  When SQLit
1e70: 65 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69  e has been compi
1e80: 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f  led with SQLITE_
1e90: 54 48 52 45 41 44 53 41 46 45 3d 31 20 6f 72 0a  THREADSAFE=1 or.
1ea0: 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53    SQLITE_THREADS
1eb0: 41 46 45 3d 32 20 74 68 65 6e 20 74 68 65 20 5b  AFE=2 then the [
1ec0: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 0a  threading mode].
1ed0: 20 20 63 61 6e 20 62 65 20 61 6c 74 65 72 65 64    can be altered
1ee0: 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69   at run-time usi
1ef0: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
1f00: 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66  config()] interf
1f10: 61 63 65 20 74 6f 67 65 74 68 65 72 0a 20 20 77  ace together.  w
1f20: 69 74 68 20 6f 6e 65 20 6f 66 20 74 68 65 73 65  ith one of these
1f30: 20 76 65 72 62 73 3a 0a 0a 20 20 3c 75 6c 3e 0a   verbs:..  <ul>.
1f40: 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f    <li>[SQLITE_CO
1f50: 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41  NFIG_SINGLETHREA
1f60: 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45  D].  <li>[SQLITE
1f70: 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
1f80: 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49  EAD].  <li>[SQLI
1f90: 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c  TE_CONFIG_SERIAL
1fa0: 49 5a 45 44 5d 0a 20 20 3c 2f 75 6c 3e 0a 0a 20  IZED].  </ul>.. 
1fb0: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45   The [SQLITE_OPE
1fc0: 4e 5f 4e 4f 4d 55 54 45 58 5d 20 61 6e 64 0a 20  N_NOMUTEX] and. 
1fd0: 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55   [SQLITE_OPEN_FU
1fe0: 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 73 20 74  LLMUTEX] flags t
1ff0: 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  o [sqlite3_open_
2000: 76 32 28 29 5d 20 63 61 6e 20 61 6c 73 6f 20 62  v2()] can also b
2010: 65 20 75 73 65 64 0a 20 20 74 6f 20 61 64 6a 75  e used.  to adju
2020: 73 74 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  st the [threadin
2030: 67 20 6d 6f 64 65 5d 20 6f 66 20 69 6e 64 69 76  g mode] of indiv
2040: 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20  idual [database 
2050: 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 0a 20 20 61  connections].  a
2060: 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 4e  t run-time...  N
2070: 6f 74 65 20 74 68 61 74 20 77 68 65 6e 20 53 51  ote that when SQ
2080: 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
2090: 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52   with SQLITE_THR
20a0: 45 41 44 53 41 46 45 3d 30 2c 20 74 68 65 20 63  EADSAFE=0, the c
20b0: 6f 64 65 0a 20 20 74 6f 20 6d 61 6b 65 20 53 51  ode.  to make SQ
20c0: 4c 69 74 65 20 74 68 72 65 61 64 73 61 66 65 20  Lite threadsafe 
20d0: 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  is omitted from 
20e0: 74 68 65 20 62 75 69 6c 64 2e 20 20 57 68 65 6e  the build.  When
20f0: 20 74 68 69 73 20 6f 63 63 75 72 73 2c 0a 20 20   this occurs,.  
2100: 69 74 20 69 73 20 69 6d 70 6f 73 73 69 62 6c 65  it is impossible
2110: 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 5b   to change the [
2120: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
2130: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 72  at start-time or
2140: 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 53 65   run-time...  Se
2150: 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67  e the [threading
2160: 20 6d 6f 64 65 5d 20 64 6f 63 75 6d 65 6e 74 61   mode] documenta
2170: 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f  tion for additio
2180: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  nal information.
2190: 20 20 6f 6e 20 61 73 70 65 63 74 73 20 6f 66 20    on aspects of 
21a0: 75 73 69 6e 67 20 53 51 4c 69 74 65 20 69 6e 20  using SQLite in 
21b0: 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20  a multithreaded 
21c0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 7d 0a 0a  environment..}..
21d0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
21e0: 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52  SQLITE_TEMP_STOR
21f0: 45 3d 3c 69 3e 26 6c 74 3b 30 20 74 68 72 6f 75  E=<i>&lt;0 throu
2200: 67 68 20 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  gh 3&gt;</i>} {.
2210: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f    This option co
2220: 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20 74  ntrols whether t
2230: 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 61  emporary files a
2240: 72 65 20 73 74 6f 72 65 64 20 6f 6e 20 64 69 73  re stored on dis
2250: 6b 20 6f 72 0a 20 20 69 6e 20 6d 65 6d 6f 72 79  k or.  in memory
2260: 2e 20 20 54 68 65 20 6d 65 61 6e 69 6e 67 73 20  .  The meanings 
2270: 66 6f 72 20 76 61 72 69 6f 75 73 20 73 65 74 74  for various sett
2280: 69 6e 67 73 20 6f 66 20 74 68 69 73 20 63 6f 6d  ings of this com
2290: 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69  pile-time.  opti
22a0: 6f 6e 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77  on are as follow
22b0: 73 3a 0a 0a 20 20 3c 74 61 62 6c 65 20 63 65 6c  s:..  <table cel
22c0: 6c 70 61 64 64 69 6e 67 3d 22 32 22 20 62 6f 72  lpadding="2" bor
22d0: 64 65 72 3d 22 31 22 3e 0a 20 20 3c 74 72 3e 3c  der="1">.  <tr><
22e0: 74 68 3e 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53  th>SQLITE_TEMP_S
22f0: 54 4f 52 45 3c 2f 74 68 3e 3c 74 68 3e 4d 65 61  TORE</th><th>Mea
2300: 6e 69 6e 67 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20  ning</th></tr>. 
2310: 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22   <tr><td align="
2320: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
2330: 64 3e 41 6c 77 61 79 73 20 75 73 65 20 74 65 6d  d>Always use tem
2340: 70 6f 72 61 72 79 20 66 69 6c 65 73 3c 2f 74 64  porary files</td
2350: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
2360: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
2370: 31 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20 66 69  1</td><td>Use fi
2380: 6c 65 73 20 62 79 20 64 65 66 61 75 6c 74 20 62  les by default b
2390: 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b  ut allow the.  [
23a0: 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72  PRAGMA temp_stor
23b0: 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76  e] command to ov
23c0: 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e  erride</td></tr>
23d0: 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  .  <tr><td align
23e0: 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e  ="center">2</td>
23f0: 3c 74 64 3e 55 73 65 20 6d 65 6d 6f 72 79 20 62  <td>Use memory b
2400: 79 20 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c  y default but al
2410: 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d  low the.  [PRAGM
2420: 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f  A temp_store] co
2430: 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64  mmand to overrid
2440: 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74  e</td></tr>.  <t
2450: 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  r><td align="cen
2460: 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74 64 3e 41  ter">3</td><td>A
2470: 6c 77 61 79 73 20 75 73 65 20 6d 65 6d 6f 72 79  lways use memory
2480: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 2f 74  </td></tr>.  </t
2490: 61 62 6c 65 3e 0a 0a 20 20 54 68 65 20 64 65 66  able>..  The def
24a0: 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73 20  ault setting is 
24b0: 31 2e 20 20 0a 20 20 41 64 64 69 74 69 6f 6e 61  1.  .  Additiona
24c0: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 63 61  l information ca
24d0: 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 5b 74  n be found in [t
24e0: 65 6d 70 73 74 6f 72 65 20 7c 20 74 65 6d 70 66  empstore | tempf
24f0: 69 6c 65 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a 3c 2f  iles.html]..}.</
2500: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65  tcl>..<a name="e
2510: 6e 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c  nablefeatures"><
2520: 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f 70 74 69  /a>.<h2>1.4 Opti
2530: 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46 65  ons To Enable Fe
2540: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
2550: 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32 3e 0a  Turned Off</h2>.
2560: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
2570: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
2580: 41 42 4c 45 5f 41 54 4f 4d 49 43 5f 57 52 49 54  ABLE_ATOMIC_WRIT
2590: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  E} {.  If this C
25a0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
25b0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 20 61  cro is defined a
25c0: 6e 64 20 69 66 20 74 68 65 0a 20 20 78 44 65 76  nd if the.  xDev
25d0: 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69  iceCharacteristi
25e0: 63 73 20 6d 65 74 68 6f 64 20 6f 66 20 5b 73 71  cs method of [sq
25f0: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
2600: 5d 20 6f 62 6a 65 63 74 20 66 6f 72 0a 20 20 61  ] object for.  a
2610: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 72   database file r
2620: 65 70 6f 72 74 73 20 28 76 69 61 20 6f 6e 65 20  eports (via one 
2630: 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 49  of the [SQLITE_I
2640: 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 20 62 69 74  OCAP_ATOMIC] bit
2650: 73 29 0a 20 20 74 68 61 74 20 74 68 65 20 66 69  s).  that the fi
2660: 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74  lesystem support
2670: 73 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 20  s atomic writes 
2680: 61 6e 64 20 69 66 20 61 20 74 72 61 6e 73 61 63  and if a transac
2690: 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c 76 65 73 20  tion.  involves 
26a0: 61 20 63 68 61 6e 67 65 20 74 6f 20 6f 6e 6c 79  a change to only
26b0: 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f   a single page o
26c0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
26d0: 69 6c 65 2c 0a 20 20 74 68 65 6e 20 74 68 65 20  ile,.  then the 
26e0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d  transaction comm
26f0: 69 74 73 20 77 69 74 68 20 6a 75 73 74 20 61 20  its with just a 
2700: 73 69 6e 67 6c 65 20 77 72 69 74 65 20 72 65 71  single write req
2710: 75 65 73 74 20 6f 66 0a 20 20 61 20 73 69 6e 67  uest of.  a sing
2720: 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65 20 64  le page of the d
2730: 61 74 61 62 61 73 65 20 61 6e 64 20 6e 6f 20 72  atabase and no r
2740: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20  ollback journal 
2750: 69 73 20 63 72 65 61 74 65 64 0a 20 20 6f 72 20  is created.  or 
2760: 77 72 69 74 74 65 6e 2e 20 20 4f 6e 20 66 69 6c  written.  On fil
2770: 65 73 79 73 74 65 6d 73 20 74 68 61 74 20 73 75  esystems that su
2780: 70 70 6f 72 74 20 61 74 6f 6d 69 63 20 77 72 69  pport atomic wri
2790: 74 65 73 2c 20 74 68 69 73 0a 20 20 6f 70 74 69  tes, this.  opti
27a0: 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 72 65 73  mization can res
27b0: 75 6c 74 20 69 6e 20 73 69 67 6e 69 66 69 63 61  ult in significa
27c0: 6e 74 20 73 70 65 65 64 20 69 6d 70 72 6f 76 65  nt speed improve
27d0: 6d 65 6e 74 73 20 66 6f 72 0a 20 20 73 6d 61 6c  ments for.  smal
27e0: 6c 20 75 70 64 61 74 65 73 2e 20 20 48 6f 77 65  l updates.  Howe
27f0: 76 65 72 2c 20 66 65 77 20 66 69 6c 65 73 79 73  ver, few filesys
2800: 74 65 6d 73 20 73 75 70 70 6f 72 74 20 74 68 69  tems support thi
2810: 73 20 63 61 70 61 62 69 6c 69 74 79 0a 20 20 61  s capability.  a
2820: 6e 64 20 74 68 65 20 63 6f 64 65 20 70 61 74 68  nd the code path
2830: 73 20 74 68 61 74 20 63 68 65 63 6b 20 66 6f 72  s that check for
2840: 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74 79   this capability
2850: 20 73 6c 6f 77 20 64 6f 77 6e 20 77 72 69 74 65   slow down write
2860: 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f  .  performance o
2870: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 6c  n systems that l
2880: 61 63 6b 20 61 74 6f 6d 69 63 20 77 72 69 74 65  ack atomic write
2890: 20 63 61 70 61 62 69 6c 69 74 79 2c 20 73 6f 20   capability, so 
28a0: 74 68 69 73 0a 20 20 66 65 61 74 75 72 65 20 69  this.  feature i
28b0: 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  s disabled by de
28c0: 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  fault..}..COMPIL
28d0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
28e0: 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d  _ENABLE_COLUMN_M
28f0: 45 54 41 44 41 54 41 7d 20 7b 0a 20 20 57 68 65  ETADATA} {.  Whe
2900: 6e 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  n this C-preproc
2910: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
2920: 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 20 69  efined, SQLite i
2930: 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a 20 20 61  ncludes some.  a
2940: 64 64 69 74 69 6f 6e 61 6c 20 41 50 49 73 20 74  dditional APIs t
2950: 68 61 74 20 70 72 6f 76 69 64 65 20 63 6f 6e 76  hat provide conv
2960: 65 6e 69 65 6e 74 20 61 63 63 65 73 73 20 74 6f  enient access to
2970: 20 6d 65 74 61 2d 64 61 74 61 20 61 62 6f 75 74   meta-data about
2980: 0a 20 20 74 61 62 6c 65 73 20 61 6e 64 20 71 75  .  tables and qu
2990: 65 72 69 65 73 2e 20 20 54 68 65 20 41 50 49 73  eries.  The APIs
29a0: 20 74 68 61 74 20 61 72 65 20 65 6e 61 62 6c 65   that are enable
29b0: 64 20 62 79 20 74 68 69 73 20 6f 70 74 69 6f 6e  d by this option
29c0: 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20   are:..  <ul>.  
29d0: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
29e0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
29f0: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
2a00: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
2a10: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
2a20: 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  16()] </li>.  <l
2a30: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
2a40: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 29 5d  mn_table_name()]
2a50: 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73   </li>.  <li> [s
2a60: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
2a70: 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  ble_name16()] </
2a80: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
2a90: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
2aa0: 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a  n_name()] </li>.
2ab0: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
2ac0: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
2ad0: 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  me16()] </li>.  
2ae0: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 74 61  <li> [sqlite3_ta
2af0: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
2b00: 61 74 61 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ata()] </li>.  <
2b10: 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  /ul>.}..COMPILE_
2b20: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
2b30: 4e 41 42 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20  NABLE_FTS3} {.  
2b40: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
2b50: 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74   is defined in t
2b60: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
2b70: 5d 2c 20 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f  ], version 3.  o
2b80: 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20  f the full-text 
2b90: 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73  search engine is
2ba0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
2bb0: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
2bc0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
2bd0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
2be0: 42 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48  BLE_FTS3_PARENTH
2bf0: 45 53 49 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ESIS} {.  This o
2c00: 70 74 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74  ption modifies t
2c10: 68 65 20 71 75 65 72 79 20 70 61 74 74 65 72 6e  he query pattern
2c20: 20 70 61 72 73 65 72 20 69 6e 20 46 54 53 33 20   parser in FTS3 
2c30: 73 75 63 68 20 74 68 61 74 20 69 74 0a 20 20 73  such that it.  s
2c40: 75 70 70 6f 72 74 73 20 6f 70 65 72 61 74 6f 72  upports operator
2c50: 73 20 41 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69  s AND and NOT (i
2c60: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  n addition to th
2c70: 65 20 75 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e  e usual OR and N
2c80: 45 41 52 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20  EAR).  and also 
2c90: 61 6c 6c 6f 77 73 20 71 75 65 72 79 20 65 78 70  allows query exp
2ca0: 72 65 73 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74  ressions to cont
2cb0: 61 69 6e 20 6e 65 73 74 65 64 20 70 61 72 65 6e  ain nested paren
2cc0: 74 68 65 73 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d  thesesis..}..COM
2cd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
2ce0: 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 7d 20  ITE_ENABLE_ICU} 
2cf0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
2d00: 63 61 75 73 65 73 20 74 68 65 20 0a 20 20 3c 61  causes the .  <a
2d10: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77   href="http://ww
2d20: 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f 72  w.icu-project.or
2d30: 67 2f 22 3e 49 6e 74 65 72 6e 61 74 69 6f 6e 61  g/">Internationa
2d40: 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72  l Components for
2d50: 20 55 6e 69 63 6f 64 65 3c 2f 61 3e 0a 20 20 6f   Unicode</a>.  o
2d60: 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f  r "ICU" extensio
2d70: 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62  n to SQLite to b
2d80: 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62  e added to the b
2d90: 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49  uild.  .}..COMPI
2da0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
2db0: 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45  E_ENABLE_IOTRACE
2dc0: 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20  } {.  When both 
2dd0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2de0: 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64  and the [Command
2df0: 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d   Line Interface]
2e00: 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20   (CLI) are both 
2e10: 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  .  compiled with
2e20: 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68   this option, th
2e30: 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69  en the CLI provi
2e40: 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d  des an extra com
2e50: 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69  mand.  named ".i
2e60: 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f  otrace" that pro
2e70: 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65  vides a low-leve
2e80: 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74  l log of I/O act
2e90: 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70  ivity..  This op
2ea0: 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65  tion is experime
2eb0: 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20  ntal and may be 
2ec0: 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20  discontinued in 
2ed0: 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  a future release
2ee0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2ef0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
2f00: 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45  LE_LOCKING_STYLE
2f10: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
2f20: 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69  n enables additi
2f30: 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68  onal logic in th
2f40: 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c  e OS interface l
2f50: 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f  ayer for.  Mac O
2f60: 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f  S X. The additio
2f70: 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70  nal logic attemp
2f80: 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ts to determine 
2f90: 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a  the type of the.
2fa0: 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c    underlying fil
2fb0: 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f  esystem and choo
2fc0: 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69  se and alternati
2fd0: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74  ve locking strat
2fe0: 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73  egy.  that works
2ff0: 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74   correctly for t
3000: 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74  hat filesystem t
3010: 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e  ype. Five lockin
3020: 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20  g strategies .  
3030: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a  are available:..
3040: 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20    <ul>.    <li> 
3050: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
3060: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65  yle. This is the
3070: 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67   default locking
3080: 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20   style and the. 
3090: 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73          style us
30a0: 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e  ed by other (non
30b0: 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65   Mac OS X) Unixe
30c0: 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74  s. Locks are obt
30d0: 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20  ained and .     
30e0: 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69      released usi
30f0: 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73  ng the fcntl() s
3100: 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20  ystem call...   
3110: 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e   <li> AFP lockin
3120: 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f  g style. This lo
3130: 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75  cking style is u
3140: 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20  sed for network 
3150: 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73  file .         s
3160: 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20  ystems that use 
3170: 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46  the AFP (Apple F
3180: 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20  iling Protocol) 
3190: 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a  protocol. Locks.
31a0: 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74           are obt
31b0: 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67  ained by calling
31c0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e   the library fun
31d0: 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c  ction _AFPFSSetL
31e0: 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e  ock()...    <li>
31f0: 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73   Flock locking s
3200: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73  tyle. This is us
3210: 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74  ed for file-syst
3220: 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a  ems that do not.
3230: 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74           support
3240: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
3250: 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20  tyle. Locks are 
3260: 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c  obtained and rel
3270: 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20  eased using.    
3280: 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29       the flock()
3290: 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20   system call... 
32a0: 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65     <li> Dot-file
32b0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
32c0: 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79  This locking sty
32d0: 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20  le is used when 
32e0: 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20  neither.        
32f0: 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58   flock nor POSIX
3300: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20   locking styles 
3310: 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79  are supported by
3320: 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d   the file system
3330: 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62  ..         Datab
3340: 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62  ase locks are ob
3350: 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69  tained by creati
3360: 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20  ng and entry in 
3370: 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a  the file-system.
3380: 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65           at a we
3390: 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f  ll-known locatio
33a0: 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68  n relative to th
33b0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
33c0: 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20  (a "dot-file"). 
33d0: 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69          and reli
33e0: 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65  nquished by dele
33f0: 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69  ting the same fi
3400: 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f  le...    <li> No
3410: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
3420: 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61  If none of the a
3430: 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70  bove can be supp
3440: 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20  orted, this .   
3450: 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74        locking st
3460: 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20  yle is used. No 
3470: 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67  database locking
3480: 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73   mechanism is us
3490: 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20  ed. When.       
34a0: 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73    this system is
34b0: 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20   used it is not 
34c0: 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c  safe for a singl
34d0: 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65  e database to be
34e0: 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73  .         access
34f0: 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63  ed by multiple c
3500: 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a  lients..  </ul>.
3510: 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c  .  Additionally,
3520: 20 66 69 76 65 20 65 78 74 72 61 20 56 46 53 20   five extra VFS 
3530: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
3540: 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73 20  are provided as 
3550: 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64 65  well as the.  de
3560: 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69 66  fault. By specif
3570: 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20  ying one of the 
3580: 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65 6d  extra VFS implem
3590: 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68 65  entations .  whe
35a0: 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74  n calling [sqlit
35b0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61  e3_open_v2()], a
35c0: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61  n application ma
35d0: 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69 6c  y bypass the fil
35e0: 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65 63  e-system.  detec
35f0: 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65  tion logic and e
3600: 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63 74  xplicitly select
3610: 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76   one of the abov
3620: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73  e locking styles
3630: 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78 74  . The.  five ext
3640: 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74  ra VFS implement
3650: 61 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65  ations are calle
3660: 64 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20  d "unix-posix", 
3670: 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22 75  "unix-afp",.  "u
3680: 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69  nix-flock", "uni
3690: 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20 22  x-dotfile" and "
36a0: 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43  unix-none"..}..C
36b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
36c0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
36d0: 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20  ORY_MANAGEMENT} 
36e0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
36f0: 61 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63  adds extra logic
3700: 20 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20   to SQLite that 
3710: 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c  allows it to rel
3720: 65 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65  ease unused.  me
3730: 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73  mory upon reques
3740: 74 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  t.  This option 
3750: 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20  must be enabled 
3760: 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65  in order for the
3770: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65  .  [sqlite3_rele
3780: 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e  ase_memory()] in
3790: 74 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e  terface to work.
37a0: 20 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c    If this compil
37b0: 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20  e-time.  option 
37c0: 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65  is not used, the
37d0: 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73   [sqlite3_releas
37e0: 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65  e_memory()] inte
37f0: 72 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f  rface is a .  no
3800: 2d 6f 70 2e 20 20 53 69 6e 63 65 20 5b 73 71 6c  -op.  Since [sql
3810: 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c  ite3_soft_heap_l
3820: 69 6d 69 74 28 29 5d 20 64 65 70 65 6e 64 73 20  imit()] depends 
3830: 6f 6e 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65  on.  [sqlite3_re
3840: 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 2c  lease_memory()],
3850: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
3860: 61 6c 73 6f 20 6e 65 63 65 73 73 61 72 79 20 66  also necessary f
3870: 6f 72 0a 20 20 74 68 65 20 63 6f 72 72 65 63 74  or.  the correct
3880: 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 5b 73   operation of [s
3890: 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70  qlite3_soft_heap
38a0: 5f 6c 69 6d 69 74 28 29 5d 2e 0a 7d 0a 0a 43 4f  _limit()]..}..CO
38b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
38c0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
38d0: 59 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  YS3} {.  This op
38e0: 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f  tion includes co
38f0: 64 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61  de in SQLite tha
3900: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20  t implements an 
3910: 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65  alternative.  me
3920: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20  mory allocator. 
3930: 20 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76   This alternativ
3940: 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
3950: 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67  or is only engag
3960: 65 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53  ed.  when the [S
3970: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41  QLITE_CONFIG_HEA
3980: 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71  P] option to [sq
3990: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
39a0: 69 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70  is used to.  sup
39b0: 70 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e  ply a large chun
39c0: 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d  k of memory from
39d0: 20 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72   which all memor
39e0: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72  y allocations ar
39f0: 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65  e.  taken..  The
3a00: 20 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20   MEMSYS3 memory 
3a10: 61 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61  allocator uses a
3a20: 20 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69   hybrid allocati
3a30: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20  on algorithm .  
3a40: 70 61 74 74 65 72 6e 65 64 20 61 66 74 65 72 20  patterned after 
3a50: 64 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e  dlmalloc().   On
3a60: 6c 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45  ly one of SQLITE
3a70: 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20  _ENABLE_MEMSYS3 
3a80: 61 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e  and .  SQLITE_EN
3a90: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79  ABLE_MEMSYS5 may
3aa0: 20 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f   be enabled at o
3ab0: 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  nce..}..COMPILE_
3ac0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
3ad0: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b  NABLE_MEMSYS5} {
3ae0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
3af0: 6e 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20  ncludes code in 
3b00: 53 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c  SQLite that impl
3b10: 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e  ements an altern
3b20: 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61  ative.  memory a
3b30: 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20  llocator.  This 
3b40: 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f  alternative memo
3b50: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ry allocator is 
3b60: 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77  only engaged.  w
3b70: 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  hen the [SQLITE_
3b80: 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74  CONFIG_HEAP] opt
3b90: 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ion to [sqlite3_
3ba0: 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65  config()] is use
3bb0: 64 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20  d to.  supply a 
3bc0: 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d  large chunk of m
3bd0: 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68  emory from which
3be0: 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   all memory allo
3bf0: 63 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61  cations are.  ta
3c00: 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59  ken..  The MEMSY
3c10: 53 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73  S5 module rounds
3c20: 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73   all allocations
3c30: 20 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20   up to the next 
3c40: 70 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61  power.  of two a
3c50: 6e 64 20 75 73 65 73 20 61 20 66 69 72 73 74 2d  nd uses a first-
3c60: 66 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63  fit, buddy-alloc
3c70: 61 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20  ator algorithm. 
3c80: 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 73   that provides s
3c90: 74 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73  trong guarantees
3ca0: 20 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e   against fragmen
3cb0: 74 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b  tation and break
3cc0: 64 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74  down.  subject t
3cd0: 6f 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74  o certain operat
3ce0: 69 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e  ing constraints.
3cf0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3d00: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
3d10: 45 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68 69  E_RTREE} {.  Thi
3d20: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
3d30: 53 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75 64  SQLite to includ
3d40: 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  e support for th
3d50: 65 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54  e.  [rtree | R*T
3d60: 72 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e 73  ree index extens
3d70: 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ion]..}..COMPILE
3d80: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3d90: 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45  ENABLE_UPDATE_DE
3da0: 4c 45 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20  LETE_LIMIT} {.  
3db0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62  This option enab
3dc0: 6c 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20  les an optional 
3dd0: 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d  ORDER BY and LIM
3de0: 49 54 20 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20  IT clause on .  
3df0: 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45  [UPDATE] and [DE
3e00: 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73  LETE] statements
3e10: 2e 0a 0a 20 20 3c 70 3e 49 66 20 74 68 69 73 20  ...  <p>If this 
3e20: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
3e30: 64 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20  d, then it must 
3e40: 61 6c 73 6f 20 62 65 20 0a 20 20 64 65 66 69 6e  also be .  defin
3e50: 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68  ed when using th
3e60: 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74  e 'lemon' tool t
3e70: 6f 20 67 65 6e 65 72 61 74 65 20 61 20 70 61 72  o generate a par
3e80: 73 65 2e 63 0a 20 20 66 69 6c 65 2e 20 42 65 63  se.c.  file. Bec
3e90: 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68  ause of this, th
3ea0: 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e  is option may on
3eb0: 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e 20  ly be used when 
3ec0: 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 62  the library is b
3ed0: 75 69 6c 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72  uilt.  from sour
3ee0: 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65  ce, not from the
3ef0: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20   [amalgamation] 
3f00: 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c  or from the coll
3f10: 65 63 74 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d  ection of.  pre-
3f20: 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73  packaged C files
3f30: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f   provided for no
3f40: 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74  n-Unix like plat
3f50: 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62  forms on the web
3f60: 73 69 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a  site..  </p>.}..
3f70: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3f80: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e  SQLITE_ENABLE_UN
3f90: 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20  LOCK_NOTIFY} {. 
3fa0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
3fb0: 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65  bles the [sqlite
3fc0: 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28  3_unlock_notify(
3fd0: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64  )] interface and
3fe0: 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  .  its associate
3ff0: 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  d functionality.
4000: 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65    See the docume
4010: 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20  ntation titled. 
4020: 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51 4c 69   [Using the SQLi
4030: 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69  te Unlock Notifi
4040: 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65 5d 20  cation Feature] 
4050: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20  for additional. 
4060: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a   information..}.
4070: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4080: 7b 59 59 54 52 41 43 4b 4d 41 58 53 54 41 43 4b  {YYTRACKMAXSTACK
4090: 44 45 50 54 48 7d 20 7b 0a 20 20 54 68 69 73 20  DEPTH} {.  This 
40a0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
40b0: 65 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72  e LALR(1) parser
40c0: 20 73 74 61 63 6b 20 64 65 70 74 68 20 74 6f 20   stack depth to 
40d0: 62 65 20 74 72 61 63 6b 65 64 0a 20 20 61 6e 64  be tracked.  and
40e0: 20 72 65 70 6f 72 74 65 64 20 75 73 69 6e 67 20   reported using 
40f0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 61  the [sqlite3_sta
4100: 74 75 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41  tus]([SQLITE_STA
4110: 54 55 53 5f 50 41 52 53 45 52 5f 53 54 41 43 4b  TUS_PARSER_STACK
4120: 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61  ],...).  interfa
4130: 63 65 2e 20 20 53 51 4c 69 74 65 27 73 20 4c 41  ce.  SQLite's LA
4140: 4c 52 28 31 29 20 70 61 72 73 65 72 20 68 61 73  LR(1) parser has
4150: 20 61 20 66 69 78 65 64 20 73 74 61 63 6b 20 64   a fixed stack d
4160: 65 70 74 68 0a 20 20 28 64 65 74 65 72 6d 69 6e  epth.  (determin
4170: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
4180: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 59 59  me using the [YY
4190: 53 54 41 43 4b 44 45 50 54 48 5d 20 6f 70 74 69  STACKDEPTH] opti
41a0: 6f 6e 73 29 2e 0a 20 20 54 68 69 73 20 6f 70 74  ons)..  This opt
41b0: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
41c0: 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e  to help determin
41d0: 65 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74  e if an applicat
41e0: 69 6f 6e 20 69 73 0a 20 20 67 65 74 74 69 6e 67  ion is.  getting
41f0: 20 63 6c 6f 73 65 20 74 6f 20 65 78 63 65 65 64   close to exceed
4200: 69 6e 67 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ing the maximum 
4210: 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 64 65  LALR(1) stack de
4220: 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  pth..}.</tcl>..<
4230: 61 20 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65 66  a name="disablef
4240: 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68  eatures"></a>.<h
4250: 32 3e 31 2e 35 20 4f 70 74 69 6f 6e 73 20 54 6f  2>1.5 Options To
4260: 20 44 69 73 61 62 6c 65 20 46 65 61 74 75 72 65   Disable Feature
4270: 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65  s Normally Turne
4280: 64 20 4f 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  d On</h2>..<tcl>
4290: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
42a0: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
42b0: 4c 46 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  LFS} {.  If this
42c0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
42d0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
42e0: 2c 20 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70  , large file sup
42f0: 70 6f 72 74 0a 20 20 69 73 20 64 69 73 61 62 6c  port.  is disabl
4300: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
4310: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
4320: 53 41 42 4c 45 5f 44 49 52 53 59 4e 43 7d 20 7b  SABLE_DIRSYNC} {
4330: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
4340: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
4350: 69 73 20 64 65 66 69 6e 65 64 2c 20 64 69 72 65  is defined, dire
4360: 63 74 6f 72 79 20 73 79 6e 63 73 0a 20 20 61 72  ctory syncs.  ar
4370: 65 20 64 69 73 61 62 6c 65 64 2e 20 20 53 51 4c  e disabled.  SQL
4380: 69 74 65 20 74 79 70 69 63 61 6c 6c 79 20 61 74  ite typically at
4390: 74 65 6d 70 74 73 20 74 6f 20 73 79 6e 63 20 74  tempts to sync t
43a0: 68 65 20 70 61 72 65 6e 74 0a 20 20 64 69 72 65  he parent.  dire
43b0: 63 74 6f 72 79 20 77 68 65 6e 20 61 20 66 69 6c  ctory when a fil
43c0: 65 20 69 73 20 64 65 6c 65 74 65 64 20 74 6f 20  e is deleted to 
43d0: 65 6e 73 75 72 65 20 74 68 65 20 64 69 72 65 63  ensure the direc
43e0: 74 6f 72 79 0a 20 20 65 6e 74 72 69 65 73 20 61  tory.  entries a
43f0: 72 65 20 75 70 64 61 74 65 64 20 69 6d 6d 65 64  re updated immed
4400: 69 61 74 65 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a  iately on disk..
4410: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a  }.</tcl>..<tcl>.
4420: 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f    hd_fragment "o
4430: 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20 20 68  mitfeatures".  h
4440: 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74  d_keywords "omit
4450: 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e  features".</tcl>
4460: 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73  .<h2>1.6 Options
4470: 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65   To Omit Feature
4480: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66  s</h2>..<p>The f
4490: 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73  ollowing options
44a0: 20 63 61 6e 20 75 73 65 64 20 74 6f 20 72 65 64   can used to red
44b0: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
44c0: 74 68 65 20 63 6f 6d 70 69 6c 65 64 0a 6c 69 62  the compiled.lib
44d0: 72 61 72 79 20 62 79 20 6f 6d 69 74 74 69 6e 67  rary by omitting
44e0: 20 6f 70 74 69 6f 6e 61 6c 20 66 65 61 74 75 72   optional featur
44f0: 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62  es. This is prob
4500: 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c  ably only useful
4510: 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73  .in embedded sys
4520: 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65  tems where space
4530: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74   is especially t
4540: 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69  ight, as even wi
4550: 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20  th all.features 
4560: 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c  included the SQL
4570: 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72  ite library is r
4580: 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e  elatively small.
4590: 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f   Don't forget.to
45a0: 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69   tell your compi
45b0: 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  ler to optimize 
45c0: 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21  for binary size!
45d0: 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e   (the -Os option
45e0: 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20   if.using GCC). 
45f0: 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f   Telling your co
4600: 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69  mpiler to optimi
4610: 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61  ze for size usua
4620: 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c  lly has.a much l
4630: 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20  arger impact on 
4640: 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e  library footprin
4650: 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67  t than employing
4660: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f   any of these.co
4670: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
4680: 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20  ns.  You should 
4690: 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74  also verify that
46a0: 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75   .<a href="#debu
46b0: 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67  goptions">debugg
46c0: 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20  ing options</a> 
46d0: 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70  are disabled.</p
46e0: 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73  >..<p>The macros
46f0: 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e   in this section
4700: 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20   do not require 
4710: 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c  values. The foll
4720: 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69  owing .compilati
4730: 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20  on switches all 
4740: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66  have the same ef
4750: 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49  fect:<br>.-DSQLI
4760: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
4770: 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  LE<br>.-DSQLITE_
4780: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
4790: 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  1<br>.-DSQLITE_O
47a0: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30  MIT_ALTERTABLE=0
47b0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79  .</p>..<p>If any
47c0: 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e   of these option
47d0: 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74  s are defined, t
47e0: 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74  hen the same set
47f0: 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f   of SQLITE_OMIT_
4800: 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61  *.options must a
4810: 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77  lso be defined w
4820: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c  hen using the 'l
4830: 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65  emon' tool to ge
4840: 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65  nerate the.parse
4850: 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e  .c file and when
4860: 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27   compiling the '
4870: 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74  mkkeywordhash' t
4880: 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61  ool which genera
4890: 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64  tes .the keyword
48a0: 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63  hash.h file..Bec
48b0: 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68  ause of this, th
48c0: 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ese options may 
48d0: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
48e0: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
48f0: 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f   built.from cano
4900: 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f  nical source, no
4910: 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c  t from the [amal
4920: 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f  gamation] or fro
4930: 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  m the collection
4940: 20 6f 66 0a 70 72 65 2d 70 61 63 6b 61 67 65 64   of.pre-packaged
4950: 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65   C files provide
4960: 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c  d for non-Unix l
4970: 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e  ike platforms on
4980: 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 41 6e   the website..An
4990: 79 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  y SQLITE_OMIT_* 
49a0: 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 63 61  options which ca
49b0: 6e 20 62 65 20 75 73 65 64 20 64 69 72 65 63 74  n be used direct
49c0: 6c 79 20 77 69 74 68 20 74 68 65 20 5b 61 6d 61  ly with the [ama
49d0: 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a 61 72 65 20  lgamation] .are 
49e0: 6c 69 73 74 65 64 20 62 65 6c 6f 77 2c 20 68 6f  listed below, ho
49f0: 77 65 76 65 72 2c 20 74 68 65 20 77 61 72 6e 69  wever, the warni
4a00: 6e 67 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  ngs in the follo
4a10: 77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20 73  wing paragraph s
4a20: 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65 64 2e 0a  hould be noted..
4a30: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
4a40: 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61  e>.<i><b>Importa
4a50: 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65  nt Note:</b> The
4a60: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
4a70: 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 77 6f  ptions do not wo
4a80: 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61  rk with the.[ama
4a90: 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 77 69  lgamation] or wi
4aa0: 74 68 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20  th pre-packaged 
4ab0: 43 20 63 6f 64 65 20 66 69 6c 65 73 2e 20 20 53  C code files.  S
4ac0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d  QLITE_OMIT_* com
4ad0: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
4ae0: 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 63 6f 72 72  s only work corr
4af0: 65 63 74 6c 79 20 77 68 65 6e 20 53 51 4c 69 74  ectly when SQLit
4b00: 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d 20  e is built from 
4b10: 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65  canonical source
4b20: 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f 62   files..</i>.</b
4b30: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70 3e  lockquote>...<p>
4b40: 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e 73  Special versions
4b50: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 61   of the SQLite a
4b60: 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61 74  malgamation that
4b70: 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61 0a   do work with a.
4b80: 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73 65  predetermined se
4b90: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
4ba0: 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62  _* options can b
4bb0: 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54 6f  e generated.  To
4bc0: 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20 63   do so,.make a c
4bd0: 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65 66  opy of the Makef
4be0: 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d 61  ile.linux-gcc ma
4bf0: 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65 20  kefile template 
4c00: 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c  in the canonical
4c10: 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69 73  .source code dis
4c20: 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61 6e  tribution.  Chan
4c30: 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79  ge the name of y
4c40: 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d 70  our copy to simp
4c50: 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a 54  ly "Makefile"..T
4c60: 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66 69  hen edit "Makefi
4c70: 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20 61 70  le" to set up ap
4c80: 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69 6c  propriate compil
4c90: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20  e-time options. 
4ca0: 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62 6c 6f   Then.type:.<blo
4cb0: 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61 6b 65  ckquote><tt>make
4cc0: 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c   clean; make sql
4cd0: 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62 6c 6f  ite3.c</tt></blo
4ce0: 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72 65 73  ckquote>.The res
4cf0: 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33 2e  ulting "sqlite3.
4d00: 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  c" amalgamation 
4d10: 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20 69  code file (and i
4d20: 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68 65  ts associated.he
4d30: 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69 74  ader file "sqlit
4d40: 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e 20  e3.h") can then 
4d50: 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 6f  be moved to a no
4d60: 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d 0a  n-unix platform.
4d70: 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69 6c  for final compil
4d80: 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e 61  ation using a na
4d90: 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c 2f  tive compiler.</
4da0: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c  p>..<p>.The foll
4db0: 6f 77 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49  owing SQLITE_OMI
4dc0: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  T_* options are 
4dd0: 61 76 61 69 6c 61 62 6c 65 3a 0a 3c 2f 70 3e 0a  available:.</p>.
4de0: 0a 3c 70 3e 3c 74 61 62 6c 65 3e 0a 20 20 3c 74  .<p><table>.  <t
4df0: 72 3e 0a 20 20 20 20 3c 74 64 3e 0a 20 20 20 20  r>.    <td>.    
4e00: 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c    <ul>.        <
4e10: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  li> [SQLITE_OMIT
4e20: 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 5d 20  _AUTHORIZATION] 
4e30: 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c  </li>.        <l
4e40: 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  i> [SQLITE_OMIT_
4e50: 41 55 54 4f 49 4e 49 54 5d 20 3c 2f 6c 69 3e 0a  AUTOINIT] </li>.
4e60: 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51          <li> [SQ
4e70: 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45  LITE_OMIT_BETWEE
4e80: 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 5d 20  N_OPTIMIZATION] 
4e90: 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c  </li>.        <l
4ea0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  i> [SQLITE_OMIT_
4eb0: 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 5d 20 3c 2f  BLOB_LITERAL] </
4ec0: 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e  li>.        <li>
4ed0: 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55   [SQLITE_OMIT_BU
4ee0: 49 4c 54 49 4e 5f 54 45 53 54 5d 20 3c 2f 6c 69  ILTIN_TEST] </li
4ef0: 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b  >.        <li> [
4f00: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43  SQLITE_OMIT_CHEC
4f10: 4b 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20  K] </li>.       
4f20: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d   <li> [SQLITE_OM
4f30: 49 54 5f 43 4f 4d 50 4c 45 54 45 5d 20 3c 2f 6c  IT_COMPLETE] </l
4f40: 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 20  i>.        <li> 
4f50: 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54  [SQLITE_OMIT_DAT
4f60: 45 54 49 4d 45 5f 46 55 4e 43 53 5d 20 3c 2f 6c  ETIME_FUNCS] </l
4f70: 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 20  i>.        <li> 
4f80: 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43  [SQLITE_OMIT_DEC
4f90: 4c 54 59 50 45 5d 20 3c 2f 6c 69 3e 0a 20 20 20  LTYPE] </li>.   
4fa0: 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51 4c 49 54       <li> [SQLIT
4fb0: 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45  E_OMIT_DEPRECATE
4fc0: 44 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20  D] </li>.       
4fd0: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d   <li> [SQLITE_OM
4fe0: 49 54 5f 44 49 53 4b 49 4f 5d 20 3c 2f 6c 69 3e  IT_DISKIO] </li>
4ff0: 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53  .        <li> [S
5000: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f  QLITE_OMIT_FLAG_
5010: 50 52 41 47 4d 41 53 5d 20 3c 2f 6c 69 3e 0a 20  PRAGMAS] </li>. 
5020: 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51 4c         <li> [SQL
5030: 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e  ITE_OMIT_FLOATIN
5040: 47 5f 50 4f 49 4e 54 5d 20 3c 2f 6c 69 3e 0a 20  G_POINT] </li>. 
5050: 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51 4c         <li> [SQL
5060: 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42  ITE_OMIT_GET_TAB
5070: 4c 45 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20  LE] </li>.      
5080: 20 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f    <li> [SQLITE_O
5090: 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 5d 20 3c 2f  MIT_INCRBLOB] </
50a0: 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e  li>.        <li>
50b0: 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e   [SQLITE_OMIT_IN
50c0: 54 45 47 52 49 54 59 5f 43 48 45 43 4b 5d 20 3c  TEGRITY_CHECK] <
50d0: 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69  /li>.        <li
50e0: 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  > [SQLITE_OMIT_L
50f0: 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  IKE_OPTIMIZATION
5100: 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f  ] </li>.      </
5110: 75 6c 3e 0a 20 20 20 20 3c 2f 74 64 3e 0a 20 20  ul>.    </td>.  
5120: 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 3c 75 6c    <td>.      <ul
5130: 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b  >.        <li> [
5140: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44  SQLITE_OMIT_LOAD
5150: 5f 45 58 54 45 4e 53 49 4f 4e 5d 20 3c 2f 6c 69  _EXTENSION] </li
5160: 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b  >.        <li> [
5170: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41  SQLITE_OMIT_LOCA
5180: 4c 54 49 4d 45 5d 20 3c 2f 6c 69 3e 0a 20 20 20  LTIME] </li>.   
5190: 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51 4c 49 54       <li> [SQLIT
51a0: 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 5d  E_OMIT_MEMORYDB]
51b0: 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c   </li>.        <
51c0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  li> [SQLITE_OMIT
51d0: 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  _OR_OPTIMIZATION
51e0: 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20  ] </li>.        
51f0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49  <li> [SQLITE_OMI
5200: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 5d  T_PAGER_PRAGMAS]
5210: 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c   </li>.        <
5220: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  li> [SQLITE_OMIT
5230: 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41  _PROGRESS_CALLBA
5240: 43 4b 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20  CK] </li>.      
5250: 20 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f    <li> [SQLITE_O
5260: 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45  MIT_QUICKBALANCE
5270: 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20  ] </li>.        
5280: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49  <li> [SQLITE_OMI
5290: 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53  T_SCHEMA_PRAGMAS
52a0: 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20  ] </li>.        
52b0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49  <li> [SQLITE_OMI
52c0: 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e  T_SCHEMA_VERSION
52d0: 5f 50 52 41 47 4d 41 53 5d 20 3c 2f 6c 69 3e 0a  _PRAGMAS] </li>.
52e0: 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51          <li> [SQ
52f0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44  LITE_OMIT_SHARED
5300: 5f 43 41 43 48 45 5d 20 3c 2f 6c 69 3e 0a 20 20  _CACHE] </li>.  
5310: 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51 4c 49        <li> [SQLI
5320: 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52 59  TE_OMIT_SUBQUERY
5330: 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20  ] </li>.        
5340: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49  <li> [SQLITE_OMI
5350: 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 5d 20  T_TCL_VARIABLE] 
5360: 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c  </li>.        <l
5370: 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  i> [SQLITE_OMIT_
5380: 54 52 41 43 45 5d 20 3c 2f 6c 69 3e 0a 20 20 20  TRACE] </li>.   
5390: 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51 4c 49 54       <li> [SQLIT
53a0: 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
53b0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 5d 20 3c 2f  OPTIMIZATION] </
53c0: 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e  li>.        <li>
53d0: 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54   [SQLITE_OMIT_UT
53e0: 46 31 36 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20  F16] </li>.     
53f0: 20 20 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f     <li> [SQLITE_
5400: 4f 4d 49 54 5f 57 53 44 5d 20 3c 2f 6c 69 3e 0a  OMIT_WSD] </li>.
5410: 20 20 20 20 20 20 20 20 3c 6c 69 3e 20 5b 53 51          <li> [SQ
5420: 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f  LITE_OMIT_XFER_O
5430: 50 54 5d 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20  PT] </li>.      
5440: 3c 2f 75 6c 3e 0a 20 20 20 20 3c 2f 74 64 3e 0a  </ul>.    </td>.
5450: 20 20 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e    </tr>.</table>
5460: 0a 3c 2f 70 3e 0a 0a 0a 3c 70 3e 41 6c 6c 20 6f  .</p>...<p>All o
5470: 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  f the SQLITE_OMI
5480: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  T_* options are 
5490: 75 6e 73 75 70 70 6f 72 74 65 64 2e 3c 2f 70 3e  unsupported.</p>
54a0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
54b0: 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e  i><b>Important N
54c0: 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c  ote:</b>.The SQL
54d0: 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69  ITE_OMIT_* compi
54e0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20  le-time options 
54f0: 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e  are unsupported.
5500: 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  .</i></blockquot
5510: 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53 51 4c 49  e>..<p>.The SQLI
5520: 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c  TE_OMIT_* compil
5530: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61  e-time options a
5540: 72 65 20 75 73 75 61 6c 6c 79 20 75 6e 74 65 73  re usually untes
5550: 74 65 64 20 61 6e 64 0a 61 72 65 20 61 6c 6d 6f  ted and.are almo
5560: 73 74 20 63 65 72 74 61 69 6e 6c 79 20 75 6e 74  st certainly unt
5570: 65 73 74 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61  ested in combina
5580: 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c  tion..Any or all
5590: 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e   of these option
55a0: 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64  s may be removed
55b0: 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 20 69   from the code i
55c0: 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  n future release
55d0: 73 0a 61 6e 64 20 77 69 74 68 6f 75 74 20 77 61  s.and without wa
55e0: 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61 6e 79 20  rning.  For any 
55f0: 70 61 72 74 69 63 75 6c 61 72 20 72 65 6c 65 61  particular relea
5600: 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74 68 65 73  se, some of thes
5610: 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20 63 61  e.options may ca
5620: 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  use compile-time
5630: 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20 66 61 69   or run-time fai
5640: 6c 75 72 65 73 2c 20 70 61 72 74 69 63 75 6c 61  lures, particula
5650: 72 6c 79 0a 77 68 65 6e 20 75 73 65 64 20 69 6e  rly.when used in
5660: 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74   combination wit
5670: 68 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e 73 2e  h other options.
5680: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50  </p>..<tcl>.COMP
5690: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
56a0: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
56b0: 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  LE} {.  When thi
56c0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
56d0: 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54  ned, the .  [ALT
56e0: 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e  ER TABLE] comman
56f0: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
5700: 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62 72  d in the .  libr
5710: 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20 61  ary. Executing a
5720: 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20  n [ALTER TABLE] 
5730: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73  statement causes
5740: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
5750: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5760: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
5770: 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e  NALYZE} {.  When
5780: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
5790: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e  defined, the [AN
57a0: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
57b0: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20  s omitted from. 
57c0: 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43   the build..}..C
57d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
57e0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43  QLITE_OMIT_ATTAC
57f0: 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  H} {.  When this
5800: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
5810: 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48 5d  ed, the [ATTACH]
5820: 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63 6f   and [DETACH] co
5830: 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69  mmands are.  omi
5840: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
5850: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
5860: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
5870: 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f  MIT_AUTHORIZATIO
5880: 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  N} {.  Defining 
5890: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
58a0: 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74  s the authorizat
58b0: 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65 61  ion callback fea
58c0: 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20 20  ture from the.  
58d0: 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73 71  library. The [sq
58e0: 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
58f0: 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e 63  izer()] API func
5900: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73  tion is not pres
5910: 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69 62  ent.  in the lib
5920: 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rary..}..COMPILE
5930: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
5940: 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45  OMIT_AUTOINCREME
5950: 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  NT} {.  This opt
5960: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
5970: 6d 69 74 20 74 68 65 20 0a 20 20 5b 41 55 54 4f  mit the .  [AUTO
5980: 49 4e 43 52 45 4d 45 4e 54 5d 20 66 75 6e 63 74  INCREMENT] funct
5990: 69 6f 6e 61 6c 69 74 79 2e 20 57 68 65 6e 20 74  ionality. When t
59a0: 68 69 73 20 0a 20 20 69 73 20 6d 61 63 72 6f 20  his .  is macro 
59b0: 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75  is defined, colu
59c0: 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20  mns declared as 
59d0: 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49  .  "[INTEGER PRI
59e0: 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e  MARY KEY] AUTOIN
59f0: 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61 76  CREMENT".  behav
5a00: 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61  e in the same wa
5a10: 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63  y as columns dec
5a20: 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45 47  lared as "[INTEG
5a30: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 22  ER PRIMARY KEY]"
5a40: 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20   when a .  NULL 
5a50: 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68 65  is inserted. The
5a60: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
5a70: 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69 73   system table is
5a80: 20 6e 65 69 74 68 65 72 20 63 72 65 61 74 65 64   neither created
5a90: 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74 65  , nor.  respecte
5aa0: 64 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20  d if it already 
5ab0: 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  exists..}..COMPI
5ac0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5ad0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d  E_OMIT_AUTOINIT}
5ae0: 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72   {.  For backwar
5af0: 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ds compatibility
5b00: 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73   with older vers
5b10: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74  ions of SQLite t
5b20: 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b  hat lack.  the [
5b30: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
5b40: 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c  ze()] interface,
5b50: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e   the [sqlite3_in
5b60: 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65  itialize()] inte
5b70: 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65  rface.  is calle
5b80: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
5b90: 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65  upon entry to ce
5ba0: 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66  rtain key interf
5bb0: 61 63 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b  aces such as.  [
5bc0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c  sqlite3_open()],
5bd0: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65   [sqlite3_vfs_re
5be0: 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b  gister()], and [
5bf0: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
5c00: 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65  )]..  The overhe
5c10: 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b  ad of invoking [
5c20: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
5c30: 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61  ze()] automatica
5c40: 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61  lly in this.  wa
5c50: 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  y may be omitted
5c60: 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c   by building SQL
5c70: 69 74 65 20 77 69 74 68 20 74 68 65 20 53 51 4c  ite with the SQL
5c80: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
5c90: 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73  T.  C-preprocess
5ca0: 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20  or macro.  When 
5cb0: 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49  built using SQLI
5cc0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
5cd0: 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20  , SQLite.  will 
5ce0: 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  not automaticall
5cf0: 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73  y initialize its
5d00: 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c  elf and the appl
5d10: 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69  ication is requi
5d20: 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20  red.  to invoke 
5d30: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
5d40: 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20  ize()] directly 
5d50: 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69  prior to beginni
5d60: 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20  ng use of the.  
5d70: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a  SQLite library..
5d80: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5d90: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
5da0: 55 54 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49  UTOVACUUM} {.  I
5db0: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
5dc0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69   defined, the li
5dd0: 62 72 61 72 79 20 63 61 6e 6e 6f 74 20 63 72 65  brary cannot cre
5de0: 61 74 65 20 6f 72 20 77 72 69 74 65 20 74 6f 20  ate or write to 
5df0: 0a 20 20 64 61 74 61 62 61 73 65 73 20 74 68 61  .  databases tha
5e00: 74 20 73 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f  t support [auto_
5e10: 76 61 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75  vacuum]..  Execu
5e20: 74 69 6e 67 20 61 20 5b 50 52 41 47 4d 41 20 61  ting a [PRAGMA a
5e30: 75 74 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61 74  uto_vacuum] stat
5e40: 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20  ement is not an 
5e50: 65 72 72 6f 72 0a 20 20 28 73 69 6e 63 65 20 75  error.  (since u
5e60: 6e 6b 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20 61  nknown PRAGMAs a
5e70: 72 65 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f  re silently igno
5e80: 72 65 64 29 2c 20 62 75 74 20 64 6f 65 73 20 6e  red), but does n
5e90: 6f 74 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75  ot return a valu
5ea0: 65 0a 20 20 6f 72 20 6d 6f 64 69 66 79 20 74 68  e.  or modify th
5eb0: 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c  e auto-vacuum fl
5ec0: 61 67 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  ag in the databa
5ed0: 73 65 20 66 69 6c 65 2e 20 49 66 20 61 20 64 61  se file. If a da
5ee0: 74 61 62 61 73 65 20 74 68 61 74 0a 20 20 73 75  tabase that.  su
5ef0: 70 70 6f 72 74 73 20 61 75 74 6f 2d 76 61 63 75  pports auto-vacu
5f00: 75 6d 20 69 73 20 6f 70 65 6e 65 64 20 62 79 20  um is opened by 
5f10: 61 20 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c  a library compil
5f20: 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 70 74  ed with this opt
5f30: 69 6f 6e 2c 20 69 74 0a 20 20 69 73 20 61 75 74  ion, it.  is aut
5f40: 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65  omatically opene
5f50: 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d  d in read-only m
5f60: 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ode..}..COMPILE_
5f70: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
5f80: 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49  MIT_BETWEEN_OPTI
5f90: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68  MIZATION} {.  Th
5fa0: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
5fb0: 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 69 6e  es the use of in
5fc0: 64 69 63 65 73 20 77 69 74 68 20 57 48 45 52 45  dices with WHERE
5fd0: 20 63 6c 61 75 73 65 20 74 65 72 6d 73 0a 20 20   clause terms.  
5fe0: 74 68 61 74 20 65 6d 70 6c 6f 79 20 74 68 65 20  that employ the 
5ff0: 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72  BETWEEN operator
6000: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6010: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
6020: 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b  _BLOB_LITERAL} {
6030: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
6040: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
6050: 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  it is not possib
6060: 6c 65 20 74 6f 20 73 70 65 63 69 66 79 20 61 20  le to specify a 
6070: 62 6c 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c  blob in.  an SQL
6080: 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67   statement using
6090: 20 74 68 65 20 58 27 41 42 43 44 27 20 73 79 6e   the X'ABCD' syn
60a0: 74 61 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tax..}..COMPILE_
60b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
60c0: 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54  MIT_BUILTIN_TEST
60d0: 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64  } {.  A standard
60e0: 20 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e   SQLite build in
60f0: 63 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61  cludes a small a
6100: 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63  mount of logic c
6110: 6f 6e 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74  ontrolled.  by t
6120: 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74  he [sqlite3_test
6130: 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65  _control()] inte
6140: 72 66 61 63 65 20 74 68 61 74 20 69 73 20 75 73  rface that is us
6150: 65 64 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20  ed to exercise. 
6160: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53 51   parts of the SQ
6170: 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74 20 61  Lite core that a
6180: 72 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20  re difficult to 
6190: 63 6f 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73  control and meas
61a0: 75 72 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20  ure using.  the 
61b0: 73 74 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54  standard API.  T
61c0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
61d0: 20 74 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74   that built-in t
61e0: 65 73 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f  est logic..}..CO
61f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
6200: 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20  LITE_OMIT_CAST} 
6210: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6220: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
6230: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
6240: 72 20 74 68 65 20 43 41 53 54 20 6f 70 65 72 61  r the CAST opera
6250: 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tor..}..COMPILE_
6260: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6270: 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54  MIT_CHECK} {.  T
6280: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
6290: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
62a0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45   support for CHE
62b0: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  CK constraints..
62c0: 20 20 54 68 65 20 70 61 72 73 65 72 20 77 69 6c    The parser wil
62d0: 6c 20 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43  l still accept C
62e0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73  HECK constraints
62f0: 20 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   in SQL statemen
6300: 74 73 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20  ts,.  they will 
6310: 6a 75 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f  just not be enfo
6320: 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rced..}..COMPILE
6330: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6340: 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b  OMIT_COMPLETE} {
6350: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
6360: 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74  auses the [sqlit
6370: 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61  e3_complete()] a
6380: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  nd [sqlite3_comp
6390: 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e 74 65  lete16()].  inte
63a0: 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f 6d 69  rfaces to be omi
63b0: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
63c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
63d0: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
63e0: 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LECT} {.  This o
63f0: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
6400: 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f 75   omit the compou
6410: 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63  nd [SELECT] func
6420: 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53  tionality. .  [S
6430: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
6440: 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20 0a  s that use the .
6450: 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41    UNION, UNION A
6460: 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20 6f 72  LL, INTERSECT or
6470: 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64   EXCEPT compound
6480: 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74 6f 72   SELECT operator
6490: 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73 65 20  s will .  cause 
64a0: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d  a parse error..}
64b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
64c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
64d0: 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 7d 20 7b  NFLICT_CLAUSE} {
64e0: 0a 20 20 49 6e 20 74 68 65 20 66 75 74 75 72 65  .  In the future
64f0: 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 77 69  , this option wi
6500: 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 6f 6d  ll be used to om
6510: 69 74 20 74 68 65 20 0a 20 20 5b 4f 4e 20 43 4f  it the .  [ON CO
6520: 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 66  NFLICT] clause f
6530: 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e  rom the library.
6540: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6550: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6560: 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20  DATETIME_FUNCS} 
6570: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
6580: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53  on is defined, S
6590: 51 4c 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e  QLite's built-in
65a0: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d   date and time m
65b0: 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75  anipulation.  fu
65c0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74  nctions are omit
65d0: 74 65 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c  ted. Specificall
65e0: 79 2c 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74  y, the SQL funct
65f0: 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29  ions julianday()
6600: 2c 20 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65  , date(),.  time
6610: 28 29 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61  (), datetime() a
6620: 6e 64 20 73 74 72 66 74 69 6d 65 28 29 20 61 72  nd strftime() ar
6630: 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e  e not available.
6640: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c   The default col
6650: 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52  umn.  values CUR
6660: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
6670: 4e 54 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52  NT_DATE and CURR
6680: 45 4e 54 5f 44 41 54 45 54 49 4d 45 20 61 72 65  ENT_DATETIME are
6690: 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65   still available
66a0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
66b0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
66c0: 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54  _DECLTYPE} {.  T
66d0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
66e0: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
66f0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
6700: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
6710: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61  mn_decltype()] a
6720: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  nd [sqlite3_colu
6730: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d  mn_decltype16()]
6740: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  .  interfaces..}
6750: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6760: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45   {SQLITE_OMIT_DE
6770: 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68  PRECATED} {.  Th
6780: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
6790: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
67a0: 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65  support for inte
67b0: 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20  rfaces.  marked 
67c0: 61 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20  as deprecated.  
67d0: 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20  This includes . 
67e0: 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67   [sqlite3_aggreg
67f0: 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20  ate_count()],.  
6800: 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64  [sqlite3_expired
6810: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
6820: 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67  transfer_binding
6830: 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  s()],.  [sqlite3
6840: 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28  _global_recover(
6850: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  )],.  [sqlite3_t
6860: 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d  hread_cleanup()]
6870: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
6880: 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20  memory_alarm()] 
6890: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
68a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
68b0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49  QLITE_OMIT_DISKI
68c0: 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  O} {.  This opti
68d0: 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70  on omits all sup
68e0: 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67  port for writing
68f0: 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64   to the disk and
6900: 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61   forces.  databa
6910: 73 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20  ses to exist in 
6920: 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 0a 7d 0a 0a  memory only..}..
6930: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6940: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c  SQLITE_OMIT_EXPL
6950: 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  AIN} {.  Definin
6960: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 63 61  g this option ca
6970: 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c 41 49  uses the [EXPLAI
6980: 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65  N] command to be
6990: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
69a0: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41 74 74  e.  library. Att
69b0: 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75  empting to execu
69c0: 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20  te an [EXPLAIN] 
69d0: 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63  statement will c
69e0: 61 75 73 65 20 61 20 70 61 72 73 65 0a 20 20 65  ause a parse.  e
69f0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
6a00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6a10: 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41  OMIT_FLAG_PRAGMA
6a20: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
6a30: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
6a40: 20 66 6f 72 20 61 20 73 75 62 73 65 74 20 6f 66   for a subset of
6a50: 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e   [PRAGMA] comman
6a60: 64 73 20 74 68 61 74 0a 20 20 71 75 65 72 79 20  ds that.  query 
6a70: 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20  and set boolean 
6a80: 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43  properties..}..C
6a90: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6aa0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54  QLITE_OMIT_FLOAT
6ab0: 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54  ING_POINT} {.  T
6ac0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
6ad0: 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74  ed to omit float
6ae0: 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72  ing-point number
6af0: 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20 74 68   support from th
6b00: 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61  e SQLite.  libra
6b10: 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69 66 69  ry. When specifi
6b20: 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67 20 61  ed, specifying a
6b30: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
6b40: 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69 74 65  number as a lite
6b50: 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e  ral .  (i.e. "1.
6b60: 30 31 22 29 20 72 65 73 75 6c 74 73 20 69 6e 20  01") results in 
6b70: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
6b80: 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75 74 75    <p>In the futu
6b90: 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  re, this option 
6ba0: 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62 6c 65  may also disable
6bb0: 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e 67 20   other floating 
6bc0: 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f  point .  functio
6bd0: 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78 61 6d  nality, for exam
6be0: 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ple the [sqlite3
6bf0: 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29  _result_double()
6c00: 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62  ], .  [sqlite3_b
6c10: 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b  ind_double()], [
6c20: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
6c30: 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  uble()] and.  [s
6c40: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
6c50: 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75 6e 63  uble()] API func
6c60: 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a  tions..  </p>.}.
6c70: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6c80: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52  {SQLITE_OMIT_FOR
6c90: 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66  EIGN_KEY} {.  If
6ca0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
6cb0: 64 65 66 69 6e 65 64 2c 20 46 4f 52 45 49 47 4e  defined, FOREIGN
6cc0: 20 4b 45 59 20 63 6c 61 75 73 65 73 20 69 6e 20   KEY clauses in 
6cd0: 63 6f 6c 75 6d 6e 20 64 65 63 6c 61 72 61 74 69  column declarati
6ce0: 6f 6e 73 20 61 72 65 0a 20 20 69 67 6e 6f 72 65  ons are.  ignore
6cf0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
6d00: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6d10: 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20  T_GET_TABLE} {. 
6d20: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
6d30: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
6d40: 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62  [sqlite3_get_tab
6d50: 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  le()] and.  [sql
6d60: 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28  ite3_free_table(
6d70: 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  )] to be omitted
6d80: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6d90: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
6da0: 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54  _INCRBLOB} {.  T
6db0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
6dc0: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73  s support for [s
6dd0: 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e  qlite3_blob | in
6de0: 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49  cremental BLOB I
6df0: 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74  /O].  to be omit
6e00: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
6e10: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6e20: 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48  MIT_INTEGRITY_CH
6e30: 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ECK} {.  This op
6e40: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
6e50: 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e 74 65  rt for the [inte
6e60: 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72 61 67  grity_check prag
6e70: 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ma]..}..COMPILE_
6e80: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6e90: 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a  MIT_LIKE_OPTIMIZ
6ea0: 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  ATION} {.  This 
6eb0: 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20  option disables 
6ec0: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53  the ability of S
6ed0: 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69 6e 64  QLite to use ind
6ee0: 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20 20 72  ices to help.  r
6ef0: 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e  esolve [LIKE] an
6f00: 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f  d [GLOB] operato
6f10: 72 73 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c  rs in a WHERE cl
6f20: 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ause..}..COMPILE
6f30: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6f40: 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  OMIT_LOAD_EXTENS
6f50: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
6f60: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 65  tion omits the e
6f70: 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f 6e 20  ntire extension 
6f80: 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e 69 73  loading mechanis
6f90: 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c  m from.  SQLite,
6fa0: 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69   including [sqli
6fb0: 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
6fc0: 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64  extension()] and
6fd0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64  .  [sqlite3_load
6fe0: 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e  _extension()] in
6ff0: 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d  terfaces..}..COM
7000: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7010: 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49  ITE_OMIT_LOCALTI
7020: 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ME} {.  This opt
7030: 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 6c  ion omits the "l
7040: 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69  ocaltime" modifi
7050: 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61 74 65  er from the date
7060: 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75 6e 63   and time.  func
7070: 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f 70 74  tions.  This opt
7080: 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73  ion is sometimes
7090: 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74 72 79   useful when try
70a0: 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20  ing to compile. 
70b0: 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69   the date and ti
70c0: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20  me functions on 
70d0: 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61 74 20  a platform that 
70e0: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
70f0: 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f   the.  concept o
7100: 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a  f local time..}.
7110: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7120: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d  {SQLITE_OMIT_MEM
7130: 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20  ORYDB} {.  When 
7140: 74 68 69 73 20 69 73 20 64 65 66 69 6e 65 64 2c  this is defined,
7150: 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65   the library doe
7160: 73 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74 68  s not respect th
7170: 65 20 73 70 65 63 69 61 6c 20 64 61 74 61 62 61  e special databa
7180: 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f  se.  name ":memo
7190: 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75  ry:" (normally u
71a0: 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e  sed to create an
71b0: 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61   [in-memory data
71c0: 62 61 73 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a  base]). If .  ":
71d0: 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73 73  memory:" is pass
71e0: 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  ed to [sqlite3_o
71f0: 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
7200: 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20  _open16()], or. 
7210: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
7220: 32 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69 74  2()], a file wit
7230: 68 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c  h this name will
7240: 20 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72   be .  opened or
7250: 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   created..}..COM
7260: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7270: 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49  ITE_OMIT_OR_OPTI
7280: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68  MIZATION} {.  Th
7290: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
72a0: 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f  es the ability o
72b0: 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20  f SQLite to use 
72c0: 61 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68 65  an index togethe
72d0: 72 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20 6f  r.  with terms o
72e0: 66 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  f a WHERE clause
72f0: 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68   connected by th
7300: 65 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d  e OR operator..}
7310: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7320: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41   {SQLITE_OMIT_PA
7330: 47 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  GER_PRAGMAS} {. 
7340: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
7350: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
7360: 6d 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74  mas related to t
7370: 68 65 20 70 61 67 65 72 20 73 75 62 73 79 73 74  he pager subsyst
7380: 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62  em from .  the b
7390: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
73a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
73b0: 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20  OMIT_PRAGMA} {. 
73c0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
73d0: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
73e0: 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e   [PRAGMA] comman
73f0: 64 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69 62  d.  from the lib
7400: 72 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74 20  rary. Note that 
7410: 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  it is useful to 
7420: 64 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72 6f  define the macro
7430: 73 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73 70  s that omit.  sp
7440: 65 63 69 66 69 63 20 70 72 61 67 6d 61 73 20 69  ecific pragmas i
7450: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  n addition to th
7460: 69 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79 20  is, as they may 
7470: 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70 70  also remove supp
7480: 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e  orting code.  in
7490: 20 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74 65   other sub-syste
74a0: 6d 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 72  ms. This macro r
74b0: 65 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41 47  emoves the [PRAG
74c0: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79  MA] command only
74d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
74e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
74f0: 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41  _PROGRESS_CALLBA
7500: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
7510: 69 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69 6e  ion may be defin
7520: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
7530: 61 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73 73  apability to iss
7540: 75 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a 20  ue "progress" . 
7550: 20 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e   callbacks durin
7560: 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53  g long-running S
7570: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54  QL statements. T
7580: 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70  he .  [sqlite3_p
7590: 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
75a0: 29 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69 6f  )].  API functio
75b0: 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74  n is not present
75c0: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
75d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
75e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
75f0: 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a  QUICKBALANCE} {.
7600: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
7610: 69 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  its an alternati
7620: 76 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72 65  ve, faster B-Tre
7630: 65 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74  e balancing rout
7640: 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68 69  ine..  Using thi
7650: 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53  s option makes S
7660: 51 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20 73  QLite slightly s
7670: 6d 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65 78  maller at the ex
7680: 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e  pense of.  makin
7690: 67 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74 6c  g it run slightl
76a0: 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d  y slower..}..COM
76b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
76c0: 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58  ITE_OMIT_REINDEX
76d0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
76e0: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
76f0: 64 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58 5d  d, the [REINDEX]
7700: 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  .  command is no
7710: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
7720: 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65  e library..  Exe
7730: 63 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44 45  cuting a [REINDE
7740: 58 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  X] statement cau
7750: 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65  ses .  a parse e
7760: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
7770: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7780: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
7790: 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
77a0: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
77b0: 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20  its pragmas for 
77c0: 71 75 65 72 79 69 6e 67 20 74 68 65 20 64 61 74  querying the dat
77d0: 61 62 61 73 65 20 73 63 68 65 6d 61 20 66 72 6f  abase schema fro
77e0: 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
77f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7800: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
7810: 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52  CHEMA_VERSION_PR
7820: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
7830: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
7840: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f  omits pragmas fo
7850: 72 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20 6d  r querying and m
7860: 6f 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20 20  odifying the .  
7870: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
7880: 76 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65 72  version and user
7890: 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68   version from th
78a0: 65 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66 69  e build. Specifi
78b0: 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73  cally, the .  [s
78c0: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61  chema_version] a
78d0: 6e 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e  nd [user_version
78e0: 5d 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f 6d  ] PRAGMAs are om
78f0: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
7900: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7910: 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43  _OMIT_SHARED_CAC
7920: 48 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  HE} {.  This opt
7930: 69 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69 74  ion builds SQLit
7940: 65 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f 72  e without suppor
7950: 74 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61 63  t for shared-cac
7960: 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b  he mode..  The [
7970: 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
7980: 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20 69  hared_cache()] i
7990: 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20  s omitted along 
79a0: 77 69 74 68 20 61 20 66 61 69 72 0a 20 20 61 6d  with a fair.  am
79b0: 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77 69  ount of logic wi
79c0: 74 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65 20  thin the B-Tree 
79d0: 73 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63 69  subsystem associ
79e0: 61 74 65 64 20 77 69 74 68 20 73 68 61 72 65 64  ated with shared
79f0: 0a 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65 6d  .  cache managem
7a00: 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ent..}..COMPILE_
7a10: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7a20: 4d 49 54 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a  MIT_SUBQUERY} {.
7a30: 20 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73 75    If defined, su
7a40: 70 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73 65  pport for sub-se
7a50: 6c 65 63 74 73 20 61 6e 64 20 74 68 65 20 49 4e  lects and the IN
7a60: 28 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65 20  () operator are 
7a70: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
7a80: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7a90: 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49  TE_OMIT_TCL_VARI
7aa0: 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  ABLE} {.  If thi
7ab0: 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  s macro is defin
7ac0: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70 65  ed, then the spe
7ad0: 63 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c 65  cial "$<variable
7ae0: 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20  -name>" syntax. 
7af0: 20 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61 74   used to automat
7b00: 69 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20  ically bind SQL 
7b10: 76 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43 4c  variables to TCL
7b20: 20 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f 6d   variables is om
7b30: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
7b40: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7b50: 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a  _OMIT_TEMPDB} {.
7b60: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
7b70: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
7b80: 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41 52  TEMP or TEMPORAR
7b90: 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d  Y tables..}..COM
7ba0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7bb0: 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20  ITE_OMIT_TRACE} 
7bc0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7bd0: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
7be0: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70  r the [sqlite3_p
7bf0: 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20  rofile()] and.  
7c00: 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29  [sqlite3_trace()
7c10: 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64  ] interfaces and
7c20: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
7c30: 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  d logic..}..COMP
7c40: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7c50: 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d  TE_OMIT_TRIGGER}
7c60: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
7c70: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
7c80: 73 75 70 70 6f 72 74 20 66 6f 72 20 54 52 49 47  support for TRIG
7c90: 47 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69  GER objects. Nei
7ca0: 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45  ther the .  [CRE
7cb0: 41 54 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20  ATE TRIGGER] or 
7cc0: 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20  [DROP TRIGGER]. 
7cd0: 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76   commands are av
7ce0: 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20  ailable in this 
7cf0: 63 61 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70  case, and attemp
7d00: 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a  ting to execute.
7d10: 20 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65    either will re
7d20: 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20  sult in a parse 
7d30: 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e  error...  WARNIN
7d40: 47 3a 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f  G: If this macro
7d50: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20   is defined, it 
7d60: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73  will not be poss
7d70: 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64  ible to open a d
7d80: 61 74 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68  atabase.  for wh
7d90: 69 63 68 20 74 68 65 20 73 63 68 65 6d 61 20 63  ich the schema c
7da0: 6f 6e 74 61 69 6e 73 20 54 52 49 47 47 45 52 20  ontains TRIGGER 
7db0: 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d  objects. .}..COM
7dc0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7dd0: 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54  ITE_OMIT_TRUNCAT
7de0: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20  E_OPTIMIZATION} 
7df0: 7b 0a 20 20 41 20 64 65 66 61 75 6c 74 20 62 75  {.  A default bu
7e00: 69 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69  ild of SQLite, i
7e10: 66 20 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61  f a [DELETE] sta
7e20: 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48  tement has no WH
7e30: 45 52 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64  ERE clause.  and
7e40: 20 6f 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74   operates on a t
7e50: 61 62 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69  able with no tri
7e60: 67 67 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69  ggers, an optimi
7e70: 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68  zation occurs th
7e80: 61 74 0a 20 20 63 61 75 73 65 73 20 74 68 65 20  at.  causes the 
7e90: 44 45 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20  DELETE to occur 
7ea0: 62 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20  by dropping and 
7eb0: 72 65 63 72 65 61 74 69 6e 67 20 74 68 65 20 74  recreating the t
7ec0: 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69  able.  .  Droppi
7ed0: 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e  ng and recreatin
7ee0: 67 20 61 20 74 61 62 6c 65 20 69 73 20 75 73 75  g a table is usu
7ef0: 61 6c 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72  ally much faster
7f00: 20 74 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20   than deleting. 
7f10: 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65   the table conte
7f20: 6e 74 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20  nt row by row.  
7f30: 54 68 69 73 20 69 73 20 74 68 65 20 22 74 72 75  This is the "tru
7f40: 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69  ncate optimizati
7f50: 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on"..}..COMPILE_
7f60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7f70: 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54  MIT_UTF16} {.  T
7f80: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65  his macro is use
7f90: 64 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  d to omit suppor
7fa0: 74 20 66 6f 72 20 55 54 46 31 36 20 74 65 78 74  t for UTF16 text
7fb0: 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20   encoding. When 
7fc0: 74 68 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65  this is.  define
7fd0: 64 20 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69  d all API functi
7fe0: 6f 6e 73 20 74 68 61 74 20 72 65 74 75 72 6e 20  ons that return 
7ff0: 6f 72 20 61 63 63 65 70 74 20 55 54 46 31 36 20  or accept UTF16 
8000: 65 6e 63 6f 64 65 64 20 74 65 78 74 20 61 72 65  encoded text are
8010: 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20  .  unavailable. 
8020: 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
8030: 63 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65  can be identifie
8040: 64 20 62 79 20 74 68 65 20 66 61 63 74 20 74 68  d by the fact th
8050: 61 74 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69  at they end.  wi
8060: 74 68 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61  th '16', for exa
8070: 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72  mple [sqlite3_pr
8080: 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c  epare16()], [sql
8090: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
80a0: 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  16()] and.  [sql
80b0: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
80c0: 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ()]..}..COMPILE_
80d0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
80e0: 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20  MIT_VACUUM} {.  
80f0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
8100: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
8110: 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d   [VACUUM].  comm
8120: 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75  and is not inclu
8130: 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61  ded in the libra
8140: 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20  ry..  Executing 
8150: 61 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65  a [VACUUM] state
8160: 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61  ment causes .  a
8170: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a   parse error..}.
8180: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8190: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45  {SQLITE_OMIT_VIE
81a0: 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  W} {.  Defining 
81b0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
81c0: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49  s support for VI
81d0: 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74  EW objects. Neit
81e0: 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41  her the .  [CREA
81f0: 54 45 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65  TE VIEW] nor the
8200: 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63   [DROP VIEW].  c
8210: 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69  ommands are avai
8220: 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61  lable in this ca
8230: 73 65 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70  se, and.  attemp
8240: 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20  ting to execute 
8250: 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75  either will resu
8260: 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72  lt in a parse er
8270: 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a  ror...  WARNING:
8280: 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   If this macro i
8290: 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69  s defined, it wi
82a0: 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62  ll not be possib
82b0: 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74  le to open a dat
82c0: 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63  abase.  for whic
82d0: 68 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e  h the schema con
82e0: 74 61 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63  tains VIEW objec
82f0: 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ts. .}..COMPILE_
8300: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
8310: 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45  MIT_VIRTUALTABLE
8320: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8330: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
8340: 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33  for the [sqlite3
8350: 5f 76 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20  _vtab | Virtual 
8360: 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69  Table].  mechani
8370: 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a  sm in SQLite..}.
8380: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8390: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44  {SQLITE_OMIT_WSD
83a0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
83b0: 6e 73 20 62 75 69 6c 64 73 20 61 20 76 65 72 73  ns builds a vers
83c0: 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ion of the SQLit
83d0: 65 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 63  e library that c
83e0: 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69  ontains no.  Wri
83f0: 74 61 62 6c 65 20 53 74 61 74 69 63 20 44 61 74  table Static Dat
8400: 61 20 28 57 53 44 29 2e 20 20 57 53 44 20 69 73  a (WSD).  WSD is
8410: 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65   global variable
8420: 73 20 61 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a  s and/or static.
8430: 20 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 6f    variables.  So
8440: 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20  me platforms do 
8450: 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44 2c  not support WSD,
8460: 20 61 6e 64 20 74 68 69 73 20 6f 70 74 69 6f 6e   and this option
8470: 20 69 73 20 6e 65 63 65 73 73 61 72 79 0a 20 20   is necessary.  
8480: 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 53 51 4c  in order for SQL
8490: 69 74 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73  ite to work thos
84a0: 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a  e platforms.  ..
84b0: 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f    Unlike other O
84c0: 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77 68 69 63  MIT options whic
84d0: 68 20 6d 61 6b 65 20 74 68 65 20 53 51 4c 69 74  h make the SQLit
84e0: 65 20 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c 65  e library smalle
84f0: 72 2c 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e  r,.  this option
8500: 20 61 63 74 75 61 6c 6c 79 20 69 6e 63 72 65 61   actually increa
8510: 73 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20  ses the size of 
8520: 53 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65 73  SQLite and makes
8530: 20 69 74 20 72 75 6e 0a 20 20 61 20 6c 69 74 74   it run.  a litt
8540: 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79  le slower.  Only
8550: 20 75 73 65 20 74 68 69 73 20 6f 70 74 69 6f 6e   use this option
8560: 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 62 65   if SQLite is be
8570: 69 6e 67 20 62 75 69 6c 74 20 66 6f 72 20 61 6e  ing built for an
8580: 0a 20 20 65 6d 62 65 64 64 65 64 20 74 61 72 67  .  embedded targ
8590: 65 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  et that does not
85a0: 20 73 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a   support WSD..}.
85b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
85c0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45  {SQLITE_OMIT_XFE
85d0: 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73 20  R_OPT} {.  This 
85e0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
85f0: 70 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a  port for optimiz
8600: 61 74 69 6f 6e 73 20 74 68 61 74 20 68 65 6c 70  ations that help
8610: 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66   statements.  of
8620: 20 74 68 65 20 66 6f 72 6d 20 22 49 4e 53 45 52   the form "INSER
8630: 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43  T INTO ... SELEC
8640: 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74 65  T ..." run faste
8650: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
8660: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45 52  TION {SQLITE_ZER
8670: 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68  O_MALLOC} {.  Th
8680: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
8690: 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75 6c  both the [defaul
86a0: 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  t memory allocat
86b0: 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b 64  or] and the.  [d
86c0: 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20  ebugging memory 
86d0: 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d 20  allocator] from 
86e0: 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73 75  the build and su
86f0: 62 73 74 69 74 75 74 65 73 20 61 20 73 74 75 62  bstitutes a stub
8700: 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  .  memory alloca
8710: 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73 20  tor that always 
8720: 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 77  fails.  SQLite w
8730: 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74 68  ill not run with
8740: 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65 6d   this.  stub mem
8750: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73 69  ory allocator si
8760: 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20 75  nce it will be u
8770: 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74  nable to allocat
8780: 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a 20  e memory.  But. 
8790: 20 74 68 69 73 20 73 74 75 62 20 63 61 6e 20 62   this stub can b
87a0: 65 20 72 65 70 6c 61 63 65 64 20 61 74 20 73 74  e replaced at st
87b0: 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  art-time using. 
87c0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
87d0: 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ]([SQLITE_CONFIG
87e0: 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72  _MALLOC],...) or
87f0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
8800: 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
8810: 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20  IG_HEAP],...).. 
8820: 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66 65   So the net effe
8830: 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69  ct of this compi
8840: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
8850: 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77 73  s that it allows
8860: 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65 20   SQLite.  to be 
8870: 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69 6e  compiled and lin
8880: 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20 73 79  ked against a sy
8890: 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68 61  stem library tha
88a0: 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
88b0: 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20 66  rt.  malloc(), f
88c0: 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72 65  ree(), and/or re
88d0: 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63  alloc()..}..</tc
88e0: 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62 75  l>.<a name="debu
88f0: 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c  goptions"></a>.<
8900: 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73 20  h2>1.7 Analysis 
8910: 61 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70  and Debugging Op
8920: 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e  tions</h2>.<tcl>
8930: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8940: 20 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20   {SQLITE_DEBUG} 
8950: 7b 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20 73  {.  The SQLite s
8960: 6f 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61  ource code conta
8970: 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68  ins literally th
8980: 6f 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72  ousands of asser
8990: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20  t() statements. 
89a0: 20 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20   used to verify 
89b0: 69 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74  internal assumpt
89c0: 69 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74  ions and subrout
89d0: 69 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e  ine precondition
89e0: 73 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64  s and.  postcond
89f0: 69 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61  itions.  These a
8a00: 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e  ssert() statemen
8a10: 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  ts are normally 
8a20: 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68  turned off.  (th
8a30: 65 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63  ey generate no c
8a40: 6f 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69  ode) since turni
8a50: 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73  ng them on makes
8a60: 20 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72   SQLite run appr
8a70: 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65  oximately.  thre
8a80: 65 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20  e times slower. 
8a90: 20 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67   But for testing
8aa0: 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69   and analysis, i
8ab0: 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74  t is useful to t
8ac0: 75 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74  urn.  the assert
8ad0: 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e  () statements on
8ae0: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45  .  The SQLITE_DE
8af0: 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  BUG compile-time
8b00: 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69   option does thi
8b10: 73 2e 0a 20 20 53 51 4c 49 54 45 5f 44 45 42 55  s..  SQLITE_DEBU
8b20: 47 20 61 6c 73 6f 20 74 75 72 6e 73 20 6f 6e 20  G also turns on 
8b30: 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67  some other debug
8b40: 67 69 6e 67 20 66 65 61 74 75 72 65 73 2e 0a 7d  ging features..}
8b50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8b60: 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55   {SQLITE_MEMDEBU
8b70: 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  G} {.  The SQLIT
8b80: 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74 69 6f  E_MEMDEBUG optio
8b90: 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e 73 74  n causes an inst
8ba0: 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65 62  rumented .  [deb
8bb0: 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c  ugging memory al
8bc0: 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65  locator].  to be
8bd0: 20 75 73 65 64 20 61 73 20 74 68 65 20 64 65 66   used as the def
8be0: 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ault memory allo
8bf0: 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53 51 4c  cator within SQL
8c00: 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e 73 74  ite.  The.  inst
8c10: 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20  rumented memory 
8c20: 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b 73  allocator checks
8c30: 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66 20 64   for misuse of d
8c40: 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
8c50: 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20  ated.  memory.  
8c60: 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75  Examples of misu
8c70: 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69 6e 67  se include using
8c80: 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74   memory after it
8c90: 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77 72 69   is freed,.  wri
8ca0: 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65 6e 64  ting off the end
8cb0: 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c  s of a memory al
8cc0: 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e  location, freein
8cd0: 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65  g memory not pre
8ce0: 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e  viously.  obtain
8cf0: 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f  ed from the memo
8d00: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72  ry allocator, or
8d10: 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74   failing to init
8d20: 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61  ialize newly.  a
8d30: 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e  llocated memory.
8d40: 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a                 .}..</tcl>.