Documentation Source Text

Hex Artifact Content
Login

Artifact d913dbdbc8c8613e825edd8043956fc0e340c8eb:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 61 74 69  <title>Compilati
0010: 6f 6e 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53  on Options For S
0020: 51 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 74  QLite</title>.<t
0030: 63 6c 3e 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  cl>hd_keywords {
0040: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0050: 69 6f 6e 73 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 31  ions}</tcl>..<h1
0060: 3e 31 2e 30 20 43 6f 6d 70 69 6c 61 74 69 6f 6e  >1.0 Compilation
0070: 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53 51 4c   Options For SQL
0080: 69 74 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46 6f  ite</h1>..<p>.Fo
0090: 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73 2c  r most purposes,
00a0: 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 62   SQLite can be b
00b0: 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20 75  uilt just fine u
00c0: 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  sing the default
00d0: 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74  .compilation opt
00e0: 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 69  ions. However, i
00f0: 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20  f required, the 
0100: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0110: 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64 20  ions.documented 
0120: 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73 65  below can be use
0130: 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22 23  d to .<a href="#
0140: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f 6d  omitfeatures">om
0150: 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75 72  it SQLite featur
0160: 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69 6e  es</a> (resultin
0170: 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74 70  g in.a [relfootp
0180: 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20 63  rint | smaller c
0190: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 20  ompiled library 
01a0: 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68 61  size]) or to cha
01b0: 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66 3d  nge the.<a href=
01c0: 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66 61  "#defaults">defa
01d0: 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20 6f  ult values</a> o
01e0: 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65 72  f some parameter
01f0: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76 65  s..</p>..<p>.Eve
0200: 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62 65  ry effort has be
0210: 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75 72  en made to ensur
0220: 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69 6f  e that the vario
0230: 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a  us combinations.
0240: 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  of compilation o
0250: 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72 6d  ptions work harm
0260: 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72 6f  oniously and pro
0270: 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20 6c  duce a working l
0280: 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68 65  ibrary..Neverthe
0290: 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72 6f  less, it is stro
02a0: 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64  ngly recommended
02b0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
02c0: 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20 65   test-suite.be e
02d0: 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63 6b  xecuted to check
02e0: 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66 6f   for errors befo
02f0: 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69  re using an SQLi
0300: 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c 74  te library built
0310: 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61  .with non-standa
0320: 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  rd compilation o
0330: 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 3c 61 20  ptions..</p>.<a 
0340: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 73 22 3e  name="defaults">
0350: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 31 20 4f 70 74  </a>.<h2>1.1 Opt
0360: 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66 61  ions To Set Defa
0370: 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56 61  ult Parameter Va
0380: 6c 75 65 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  lues</h2>..<tcl>
0390: 0a 70 72 6f 63 20 43 4f 4d 50 49 4c 45 5f 4f 50  .proc COMPILE_OP
03a0: 54 49 4f 4e 20 7b 6e 61 6d 65 20 74 65 78 74 7d  TION {name text}
03b0: 20 7b 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70   {.  if {[regexp
03c0: 20 7b 53 51 4c 49 54 45 5f 28 5b 41 2d 5a 30 2d   {SQLITE_([A-Z0-
03d0: 39 5f 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c  9_]+)} $name all
03e0: 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68   label]} {.    h
03f0: 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72 69  d_fragment [stri
0400: 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62 65  ng tolower $labe
0410: 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f 72  l].    hd_keywor
0420: 64 73 20 24 61 6c 6c 0a 20 20 7d 0a 20 20 69 66  ds $all.  }.  if
0430: 20 7b 5b 72 65 67 65 78 70 20 7b 5e 59 59 28 5b   {[regexp {^YY([
0440: 41 2d 5a 30 2d 39 5f 5d 2b 29 7d 20 24 6e 61 6d  A-Z0-9_]+)} $nam
0450: 65 20 61 6c 6c 20 6c 61 62 65 6c 5d 7d 20 7b 0a  e all label]} {.
0460: 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20      hd_fragment 
0470: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20  [string tolower 
0480: 24 61 6c 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79  $all].    hd_key
0490: 77 6f 72 64 73 20 24 61 6c 6c 0a 20 20 7d 0a 20  words $all.  }. 
04a0: 20 68 64 5f 70 75 74 73 20 3c 70 3e 3c 62 3e 24   hd_puts <p><b>$
04b0: 6e 61 6d 65 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 72  name</b></p>.  r
04c0: 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 5c 5c  egsub -all "\n\\
04d0: 73 2a 5c 6e 22 20 24 74 65 78 74 20 22 3c 2f 70  s*\n" $text "</p
04e0: 3e 5c 6e 5c 6e 3c 70 3e 22 20 74 65 78 74 0a 20  >\n\n<p>" text. 
04f0: 20 68 64 5f 72 65 73 6f 6c 76 65 20 3c 62 6c 6f   hd_resolve <blo
0500: 63 6b 71 75 6f 74 65 3e 3c 70 3e 24 74 65 78 74  ckquote><p>$text
0510: 3c 2f 70 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </p></blockquote
0520: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
0530: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
0540: 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d 3c  ULT_AUTOVACUUM=<
0550: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20  i>&lt;0 or 1 or 
0560: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  2&gt;</i>} {.  T
0570: 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d  his macro determ
0580: 69 6e 65 73 20 69 66 20 53 51 4c 69 74 65 20 63  ines if SQLite c
0590: 72 65 61 74 65 73 20 64 61 74 61 62 61 73 65 73  reates databases
05a0: 20 77 69 74 68 20 74 68 65 20 0a 20 20 5b 61 75   with the .  [au
05b0: 74 6f 5f 76 61 63 75 75 6d 5d 20 66 6c 61 67 20  to_vacuum] flag 
05c0: 73 65 74 20 62 79 20 64 65 66 61 75 6c 74 20 74  set by default t
05d0: 6f 20 4f 46 46 20 28 30 29 2c 20 46 55 4c 4c 20  o OFF (0), FULL 
05e0: 28 31 29 2c 20 6f 72 0a 20 20 49 4e 43 52 45 4d  (1), or.  INCREM
05f0: 45 4e 54 41 4c 20 28 32 29 2e 20 54 68 65 20 64  ENTAL (2). The d
0600: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
0610: 30 20 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 64  0 meaning that d
0620: 61 74 61 62 61 73 65 73 0a 20 20 61 72 65 20 63  atabases.  are c
0630: 72 65 61 74 65 64 20 77 69 74 68 20 61 75 74 6f  reated with auto
0640: 2d 76 61 63 75 75 6d 20 74 75 72 6e 65 64 20 6f  -vacuum turned o
0650: 66 66 2e 0a 20 20 49 6e 20 61 6e 79 20 63 61 73  ff..  In any cas
0660: 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  e the compile-ti
0670: 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62  me default may b
0680: 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20  e overridden by 
0690: 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20 61  the .  [PRAGMA a
06a0: 75 74 6f 5f 76 61 63 75 75 6d 5d 20 63 6f 6d 6d  uto_vacuum] comm
06b0: 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  and..}..COMPILE_
06c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
06d0: 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a  EFAULT_CACHE_SIZ
06e0: 45 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26 67  E=<i>&lt;pages&g
06f0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
0700: 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20   macro sets the 
0710: 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20  default size of 
0720: 74 68 65 20 70 61 67 65 2d 63 61 63 68 65 20 66  the page-cache f
0730: 6f 72 20 65 61 63 68 20 61 74 74 61 63 68 65 64  or each attached
0740: 0a 20 20 64 61 74 61 62 61 73 65 2c 20 69 6e 20  .  database, in 
0750: 70 61 67 65 73 2e 20 54 68 69 73 20 63 61 6e 20  pages. This can 
0760: 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79  be overridden by
0770: 20 74 68 65 20 0a 20 20 5b 50 52 41 47 4d 41 20   the .  [PRAGMA 
0780: 63 61 63 68 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d  cache_size] comm
0790: 61 6e 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74  and. The default
07a0: 20 76 61 6c 75 65 20 69 73 20 32 30 30 30 2e 0a   value is 2000..
07b0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
07c0: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
07d0: 54 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 3d 3c 69  T_FILE_FORMAT=<i
07e0: 3e 26 6c 74 3b 31 20 6f 72 20 34 26 67 74 3b 3c  >&lt;1 or 4&gt;<
07f0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 64 65 66  /i>} {.  The def
0800: 61 75 6c 74 20 5b 73 63 68 65 6d 61 20 66 6f 72  ault [schema for
0810: 6d 61 74 20 6e 75 6d 62 65 72 5d 20 75 73 65 64  mat number] used
0820: 20 62 79 20 53 51 4c 69 74 65 20 77 68 65 6e 20   by SQLite when 
0830: 63 72 65 61 74 69 6e 67 0a 20 20 6e 65 77 20 64  creating.  new d
0840: 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 69 73  atabase files is
0850: 20 73 65 74 20 62 79 20 74 68 69 73 20 6d 61 63   set by this mac
0860: 72 6f 2e 20 20 54 68 65 20 73 63 68 65 6d 61 20  ro.  The schema 
0870: 66 6f 72 6d 61 74 73 20 61 72 65 20 61 6c 6c 0a  formats are all.
0880: 20 20 76 65 72 79 20 73 69 6d 69 6c 61 72 2e 20    very similar. 
0890: 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20   The difference 
08a0: 62 65 74 77 65 65 6e 20 66 6f 72 6d 61 74 73 20  between formats 
08b0: 31 20 61 6e 64 20 34 20 69 73 20 74 68 61 74 20  1 and 4 is that 
08c0: 66 6f 72 6d 61 74 0a 20 20 34 20 75 6e 64 65 72  format.  4 under
08d0: 73 74 61 6e 64 73 20 5b 64 65 73 63 65 6e 64 69  stands [descendi
08e0: 6e 67 20 69 6e 64 69 63 65 73 5d 20 61 6e 64 20  ng indices] and 
08f0: 68 61 73 20 61 20 74 69 67 68 74 65 72 20 65 6e  has a tighter en
0900: 63 6f 64 69 6e 67 20 66 6f 72 0a 20 20 62 6f 6f  coding for.  boo
0910: 6c 65 61 6e 20 76 61 6c 75 65 73 2e 0a 0a 20 20  lean values...  
0920: 41 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  All versions of 
0930: 53 51 4c 69 74 65 20 73 69 6e 63 65 20 33 2e 33  SQLite since 3.3
0940: 2e 30 20 28 32 30 30 36 2d 30 31 2d 31 30 29 0a  .0 (2006-01-10).
0950: 20 20 63 61 6e 20 72 65 61 64 20 61 6e 64 20 77    can read and w
0960: 72 69 74 65 20 61 6e 79 20 73 63 68 65 6d 61 20  rite any schema 
0970: 66 6f 72 6d 61 74 0a 20 20 62 65 74 77 65 65 6e  format.  between
0980: 20 31 20 61 6e 64 20 34 2e 20 20 42 75 74 20 6f   1 and 4.  But o
0990: 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  lder versions of
09a0: 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 6e 6f   SQLite might no
09b0: 74 20 62 65 20 61 62 6c 65 20 74 6f 0a 20 20 72  t be able to.  r
09c0: 65 61 64 20 66 6f 72 6d 61 74 73 20 67 72 65 61  ead formats grea
09d0: 74 65 72 20 74 68 61 6e 20 31 2e 20 20 53 6f 20  ter than 1.  So 
09e0: 74 68 61 74 20 6f 6c 64 65 72 20 76 65 72 73 69  that older versi
09f0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 77 69  ons of SQLite wi
0a00: 6c 6c 0a 20 20 62 65 20 61 62 6c 65 20 74 6f 20  ll.  be able to 
0a10: 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 64  read and write d
0a20: 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 63 72  atabase files cr
0a30: 65 61 74 65 64 20 62 79 20 6e 65 77 65 72 20 76  eated by newer v
0a40: 65 72 73 69 6f 6e 73 0a 20 20 6f 66 20 53 51 4c  ersions.  of SQL
0a50: 69 74 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74  ite, the default
0a60: 20 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 77   schema format w
0a70: 61 73 20 73 65 74 20 74 6f 20 31 20 66 6f 72 20  as set to 1 for 
0a80: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 73 0a  SQLite versions.
0a90: 20 20 74 68 72 6f 75 67 68 20 33 2e 37 2e 39 20    through 3.7.9 
0aa0: 28 32 30 31 31 2d 31 31 2d 30 31 29 2e 20 20 42  (2011-11-01).  B
0ab0: 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 76 65  eginning with ve
0ac0: 72 73 69 6f 6e 20 33 2e 37 2e 31 30 2c 20 74 68  rsion 3.7.10, th
0ad0: 65 20 64 65 66 61 75 6c 74 0a 20 20 73 63 68 65  e default.  sche
0ae0: 6d 61 20 66 6f 72 6d 61 74 20 69 73 20 34 2e 0a  ma format is 4..
0af0: 0a 20 20 54 68 65 20 73 63 68 65 6d 61 20 66 6f  .  The schema fo
0b00: 72 6d 61 74 20 6e 75 6d 62 65 72 20 66 6f 72 20  rmat number for 
0b10: 61 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63  a new database c
0b20: 61 6e 20 62 65 20 73 65 74 20 61 74 20 72 75 6e  an be set at run
0b30: 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 74 68 65  time using.  the
0b40: 20 5b 50 52 41 47 4d 41 20 6c 65 67 61 63 79 5f   [PRAGMA legacy_
0b50: 66 69 6c 65 5f 66 6f 72 6d 61 74 5d 20 63 6f 6d  file_format] com
0b60: 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  mand..}..COMPILE
0b70: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
0b80: 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52  DEFAULT_FILE_PER
0b90: 4d 49 53 53 49 4f 4e 53 3d 3c 69 3e 4e 3c 2f 69  MISSIONS=<i>N</i
0ba0: 3e 7d 20 7b 0a 20 20 54 68 65 20 64 65 66 61 75  >} {.  The defau
0bb0: 6c 74 20 6e 75 6d 65 72 69 63 20 66 69 6c 65 20  lt numeric file 
0bc0: 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 6f 72 20  permissions for 
0bd0: 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20 64 61  newly created da
0be0: 74 61 62 61 73 65 20 66 69 6c 65 73 0a 20 20 75  tabase files.  u
0bf0: 6e 64 65 72 20 75 6e 69 78 2e 20 20 49 66 20 6e  nder unix.  If n
0c00: 6f 74 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  ot specified, th
0c10: 65 20 64 65 66 61 75 6c 74 20 69 73 20 30 36 34  e default is 064
0c20: 34 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68  4 which means th
0c30: 61 74 0a 20 20 74 68 65 20 66 69 6c 65 73 20 69  at.  the files i
0c40: 73 20 67 6c 6f 62 61 6c 6c 79 20 72 65 61 64 61  s globally reada
0c50: 62 6c 65 20 62 75 74 20 6f 6e 6c 79 20 77 72 69  ble but only wri
0c60: 74 61 62 6c 65 20 62 79 20 74 68 65 20 63 72 65  table by the cre
0c70: 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ator..}..COMPILE
0c80: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
0c90: 44 45 46 41 55 4c 54 5f 46 4f 52 45 49 47 4e 5f  DEFAULT_FOREIGN_
0ca0: 4b 45 59 53 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  KEYS=<i>&lt;0 or
0cb0: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
0cc0: 54 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72  This macro deter
0cd0: 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 65 6e  mines whether en
0ce0: 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 0a 20 20  forcement of .  
0cf0: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
0d00: 73 74 72 61 69 6e 74 73 5d 20 69 73 20 65 6e 61  straints] is ena
0d10: 62 6c 65 64 20 6f 72 20 64 69 73 61 62 6c 65 64  bled or disabled
0d20: 20 62 79 20 64 65 66 61 75 6c 74 20 66 6f 72 0a   by default for.
0d30: 20 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63    new database c
0d40: 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20 20 45 61 63  onnections.  Eac
0d50: 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  h database conne
0d60: 63 74 69 6f 6e 20 63 61 6e 20 61 6c 77 61 79 73  ction can always
0d70: 20 74 75 72 6e 0a 20 20 65 6e 66 6f 72 63 65 6d   turn.  enforcem
0d80: 65 6e 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b  ent of foreign k
0d90: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f  ey constraints o
0da0: 6e 20 61 6e 64 20 6f 66 66 20 61 6e 64 20 72 75  n and off and ru
0db0: 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 74  n-time using.  t
0dc0: 68 65 20 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73  he [foreign_keys
0dd0: 20 70 72 61 67 6d 61 5d 2e 20 20 45 6e 66 6f 72   pragma].  Enfor
0de0: 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69 67  cement of foreig
0df0: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
0e00: 73 0a 20 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  s.  is normally 
0e10: 6f 66 66 20 62 79 20 64 65 66 61 75 6c 74 2c 20  off by default, 
0e20: 62 75 74 20 69 66 20 74 68 69 73 20 63 6f 6d 70  but if this comp
0e30: 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 74  ile-time paramet
0e40: 65 72 20 69 73 0a 20 20 73 65 74 20 74 6f 20 31  er is.  set to 1
0e50: 2c 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66  , enforcement of
0e60: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e   foreign key con
0e70: 73 74 72 61 69 6e 74 73 20 77 69 6c 6c 20 62 65  straints will be
0e80: 20 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 2e 0a   on by default..
0e90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
0ea0: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
0eb0: 54 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e  T_MMAP_SIZE=<i>N
0ec0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
0ed0: 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65  acro sets the de
0ee0: 66 61 75 6c 74 20 6c 69 6d 69 74 20 6f 6e 20 74  fault limit on t
0ef0: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d  he amount of mem
0f00: 6f 72 79 20 74 68 61 74 0a 20 20 77 69 6c 6c 20  ory that.  will 
0f10: 62 65 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f  be used for memo
0f20: 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 0a 20 20  ry-mapped I/O.  
0f30: 66 6f 72 20 65 61 63 68 20 6f 70 65 6e 20 64 61  for each open da
0f40: 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20 49 66  tabase file.  If
0f50: 20 74 68 65 20 3c 69 3e 4e 3c 2f 69 3e 0a 20 20   the <i>N</i>.  
0f60: 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20 6d 65  is zero, then me
0f70: 6d 6f 72 79 20 6d 61 70 70 65 64 20 49 2f 4f 20  mory mapped I/O 
0f80: 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64  is disabled by d
0f90: 65 66 61 75 6c 74 2e 20 20 54 68 69 73 0a 20 20  efault.  This.  
0fa0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69 6d  compile-time lim
0fb0: 69 74 20 61 6e 64 20 74 68 65 20 5b 53 51 4c 49  it and the [SQLI
0fc0: 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45  TE_MAX_MMAP_SIZE
0fd0: 5d 20 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65  ] can be modifie
0fe0: 64 20 0a 20 20 61 74 20 73 74 61 72 74 2d 74 69  d .  at start-ti
0ff0: 6d 65 20 75 73 69 6e 67 20 74 68 65 0a 20 20 5b  me using the.  [
1000: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28  sqlite3_config](
1010: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1020: 4d 41 50 5f 53 49 5a 45 5d 29 20 63 61 6c 6c 2c  MAP_SIZE]) call,
1030: 20 6f 72 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a   or at run-time.
1040: 20 20 75 73 69 6e 67 20 74 68 65 20 5b 6d 6d 61    using the [mma
1050: 70 5f 73 69 7a 65 20 70 72 61 67 6d 61 5d 2e 0a  p_size pragma]..
1060: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1070: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
1080: 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a 45 5f 4c  T_JOURNAL_SIZE_L
1090: 49 4d 49 54 3d 3c 69 3e 26 6c 74 3b 62 79 74 65  IMIT=<i>&lt;byte
10a0: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
10b0: 68 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  his option sets 
10c0: 74 68 65 20 73 69 7a 65 20 6c 69 6d 69 74 20 6f  the size limit o
10d0: 6e 20 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  n [rollback jour
10e0: 6e 61 6c 5d 20 66 69 6c 65 73 20 69 6e 0a 20 20  nal] files in.  
10f0: 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 70 72  [journal_mode pr
1100: 61 67 6d 61 20 7c 20 70 65 72 73 69 73 74 65 6e  agma | persisten
1110: 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 5d 20  t journal mode] 
1120: 61 6e 64 0a 20 20 5b 6c 6f 63 6b 69 6e 67 5f 6d  and.  [locking_m
1130: 6f 64 65 20 7c 20 65 78 63 6c 75 73 69 76 65 20  ode | exclusive 
1140: 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 5d 20 61 6e  locking mode] an
1150: 64 20 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66  d on the size of
1160: 20 74 68 65 0a 20 20 77 72 69 74 65 2d 61 68 65   the.  write-ahe
1170: 61 64 20 6c 6f 67 20 66 69 6c 65 20 69 6e 20 5b  ad log file in [
1180: 57 41 4c 20 6d 6f 64 65 5d 2e 20 57 68 65 6e 20  WAL mode]. When 
1190: 74 68 69 73 20 0a 20 20 63 6f 6d 70 69 6c 65 2d  this .  compile-
11a0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f  time option is o
11b0: 6d 69 74 74 65 64 20 74 68 65 72 65 20 69 73 20  mitted there is 
11c0: 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  no upper bound o
11d0: 6e 20 74 68 65 0a 20 20 73 69 7a 65 20 6f 66 20  n the.  size of 
11e0: 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75  the rollback jou
11f0: 72 6e 61 6c 73 20 6f 72 20 77 72 69 74 65 2d 61  rnals or write-a
1200: 68 65 61 64 20 6c 6f 67 73 2e 20 20 0a 20 20 54  head logs.  .  T
1210: 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
1220: 73 69 7a 65 20 6c 69 6d 69 74 0a 20 20 63 61 6e  size limit.  can
1230: 20 62 65 20 63 68 61 6e 67 65 64 20 61 74 20 72   be changed at r
1240: 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  un-time using th
1250: 65 20 5b 6a 6f 75 72 6e 61 6c 5f 73 69 7a 65 5f  e [journal_size_
1260: 6c 69 6d 69 74 20 70 72 61 67 6d 61 5d 2e 0a 7d  limit pragma]..}
1270: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1280: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
1290: 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d 3c 69  _LOCKING_MODE=<i
12a0: 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c  >&lt;1 or 0&gt;<
12b0: 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 73 65 74 20  /i>} {.  If set 
12c0: 74 6f 20 31 2c 20 74 68 65 6e 20 74 68 65 20 64  to 1, then the d
12d0: 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f  efault [locking_
12e0: 6d 6f 64 65 5d 20 69 73 20 73 65 74 20 74 6f 20  mode] is set to 
12f0: 45 58 43 4c 55 53 49 56 45 2e 0a 20 20 49 66 20  EXCLUSIVE..  If 
1300: 6f 6d 69 74 74 65 64 20 6f 72 20 73 65 74 20 74  omitted or set t
1310: 6f 20 30 20 74 68 65 6e 20 74 68 65 20 64 65 66  o 0 then the def
1320: 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f  ault [locking_mo
1330: 64 65 5d 20 69 73 20 4e 4f 52 4d 41 4c 2e 0a 7d  de] is NORMAL..}
1340: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1350: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
1360: 5f 4d 45 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c  _MEMSTATUS=<i>&l
1370: 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e  t;1 or 0&gt;</i>
1380: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
1390: 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65   is used to dete
13a0: 72 6d 69 6e 65 20 77 68 65 74 68 65 72 20 6f 72  rmine whether or
13b0: 20 6e 6f 74 20 74 68 65 20 66 65 61 74 75 72 65   not the feature
13c0: 73 20 65 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20  s enabled and.  
13d0: 64 69 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74  disabled using t
13e0: 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
13f0: 5f 4d 45 4d 53 54 41 54 55 53 20 61 72 67 75 6d  _MEMSTATUS argum
1400: 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ent to [sqlite3_
1410: 63 6f 6e 66 69 67 28 29 5d 0a 20 20 61 72 65 20  config()].  are 
1420: 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
1430: 61 75 6c 74 2e 20 54 68 65 20 64 65 66 61 75 6c  ault. The defaul
1440: 74 20 76 61 6c 75 65 20 69 73 20 31 20 28 5b 53  t value is 1 ([S
1450: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1460: 53 54 41 54 55 53 5d 0a 20 20 72 65 6c 61 74 65  STATUS].  relate
1470: 64 20 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c  d features enabl
1480: 65 64 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ed)..}..COMPILE_
1490: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
14a0: 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45  EFAULT_PAGE_SIZE
14b0: 3d 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74  =<i>&lt;bytes&gt
14c0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
14d0: 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f  macro is used to
14e0: 20 73 65 74 20 74 68 65 20 64 65 66 61 75 6c 74   set the default
14f0: 20 70 61 67 65 2d 73 69 7a 65 20 75 73 65 64 20   page-size used 
1500: 77 68 65 6e 20 61 0a 20 20 64 61 74 61 62 61 73  when a.  databas
1510: 65 20 69 73 20 63 72 65 61 74 65 64 2e 20 54 68  e is created. Th
1520: 65 20 76 61 6c 75 65 20 61 73 73 69 67 6e 65 64  e value assigned
1530: 20 6d 75 73 74 20 62 65 20 61 20 70 6f 77 65 72   must be a power
1540: 20 6f 66 20 32 2e 20 54 68 65 0a 20 20 64 65 66   of 2. The.  def
1550: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31 30  ault value is 10
1560: 32 34 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d  24. The compile-
1570: 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79  time default may
1580: 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 61   be overridden a
1590: 74 20 0a 20 20 72 75 6e 74 69 6d 65 20 62 79 20  t .  runtime by 
15a0: 74 68 65 20 5b 50 52 41 47 4d 41 20 70 61 67 65  the [PRAGMA page
15b0: 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 0a  _size] command..
15c0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
15d0: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
15e0: 54 5f 54 45 4d 50 5f 43 41 43 48 45 5f 53 49 5a  T_TEMP_CACHE_SIZ
15f0: 45 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26 67  E=<i>&lt;pages&g
1600: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
1610: 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20   macro sets the 
1620: 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20  default size of 
1630: 74 68 65 20 70 61 67 65 2d 63 61 63 68 65 20 66  the page-cache f
1640: 6f 72 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  or temporary fil
1650: 65 73 0a 20 20 63 72 65 61 74 65 64 20 62 79 20  es.  created by 
1660: 53 51 4c 69 74 65 20 74 6f 20 73 74 6f 72 65 20  SQLite to store 
1670: 69 6e 74 65 72 6d 65 64 69 61 74 65 20 72 65 73  intermediate res
1680: 75 6c 74 73 2c 20 69 6e 20 70 61 67 65 73 2e 20  ults, in pages. 
1690: 49 74 20 64 6f 65 73 0a 20 20 6e 6f 74 20 61 66  It does.  not af
16a0: 66 65 63 74 20 74 68 65 20 70 61 67 65 2d 63 61  fect the page-ca
16b0: 63 68 65 20 66 6f 72 20 74 68 65 20 74 65 6d 70  che for the temp
16c0: 20 64 61 74 61 62 61 73 65 2c 20 77 68 65 72 65   database, where
16d0: 20 74 61 62 6c 65 73 20 63 72 65 61 74 65 64 0a   tables created.
16e0: 20 20 75 73 69 6e 67 20 5b 43 52 45 41 54 45 20    using [CREATE 
16f0: 54 41 42 4c 45 20 7c 20 43 52 45 41 54 45 20 54  TABLE | CREATE T
1700: 45 4d 50 20 54 41 42 4c 45 5d 20 61 72 65 20 73  EMP TABLE] are s
1710: 74 6f 72 65 64 2e 20 54 68 65 20 64 65 66 61 75  tored. The defau
1720: 6c 74 20 76 61 6c 75 65 0a 20 20 69 73 20 35 30  lt value.  is 50
1730: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
1740: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1750: 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45  AULT_WAL_AUTOCHE
1760: 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70  CKPOINT=<i>&lt;p
1770: 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ages&gt;</i>} {.
1780: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
1790: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61  s the default pa
17a0: 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65  ge count for the
17b0: 20 5b 57 41 4c 5d 0a 20 20 5b 63 68 65 63 6b 70   [WAL].  [checkp
17c0: 6f 69 6e 74 69 6e 67 20 7c 20 61 75 74 6f 6d 61  ointing | automa
17d0: 74 69 63 20 63 68 65 63 6b 70 6f 69 6e 74 69 6e  tic checkpointin
17e0: 67 5d 20 66 65 61 74 75 72 65 2e 20 20 49 66 20  g] feature.  If 
17f0: 75 6e 73 70 65 63 69 66 69 65 64 2c 0a 20 20 74  unspecified,.  t
1800: 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20  he default page 
1810: 63 6f 75 6e 74 20 69 73 20 31 30 30 30 2e 0a 7d  count is 1000..}
1820: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1830: 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41   {SQLITE_MAX_MMA
1840: 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d  P_SIZE=<i>N</i>}
1850: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
1860: 73 65 74 73 20 61 20 68 61 72 64 20 75 70 70 65  sets a hard uppe
1870: 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 61  r bound on the a
1880: 6d 6f 75 6e 74 20 6f 66 20 61 64 64 72 65 73 73  mount of address
1890: 20 73 70 61 63 65 20 74 68 61 74 0a 20 20 63 61   space that.  ca
18a0: 6e 20 62 65 20 75 73 65 64 20 62 79 20 61 6e 79  n be used by any
18b0: 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65   single database
18c0: 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70 70   for memory-mapp
18d0: 65 64 20 49 2f 4f 2e 0a 20 20 53 65 74 74 69 6e  ed I/O..  Settin
18e0: 67 20 74 68 69 73 20 76 61 6c 75 65 20 74 6f 20  g this value to 
18f0: 30 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69 73  0 completely dis
1900: 61 62 6c 65 73 20 6d 65 6d 6f 72 79 2d 6d 61 70  ables memory-map
1910: 70 65 64 20 49 2f 4f 20 61 6e 64 0a 20 20 63 61  ped I/O and.  ca
1920: 75 73 65 73 20 6c 6f 67 69 63 20 61 73 73 6f 63  uses logic assoc
1930: 69 61 74 65 64 20 77 69 74 68 20 6d 65 6d 6f 72  iated with memor
1940: 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 74 6f 20  y-mapped I/O to 
1950: 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  be omitted from 
1960: 74 68 65 0a 20 20 62 75 69 6c 64 2e 20 20 54 68  the.  build.  Th
1970: 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 63  is option does c
1980: 68 61 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c  hange the defaul
1990: 74 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  t memory-mapped 
19a0: 49 2f 4f 20 61 64 64 72 65 73 73 0a 20 20 73 70  I/O address.  sp
19b0: 61 63 65 20 73 69 7a 65 20 28 73 65 74 20 62 79  ace size (set by
19c0: 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
19d0: 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 6f 72 0a 20  _MMAP_SIZE] or. 
19e0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
19f0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1a00: 4d 41 50 5f 53 49 5a 45 5d 29 29 20 6f 72 20 74  MAP_SIZE])) or t
1a10: 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65 20 6d 65  he.  run-time me
1a20: 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20  mory-mapped I/O 
1a30: 61 64 64 72 65 73 73 20 73 70 61 63 65 20 73 69  address space si
1a40: 7a 65 20 28 73 65 74 20 62 79 0a 20 20 73 71 6c  ze (set by.  sql
1a50: 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
1a60: 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  l([SQLITE_FCNTL_
1a70: 4d 4d 41 50 5f 53 49 5a 45 5d 29 29 20 6f 72 0a  MMAP_SIZE])) or.
1a80: 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73    [PRAGMA mmap_s
1a90: 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20 61 73  ize]) as long as
1aa0: 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73 65 74   those other set
1ab0: 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73 20 74  tings are less t
1ac0: 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69 6d 75  han the.  maximu
1ad0: 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65 64 20  m value defined 
1ae0: 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  here..}..COMPILE
1af0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
1b00: 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59  MAX_SCHEMA_RETRY
1b10: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 57  =<i>N</i>} {.  W
1b20: 68 65 6e 65 76 65 72 20 74 68 65 20 64 61 74 61  henever the data
1b30: 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e  base schema chan
1b40: 67 65 73 2c 20 70 72 65 70 61 72 65 64 20 73 74  ges, prepared st
1b50: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61 75 74  atements are aut
1b60: 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72 65 70  omatically.  rep
1b70: 72 65 70 61 72 65 64 20 74 6f 20 61 63 63 6f 6d  repared to accom
1b80: 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77 20 73  modate the new s
1b90: 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20 69 73  chema.  There is
1ba0: 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f   a race conditio
1bb0: 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68 61 74  n here.  in that
1bc0: 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64 20 69   if one thread i
1bd0: 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63 68 61  s constantly cha
1be0: 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65 6d 61  nging the schema
1bf0: 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  , another thread
1c00: 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20 6f 6e  .  might spin on
1c10: 20 72 65 70 61 72 73 65 73 20 61 6e 64 20 72 65   reparses and re
1c20: 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f 66 20  preparations of 
1c30: 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  a prepared state
1c40: 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76 65 72  ment and.  never
1c50: 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20 77 6f   get any real wo
1c60: 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73 20 70  rk done.  This p
1c70: 61 72 61 6d 65 74 65 72 20 70 72 65 76 65 6e 74  arameter prevent
1c80: 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f  s an infinite lo
1c90: 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e 67 20  op.  by forcing 
1ca0: 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74 68 72  the spinning thr
1cb0: 65 61 64 20 74 6f 20 67 69 76 65 20 75 70 20 61  ead to give up a
1cc0: 66 74 65 72 20 61 20 66 69 78 65 64 20 6e 75 6d  fter a fixed num
1cd0: 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74 73 0a  ber of attempts.
1ce0: 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69 6e 67    at recompiling
1cf0: 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
1d00: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 64 65  atement.  The de
1d10: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
1d20: 20 35 20 77 68 69 63 68 20 69 73 0a 20 20 6d 6f   5 which is.  mo
1d30: 72 65 20 74 68 61 6e 20 61 64 65 71 75 61 74 65  re than adequate
1d40: 20 66 6f 72 20 6d 6f 73 74 20 61 70 70 6c 69 63   for most applic
1d50: 61 74 69 6f 6e 73 2e 20 20 42 75 74 20 69 6e 20  ations.  But in 
1d60: 73 6f 6d 65 20 6f 62 73 63 75 72 65 20 63 61 73  some obscure cas
1d70: 65 73 2c 20 69 74 0a 20 20 69 73 20 75 73 65 66  es, it.  is usef
1d80: 75 6c 20 74 6f 20 72 61 69 73 65 20 74 68 69 73  ul to raise this
1d90: 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 31 30   parameter to 10
1da0: 30 20 6f 72 20 6d 6f 72 65 20 74 6f 20 70 72 65  0 or more to pre
1db0: 76 65 6e 74 20 73 70 75 72 69 6f 75 73 0a 20 20  vent spurious.  
1dc0: 5b 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 5d 20  [SQLITE_SCHEMA] 
1dd0: 65 72 72 6f 72 73 20 77 68 65 6e 20 72 75 6e 6e  errors when runn
1de0: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  ing [sqlite3_ste
1df0: 70 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  p()]..}..COMPILE
1e00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
1e10: 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52  POWERSAFE_OVERWR
1e20: 49 54 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  ITE=<i>&lt;0 or 
1e30: 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  1&gt;</i>} {.  T
1e40: 68 69 73 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67  his option chang
1e50: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 61  es the default a
1e60: 73 73 75 6d 70 74 69 6f 6e 20 61 62 6f 75 74 20  ssumption about 
1e70: 5b 70 6f 77 65 72 73 61 66 65 20 6f 76 65 72 77  [powersafe overw
1e80: 72 69 74 65 5d 0a 20 20 66 6f 72 20 74 68 65 20  rite].  for the 
1e90: 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73  underlying files
1ea0: 79 73 74 65 6d 73 20 66 6f 72 20 74 68 65 20 75  ystems for the u
1eb0: 6e 69 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20  nix and windows 
1ec0: 5b 56 46 53 65 73 5d 2e 0a 20 20 53 65 74 74 69  [VFSes]..  Setti
1ed0: 6e 67 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53  ng SQLITE_POWERS
1ee0: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20 74 6f  AFE_OVERWRITE to
1ef0: 20 31 20 63 61 75 73 65 73 20 53 51 4c 69 74 65   1 causes SQLite
1f00: 20 74 6f 20 61 73 73 75 6d 65 20 74 68 61 74 0a   to assume that.
1f10: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65    application-le
1f20: 76 65 6c 20 77 72 69 74 65 73 20 63 61 6e 6e 6f  vel writes canno
1f30: 74 20 63 68 61 6e 67 65 73 20 62 79 74 65 73 20  t changes bytes 
1f40: 6f 75 74 73 69 64 65 20 74 68 65 20 72 61 6e 67  outside the rang
1f50: 65 20 6f 66 0a 20 20 62 79 74 65 73 20 77 72 69  e of.  bytes wri
1f60: 74 74 65 6e 20 65 76 65 6e 20 69 66 20 74 68 65  tten even if the
1f70: 20 77 72 69 74 65 20 6f 63 63 75 72 73 20 6a 75   write occurs ju
1f80: 73 74 20 62 65 66 6f 72 65 20 61 20 70 6f 77 65  st before a powe
1f90: 72 20 6c 6f 73 73 2e 0a 20 20 57 69 74 68 20 53  r loss..  With S
1fa0: 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f  QLITE_POWERSAFE_
1fb0: 4f 56 45 52 57 52 49 54 45 20 73 65 74 20 74 6f  OVERWRITE set to
1fc0: 20 30 2c 20 53 51 4c 69 74 65 20 61 73 73 75 6d   0, SQLite assum
1fd0: 65 73 20 74 68 61 74 20 6f 74 68 65 72 0a 20 20  es that other.  
1fe0: 62 79 74 65 73 20 69 6e 20 74 68 65 20 73 61 6d  bytes in the sam
1ff0: 65 20 73 65 63 74 6f 72 20 77 69 74 68 20 61 20  e sector with a 
2000: 77 72 69 74 74 65 6e 20 62 79 74 65 20 6d 69 67  written byte mig
2010: 68 74 20 62 65 20 63 68 61 6e 67 65 64 20 6f 72  ht be changed or
2020: 20 0a 20 20 64 61 6d 61 67 65 64 20 62 79 20 61   .  damaged by a
2030: 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 7d 0a 0a   power loss..}..
2040: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
2050: 59 59 53 54 41 43 4b 44 45 50 54 48 3d 3c 69 3e  YYSTACKDEPTH=<i>
2060: 26 6c 74 3b 6d 61 78 5f 64 65 70 74 68 26 67 74  &lt;max_depth&gt
2070: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
2080: 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20 6d  macro sets the m
2090: 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20  aximum depth of 
20a0: 74 68 65 20 4c 41 4c 52 28 31 29 20 73 74 61 63  the LALR(1) stac
20b0: 6b 20 75 73 65 64 20 62 79 0a 20 20 74 68 65 20  k used by.  the 
20c0: 53 51 4c 20 70 61 72 73 65 72 20 77 69 74 68 69  SQL parser withi
20d0: 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20 64  n SQLite.  The d
20e0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
20f0: 31 30 30 2e 20 20 41 20 74 79 70 69 63 61 6c 0a  100.  A typical.
2100: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 69    application wi
2110: 6c 6c 20 75 73 65 20 6c 65 73 73 20 74 68 61 6e  ll use less than
2120: 20 61 62 6f 75 74 20 32 30 20 6c 65 76 65 6c 73   about 20 levels
2130: 20 6f 66 20 74 68 65 20 73 74 61 63 6b 2e 0a 20   of the stack.. 
2140: 20 44 65 76 65 6c 6f 70 65 72 73 20 77 68 6f 73   Developers whos
2150: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 63  e applications c
2160: 6f 6e 74 61 69 6e 20 53 51 4c 20 73 74 61 74 65  ontain SQL state
2170: 6d 65 6e 74 73 20 74 68 61 74 20 0a 20 20 6e 65  ments that .  ne
2180: 65 64 20 6d 6f 72 65 20 74 68 61 6e 20 31 30 30  ed more than 100
2190: 20 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 65   LALR(1) stack e
21a0: 6e 74 72 69 65 73 20 73 68 6f 75 6c 64 20 73 65  ntries should se
21b0: 72 69 6f 75 73 6c 79 0a 20 20 63 6f 6e 73 69 64  riously.  consid
21c0: 65 72 20 72 65 66 61 63 74 6f 72 69 6e 67 20 74  er refactoring t
21d0: 68 65 69 72 20 53 51 4c 20 61 73 20 69 74 20 69  heir SQL as it i
21e0: 73 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65 20 77  s likely to be w
21f0: 65 6c 6c 20 62 65 79 6f 6e 64 0a 20 20 74 68 65  ell beyond.  the
2200: 20 61 62 69 6c 69 74 79 20 6f 66 20 61 6e 79 20   ability of any 
2210: 68 75 6d 61 6e 20 74 6f 20 63 6f 6d 70 72 65 68  human to compreh
2220: 65 6e 64 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  end..}.</tcl>..<
2230: 68 32 3e 31 2e 32 20 4f 70 74 69 6f 6e 73 20 54  h2>1.2 Options T
2240: 6f 20 53 65 74 20 53 69 7a 65 20 4c 69 6d 69 74  o Set Size Limit
2250: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 72 65  s</h2>..<p>There
2260: 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   are compile-tim
2270: 65 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 77  e options that w
2280: 69 6c 6c 20 73 65 74 20 75 70 70 65 72 20 62 6f  ill set upper bo
2290: 75 6e 64 73 0a 6f 6e 20 74 68 65 20 73 69 7a 65  unds.on the size
22a0: 73 20 6f 66 20 76 61 72 69 6f 75 73 20 73 74 72  s of various str
22b0: 75 63 74 75 72 65 73 20 69 6e 20 53 51 4c 69 74  uctures in SQLit
22c0: 65 2e 20 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d  e.  The compile-
22d0: 74 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 6e 6f 72  time.options nor
22e0: 6d 61 6c 6c 79 20 73 65 74 20 61 20 68 61 72 64  mally set a hard
22f0: 20 75 70 70 65 72 20 62 6f 75 6e 64 20 74 68 61   upper bound tha
2300: 74 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64  t can be changed
2310: 0a 61 74 20 72 75 6e 2d 74 69 6d 65 20 6f 6e 20  .at run-time on 
2320: 69 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74 61  individual [data
2330: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
2340: 5d 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c  ] using the.[sql
2350: 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e  ite3_limit()] in
2360: 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70  terface.</p>..<p
2370: 3e 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  >The compile-tim
2380: 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 73 65  e options for se
2390: 74 74 69 6e 67 20 75 70 70 65 72 20 62 6f 75 6e  tting upper boun
23a0: 64 73 20 61 72 65 0a 5b 6c 69 6d 69 74 73 20 7c  ds are.[limits |
23b0: 20 64 6f 63 75 6d 65 6e 74 65 64 20 73 65 70 61   documented sepa
23c0: 72 61 74 65 6c 79 5d 2e 20 20 54 68 65 20 66 6f  rately].  The fo
23d0: 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20 6c 69 73  llowing is a lis
23e0: 74 20 6f 66 0a 74 68 65 20 61 76 61 69 6c 61 62  t of.the availab
23f0: 6c 65 20 73 65 74 74 69 6e 67 73 3a 3c 2f 70 3e  le settings:</p>
2400: 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c  ..<ul>.<li> [SQL
2410: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
2420: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
2430: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e  QLITE_MAX_COLUMN
2440: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
2450: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55  QLITE_MAX_COMPOU
2460: 4e 44 5f 53 45 4c 45 43 54 5d 20 20 3c 2f 6c 69  ND_SELECT]  </li
2470: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
2480: 41 58 5f 45 58 50 52 5f 44 45 50 54 48 5d 20 20  AX_EXPR_DEPTH]  
2490: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
24a0: 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f  TE_MAX_FUNCTION_
24b0: 41 52 47 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  ARG]  </li>.<li>
24c0: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e   [SQLITE_MAX_LEN
24d0: 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  GTH]  </li>.<li>
24e0: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b   [SQLITE_MAX_LIK
24f0: 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48  E_PATTERN_LENGTH
2500: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
2510: 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43  QLITE_MAX_PAGE_C
2520: 4f 55 4e 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  OUNT]  </li>.<li
2530: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51  > [SQLITE_MAX_SQ
2540: 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  L_LENGTH]  </li>
2550: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
2560: 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45  X_VARIABLE_NUMBE
2570: 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  R]  </li>.</ul>.
2580: 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f  .<a name="contro
2590: 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a  lfeatures"></a>.
25a0: 3c 68 32 3e 31 2e 33 20 4f 70 74 69 6f 6e 73 20  <h2>1.3 Options 
25b0: 54 6f 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61  To Control Opera
25c0: 74 69 6e 67 20 43 68 61 72 61 63 74 65 72 69 73  ting Characteris
25d0: 74 69 63 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  tics</h2>..<tcl>
25e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
25f0: 7b 53 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41  {SQLITE_4_BYTE_A
2600: 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b  LIGNED_MALLOC} {
2610: 0a 20 20 4f 6e 20 6d 6f 73 74 20 73 79 73 74 65  .  On most syste
2620: 6d 73 2c 20 74 68 65 20 6d 61 6c 6c 6f 63 28 29  ms, the malloc()
2630: 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 72 65 74   system call ret
2640: 75 72 6e 73 20 61 20 62 75 66 66 65 72 20 74 68  urns a buffer th
2650: 61 74 20 69 73 0a 20 20 61 6c 69 67 6e 65 64 20  at is.  aligned 
2660: 74 6f 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75  to an 8-byte bou
2670: 6e 64 61 72 79 2e 20 20 42 75 74 20 6f 6e 20 73  ndary.  But on s
2680: 6f 6d 65 20 73 79 73 74 65 6d 73 20 28 65 78 3a  ome systems (ex:
2690: 20 77 69 6e 64 6f 77 73 29 20 6d 61 6c 6c 6f 63   windows) malloc
26a0: 28 29 0a 20 20 72 65 74 75 72 6e 73 20 34 2d 62  ().  returns 4-b
26b0: 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e  yte aligned poin
26c0: 74 65 72 2e 20 20 54 68 69 73 20 63 6f 6d 70 69  ter.  This compi
26d0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6d  le-time option m
26e0: 75 73 74 20 62 65 20 75 73 65 64 0a 20 20 6f 6e  ust be used.  on
26f0: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65   systems that re
2700: 74 75 72 6e 20 34 2d 62 79 74 65 20 61 6c 69 67  turn 4-byte alig
2710: 6e 65 64 20 70 6f 69 6e 74 65 72 73 20 66 72 6f  ned pointers fro
2720: 6d 20 6d 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43  m malloc()..}..C
2730: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
2740: 51 4c 49 54 45 5f 43 41 53 45 5f 53 45 4e 53 49  QLITE_CASE_SENSI
2750: 54 49 56 45 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49  TIVE_LIKE} {.  I
2760: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
2770: 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74   present, then t
2780: 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b  he built-in [LIK
2790: 45 5d 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c  E] operator will
27a0: 20 62 65 0a 20 20 63 61 73 65 20 73 65 6e 73 69   be.  case sensi
27b0: 74 69 76 65 2e 20 20 54 68 69 73 20 73 61 6d 65  tive.  This same
27c0: 20 65 66 66 65 63 74 20 63 61 6e 20 62 65 20 61   effect can be a
27d0: 63 68 69 65 76 65 64 20 61 74 20 72 75 6e 2d 74  chieved at run-t
27e0: 69 6d 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20  ime using.  the 
27f0: 5b 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f  [case_sensitive_
2800: 6c 69 6b 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  like pragma]..}.
2810: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2820: 7b 53 51 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f  {SQLITE_DIRECT_O
2830: 56 45 52 46 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a  VERFLOW_READ} {.
2840: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
2850: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 63  on is present, c
2860: 6f 6e 74 65 6e 74 20 63 6f 6e 74 61 69 6e 65 64  ontent contained
2870: 20 69 6e 0a 20 20 5b 6f 76 65 72 66 6c 6f 77 20   in.  [overflow 
2880: 70 61 67 65 73 5d 20 6f 66 20 74 68 65 20 64 61  pages] of the da
2890: 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 72  tabase file is r
28a0: 65 61 64 20 64 69 72 65 63 74 6c 79 20 66 72 6f  ead directly fro
28b0: 6d 20 64 69 73 6b 2c 0a 20 20 62 79 70 61 73 73  m disk,.  bypass
28c0: 69 6e 67 20 74 68 65 20 5b 70 61 67 65 20 63 61  ing the [page ca
28d0: 63 68 65 5d 2c 20 64 75 72 69 6e 67 20 72 65 61  che], during rea
28e0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20  d transactions. 
28f0: 20 49 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   In applications
2900: 0a 20 20 74 68 61 74 20 64 6f 20 61 20 6c 6f 74  .  that do a lot
2910: 20 6f 66 20 72 65 61 64 73 20 6f 66 20 6c 61 72   of reads of lar
2920: 67 65 20 42 4c 4f 42 73 2c 20 74 68 69 73 20 6f  ge BLOBs, this o
2930: 70 74 69 6f 6e 20 6d 69 67 68 74 20 69 6d 70 72  ption might impr
2940: 6f 76 65 20 72 65 61 64 0a 20 20 70 65 72 66 6f  ove read.  perfo
2950: 72 6d 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  rmance..}..COMPI
2960: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
2970: 45 5f 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a  E_HAVE_ISNAN} {.
2980: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
2990: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65   is present, the
29a0: 6e 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73  n SQLite will us
29b0: 65 20 74 68 65 20 69 73 6e 61 6e 28 29 20 66 75  e the isnan() fu
29c0: 6e 63 74 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68  nction from.  th
29d0: 65 20 73 79 73 74 65 6d 20 6d 61 74 68 20 6c 69  e system math li
29e0: 62 72 61 72 79 2e 20 20 57 69 74 68 6f 75 74 20  brary.  Without 
29f0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 28 74 68 65  this option (the
2a00: 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f   default behavio
2a10: 72 29 0a 20 20 53 51 4c 69 74 65 20 75 73 65 73  r).  SQLite uses
2a20: 20 69 74 73 20 6f 77 6e 20 69 6e 74 65 72 6e 61   its own interna
2a30: 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  l implementation
2a40: 20 6f 66 20 69 73 6e 61 6e 28 29 2e 20 20 53 51   of isnan().  SQ
2a50: 4c 69 74 65 20 75 73 65 73 0a 20 20 69 74 73 20  Lite uses.  its 
2a60: 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20 69 73 6e  own internal isn
2a70: 61 6e 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74  an() implementat
2a80: 69 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 20 62  ion by default b
2a90: 65 63 61 75 73 65 20 6f 66 20 70 61 73 74 0a 20  ecause of past. 
2aa0: 20 70 72 6f 62 6c 65 6d 73 20 77 69 74 68 20 73   problems with s
2ab0: 79 73 74 65 6d 20 69 73 6e 61 6e 28 29 20 66 75  ystem isnan() fu
2ac0: 6e 63 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  nctions..}..COMP
2ad0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2ae0: 54 45 5f 4f 53 5f 4f 54 48 45 52 3d 3c 69 3e 26  TE_OS_OTHER=<i>&
2af0: 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69  lt;0 or 1&gt;</i
2b00: 3e 7d 20 7b 0a 20 20 54 68 65 20 6f 70 74 69 6f  >} {.  The optio
2b10: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
2b20: 74 6f 20 6f 6d 69 74 20 69 74 73 20 62 75 69 6c  to omit its buil
2b30: 74 2d 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 73  t-in operating s
2b40: 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 73  ystem interfaces
2b50: 0a 20 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e  .  for Unix, Win
2b60: 64 6f 77 73 2c 20 61 6e 64 20 4f 53 2f 32 2e 20  dows, and OS/2. 
2b70: 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6c   The resulting l
2b80: 69 62 72 61 72 79 20 77 69 6c 6c 20 68 61 76 65  ibrary will have
2b90: 20 6e 6f 20 64 65 66 61 75 6c 74 0a 20 20 5b 73   no default.  [s
2ba0: 71 6c 69 74 65 33 5f 76 66 73 20 7c 20 6f 70 65  qlite3_vfs | ope
2bb0: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e  rating system in
2bc0: 74 65 72 66 61 63 65 5d 2e 20 20 41 70 70 6c 69  terface].  Appli
2bd0: 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 75 73 65  cations must use
2be0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f  .  [sqlite3_vfs_
2bf0: 72 65 67 69 73 74 65 72 28 29 5d 20 74 6f 20 72  register()] to r
2c00: 65 67 69 73 74 65 72 20 61 6e 20 61 70 70 72 6f  egister an appro
2c10: 70 72 69 61 74 65 20 69 6e 74 65 72 66 61 63 65  priate interface
2c20: 20 62 65 66 6f 72 65 0a 20 20 75 73 69 6e 67 20   before.  using 
2c30: 53 51 4c 69 74 65 2e 20 20 41 70 70 6c 69 63 61  SQLite.  Applica
2c40: 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20  tions must also 
2c50: 73 75 70 70 6c 79 20 69 6d 70 6c 65 6d 65 6e 74  supply implement
2c60: 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 0a 20  ations for the. 
2c70: 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69   [sqlite3_os_ini
2c80: 74 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  t()] and [sqlite
2c90: 33 5f 6f 73 5f 65 6e 64 28 29 5d 20 69 6e 74 65  3_os_end()] inte
2ca0: 72 66 61 63 65 73 2e 20 20 54 68 65 20 75 73 75  rfaces.  The usu
2cb0: 61 6c 20 70 72 61 63 74 69 63 65 0a 20 20 69 73  al practice.  is
2cc0: 20 66 6f 72 20 74 68 65 20 73 75 70 70 6c 69 65   for the supplie
2cd0: 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  d [sqlite3_os_in
2ce0: 69 74 28 29 5d 20 74 6f 20 69 6e 76 6f 6b 65 20  it()] to invoke 
2cf0: 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67  [sqlite3_vfs_reg
2d00: 69 73 74 65 72 28 29 5d 2e 0a 20 20 53 51 4c 69  ister()]..  SQLi
2d10: 74 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69  te will automati
2d20: 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 20 5b 73 71  cally invoke [sq
2d30: 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d  lite3_os_init()]
2d40: 20 77 68 65 6e 20 69 74 20 69 6e 69 74 69 61 6c   when it initial
2d50: 69 7a 65 73 2e 0a 0a 20 20 54 68 69 73 20 6f 70  izes...  This op
2d60: 74 69 6f 6e 20 69 73 20 74 79 70 69 63 61 6c 6c  tion is typicall
2d70: 79 20 75 73 65 64 20 77 68 65 6e 20 62 75 69 6c  y used when buil
2d80: 64 69 6e 67 20 53 51 4c 69 74 65 20 66 6f 72 20  ding SQLite for 
2d90: 61 6e 20 65 6d 62 65 64 64 65 64 0a 20 20 70 6c  an embedded.  pl
2da0: 61 74 66 6f 72 6d 20 77 69 74 68 20 61 20 63 75  atform with a cu
2db0: 73 74 6f 6d 20 6f 70 65 72 61 74 69 6e 67 20 73  stom operating s
2dc0: 79 73 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ystem..}..COMPIL
2dd0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2de0: 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45 7d 20  _SECURE_DELETE} 
2df0: 7b 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  {.  This compile
2e00: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61  -time option cha
2e10: 6e 67 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  nges the default
2e20: 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 0a   setting of the.
2e30: 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65    [secure_delete
2e40: 20 70 72 61 67 6d 61 5d 2e 20 20 57 68 65 6e 20   pragma].  When 
2e50: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e  this option is n
2e60: 6f 74 20 75 73 65 64 2c 20 73 65 63 75 72 65 5f  ot used, secure_
2e70: 64 65 6c 65 74 65 20 64 65 66 61 75 6c 74 73 0a  delete defaults.
2e80: 20 20 74 6f 20 6f 66 66 2e 20 20 57 68 65 6e 20    to off.  When 
2e90: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
2ea0: 72 65 73 65 6e 74 2c 20 73 65 63 75 72 65 5f 64  resent, secure_d
2eb0: 65 6c 65 74 65 20 64 65 66 61 75 6c 74 73 20 74  elete defaults t
2ec0: 6f 20 6f 6e 2e 0a 0a 20 20 54 68 65 20 73 65 63  o on...  The sec
2ed0: 75 72 65 5f 64 65 6c 65 74 65 20 73 65 74 74 69  ure_delete setti
2ee0: 6e 67 20 63 61 75 73 65 73 20 64 65 6c 65 74 65  ng causes delete
2ef0: 64 20 63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20  d content to be 
2f00: 6f 76 65 72 77 72 69 74 74 65 6e 20 77 69 74 68  overwritten with
2f10: 0a 20 20 7a 65 72 6f 73 2e 20 20 54 68 65 72 65  .  zeros.  There
2f20: 20 69 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66   is a small perf
2f30: 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 20  ormance penalty 
2f40: 66 6f 72 20 74 68 69 73 20 73 69 6e 63 65 20 61  for this since a
2f50: 64 64 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20  dditional I/O.  
2f60: 6d 75 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20  must occur.  On 
2f70: 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20  the other hand, 
2f80: 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 63 61  secure_delete ca
2f90: 6e 20 70 72 65 76 65 6e 74 20 73 65 6e 73 69 74  n prevent sensit
2fa0: 69 76 65 20 0a 20 20 69 6e 66 6f 72 6d 61 74 69  ive .  informati
2fb0: 6f 6e 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e  on from lingerin
2fc0: 67 20 69 6e 20 75 6e 75 73 65 64 20 70 61 72 74  g in unused part
2fd0: 73 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  s of the databas
2fe0: 65 20 66 69 6c 65 20 61 66 74 65 72 20 69 74 0a  e file after it.
2ff0: 20 20 68 61 73 20 61 6c 6c 65 67 65 64 6c 79 20    has allegedly 
3000: 62 65 65 6e 20 64 65 6c 65 74 65 64 2e 20 20 53  been deleted.  S
3010: 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61  ee the documenta
3020: 74 69 6f 6e 20 6f 6e 20 74 68 65 0a 20 20 5b 73  tion on the.  [s
3030: 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61  ecure_delete pra
3040: 67 6d 61 5d 20 66 6f 72 20 61 64 64 69 74 69 6f  gma] for additio
3050: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
3060: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3070: 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 48 52 45 41  ON {SQLITE_THREA
3080: 44 53 41 46 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f  DSAFE=<i>&lt;0 o
3090: 72 20 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e  r 1 or 2&gt;</i>
30a0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
30b0: 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68  n controls wheth
30c0: 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65 20 69  er or not code i
30d0: 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51  s included in SQ
30e0: 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65  Lite to.  enable
30f0: 20 69 74 20 74 6f 20 6f 70 65 72 61 74 65 20 73   it to operate s
3100: 61 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c 74 69  afely in a multi
3110: 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e  threaded environ
3120: 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20 64 65 66  ment.  The.  def
3130: 61 75 6c 74 20 69 73 20 53 51 4c 49 54 45 5f 54  ault is SQLITE_T
3140: 48 52 45 41 44 53 41 46 45 3d 31 20 77 68 69 63  HREADSAFE=1 whic
3150: 68 20 69 73 20 73 61 66 65 20 66 6f 72 20 75 73  h is safe for us
3160: 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65  e in a multithre
3170: 61 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e 6d 65  aded.  environme
3180: 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c  nt.  When compil
3190: 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54  ed with SQLITE_T
31a0: 48 52 45 41 44 53 41 46 45 3d 30 20 61 6c 6c 20  HREADSAFE=0 all 
31b0: 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 0a 20 20  mutexing code.  
31c0: 69 73 20 6f 6d 69 74 74 65 64 20 61 6e 64 20 69  is omitted and i
31d0: 74 20 69 73 20 75 6e 73 61 66 65 20 74 6f 20 75  t is unsafe to u
31e0: 73 65 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d  se SQLite in a m
31f0: 75 6c 74 69 74 68 72 65 61 64 65 64 20 70 72 6f  ultithreaded pro
3200: 67 72 61 6d 2e 0a 20 20 57 68 65 6e 20 63 6f 6d  gram..  When com
3210: 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54  piled with SQLIT
3220: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 2c 20  E_THREADSAFE=2, 
3230: 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 75 73  SQLite can be us
3240: 65 64 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  ed in a multithr
3250: 65 61 64 65 64 0a 20 20 70 72 6f 67 72 61 6d 20  eaded.  program 
3260: 73 6f 20 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77  so long as no tw
3270: 6f 20 74 68 72 65 61 64 73 20 61 74 74 65 6d 70  o threads attemp
3280: 74 20 74 6f 20 75 73 65 20 74 68 65 20 73 61 6d  t to use the sam
3290: 65 0a 20 20 5b 64 61 74 61 62 61 73 65 20 63 6f  e.  [database co
32a0: 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20 61 6e  nnection] (or an
32b0: 79 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  y [prepared stat
32c0: 65 6d 65 6e 74 73 5d 20 64 65 72 69 76 65 64 20  ements] derived 
32d0: 66 72 6f 6d 0a 20 20 74 68 61 74 20 64 61 74 61  from.  that data
32e0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29  base connection)
32f0: 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
3300: 65 2e 0a 0a 20 20 54 6f 20 70 75 74 20 69 74 20  e...  To put it 
3310: 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 53 51 4c  another way, SQL
3320: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
3330: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
3340: 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  t.  [threading m
3350: 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a  ode] to Serializ
3360: 65 64 2e 20 20 53 51 4c 49 54 45 5f 54 48 52 45  ed.  SQLITE_THRE
3370: 41 44 53 41 46 45 3d 32 20 73 65 74 73 20 74 68  ADSAFE=2 sets th
3380: 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72  e default.  [thr
3390: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20  eading mode] to 
33a0: 4d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 2e 20  Multi-threaded. 
33b0: 20 41 6e 64 20 53 51 4c 49 54 45 5f 54 48 52 45   And SQLITE_THRE
33c0: 41 44 53 41 46 45 3d 30 20 73 65 74 73 20 74 68  ADSAFE=0 sets th
33d0: 65 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  e.  [threading m
33e0: 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74  ode] to Single-t
33f0: 68 72 65 61 64 65 64 2e 0a 0a 20 20 54 68 65 20  hreaded...  The 
3400: 76 61 6c 75 65 20 6f 66 20 53 51 4c 49 54 45 5f  value of SQLITE_
3410: 54 48 52 45 41 44 53 41 46 45 20 63 61 6e 20 62  THREADSAFE can b
3420: 65 20 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20  e determined at 
3430: 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67  run-time.  using
3440: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 68   the [sqlite3_th
3450: 72 65 61 64 73 61 66 65 28 29 5d 20 69 6e 74 65  readsafe()] inte
3460: 72 66 61 63 65 2e 0a 0a 20 20 57 68 65 6e 20 53  rface...  When S
3470: 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e 20 63  QLite has been c
3480: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
3490: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
34a0: 20 6f 72 0a 20 20 53 51 4c 49 54 45 5f 54 48 52   or.  SQLITE_THR
34b0: 45 41 44 53 41 46 45 3d 32 20 74 68 65 6e 20 74  EADSAFE=2 then t
34c0: 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
34d0: 64 65 5d 0a 20 20 63 61 6e 20 62 65 20 61 6c 74  de].  can be alt
34e0: 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  ered at run-time
34f0: 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69   using the [sqli
3500: 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e  te3_config()] in
3510: 74 65 72 66 61 63 65 20 74 6f 67 65 74 68 65 72  terface together
3520: 0a 20 20 77 69 74 68 20 6f 6e 65 20 6f 66 20 74  .  with one of t
3530: 68 65 73 65 20 76 65 72 62 73 3a 0a 0a 20 20 3c  hese verbs:..  <
3540: 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54  ul>.  <li>[SQLIT
3550: 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54  E_CONFIG_SINGLET
3560: 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51  HREAD].  <li>[SQ
3570: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54  LITE_CONFIG_MULT
3580: 49 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b  ITHREAD].  <li>[
3590: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45  SQLITE_CONFIG_SE
35a0: 52 49 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f 75 6c  RIALIZED].  </ul
35b0: 3e 0a 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45  >..  The [SQLITE
35c0: 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 61  _OPEN_NOMUTEX] a
35d0: 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  nd.  [SQLITE_OPE
35e0: 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61  N_FULLMUTEX] fla
35f0: 67 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  gs to [sqlite3_o
3600: 70 65 6e 5f 76 32 28 29 5d 20 63 61 6e 20 61 6c  pen_v2()] can al
3610: 73 6f 20 62 65 20 75 73 65 64 0a 20 20 74 6f 20  so be used.  to 
3620: 61 64 6a 75 73 74 20 74 68 65 20 5b 74 68 72 65  adjust the [thre
3630: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 6f 66 20 69  ading mode] of i
3640: 6e 64 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62  ndividual [datab
3650: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d  ase connections]
3660: 0a 20 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a  .  at run-time..
3670: 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 77 68 65  .  Note that whe
3680: 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  n SQLite is comp
3690: 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  iled with SQLITE
36a0: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 2c 20 74  _THREADSAFE=0, t
36b0: 68 65 20 63 6f 64 65 0a 20 20 74 6f 20 6d 61 6b  he code.  to mak
36c0: 65 20 53 51 4c 69 74 65 20 74 68 72 65 61 64 73  e SQLite threads
36d0: 61 66 65 20 69 73 20 6f 6d 69 74 74 65 64 20 66  afe is omitted f
36e0: 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 20  rom the build.  
36f0: 57 68 65 6e 20 74 68 69 73 20 6f 63 63 75 72 73  When this occurs
3700: 2c 0a 20 20 69 74 20 69 73 20 69 6d 70 6f 73 73  ,.  it is imposs
3710: 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65 20 74  ible to change t
3720: 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
3730: 64 65 5d 20 61 74 20 73 74 61 72 74 2d 74 69 6d  de] at start-tim
3740: 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a  e or run-time...
3750: 20 20 53 65 65 20 74 68 65 20 5b 74 68 72 65 61    See the [threa
3760: 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75 6d  ding mode] docum
3770: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64  entation for add
3780: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
3790: 69 6f 6e 0a 20 20 6f 6e 20 61 73 70 65 63 74 73  ion.  on aspects
37a0: 20 6f 66 20 75 73 69 6e 67 20 53 51 4c 69 74 65   of using SQLite
37b0: 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61   in a multithrea
37c0: 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e  ded environment.
37d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
37e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 54 45 4d 50 5f  ON {SQLITE_TEMP_
37f0: 53 54 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30 20 74  STORE=<i>&lt;0 t
3800: 68 72 6f 75 67 68 20 33 26 67 74 3b 3c 2f 69 3e  hrough 3&gt;</i>
3810: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
3820: 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68  n controls wheth
3830: 65 72 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  er temporary fil
3840: 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 6f 6e  es are stored on
3850: 20 64 69 73 6b 20 6f 72 0a 20 20 69 6e 20 6d 65   disk or.  in me
3860: 6d 6f 72 79 2e 20 20 54 68 65 20 6d 65 61 6e 69  mory.  The meani
3870: 6e 67 73 20 66 6f 72 20 76 61 72 69 6f 75 73 20  ngs for various 
3880: 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68 69 73  settings of this
3890: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20   compile-time.  
38a0: 6f 70 74 69 6f 6e 20 61 72 65 20 61 73 20 66 6f  option are as fo
38b0: 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74 61 62 6c 65  llows:..  <table
38c0: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 32 22   cellpadding="2"
38d0: 20 62 6f 72 64 65 72 3d 22 31 22 3e 0a 20 20 3c   border="1">.  <
38e0: 74 72 3e 3c 74 68 3e 53 51 4c 49 54 45 5f 54 45  tr><th>SQLITE_TE
38f0: 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c 74 68  MP_STORE</th><th
3900: 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c 2f 74  >Meaning</th></t
3910: 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69  r>.  <tr><td ali
3920: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74  gn="center">0</t
3930: 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65  d><td>Always use
3940: 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73   temporary files
3950: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72  </td></tr>.  <tr
3960: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
3970: 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 55 73  er">1</td><td>Us
3980: 65 20 66 69 6c 65 73 20 62 79 20 64 65 66 61 75  e files by defau
3990: 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65  lt but allow the
39a0: 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f  .  [PRAGMA temp_
39b0: 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74  store] command t
39c0: 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c  o override</td><
39d0: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
39e0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c  lign="center">2<
39f0: 2f 74 64 3e 3c 74 64 3e 55 73 65 20 6d 65 6d 6f  /td><td>Use memo
3a00: 72 79 20 62 79 20 64 65 66 61 75 6c 74 20 62 75  ry by default bu
3a10: 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50  t allow the.  [P
3a20: 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65  RAGMA temp_store
3a30: 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65  ] command to ove
3a40: 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  rride</td></tr>.
3a50: 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d    <tr><td align=
3a60: 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c  "center">3</td><
3a70: 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20 6d 65  td>Always use me
3a80: 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20  mory</td></tr>. 
3a90: 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 54 68 65   </table>..  The
3aa0: 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67   default setting
3ab0: 20 69 73 20 31 2e 20 20 0a 20 20 41 64 64 69 74   is 1.  .  Addit
3ac0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
3ad0: 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69  n can be found i
3ae0: 6e 20 5b 74 65 6d 70 73 74 6f 72 65 20 7c 20 74  n [tempstore | t
3af0: 65 6d 70 66 69 6c 65 73 2e 68 74 6d 6c 5d 2e 0a  empfiles.html]..
3b00: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3b10: 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52  N {SQLITE_USE_UR
3b20: 49 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  I} {.  This opti
3b30: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 55  on causes the [U
3b40: 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 70 72 6f  RI filename] pro
3b50: 63 65 73 73 20 6c 6f 67 69 63 20 74 6f 20 62 65  cess logic to be
3b60: 20 65 6e 61 62 6c 65 64 20 62 79 20 0a 20 20 64   enabled by .  d
3b70: 65 66 61 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f 74  efault.  .}..</t
3b80: 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e  cl>..<a name="en
3b90: 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f  ablefeatures"></
3ba0: 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f 70 74 69 6f  a>.<h2>1.4 Optio
3bb0: 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20 46 65 61  ns To Enable Fea
3bc0: 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54  tures Normally T
3bd0: 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32 3e 0a 0a  urned Off</h2>..
3be0: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
3bf0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c  TION {SQLITE_ALL
3c00: 4f 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45  OW_COVERING_INDE
3c10: 58 5f 53 43 41 4e 3d 3c 69 3e 26 6c 74 3b 30 20  X_SCAN=<i>&lt;0 
3c20: 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 1&gt;</i>} {.
3c30: 20 20 54 68 69 73 20 43 2d 70 72 65 70 72 6f 63    This C-preproc
3c40: 65 73 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d  ess macro determ
3c50: 69 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74  ines the default
3c60: 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 0a   setting of the.
3c70: 20 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47    [SQLITE_CONFIG
3c80: 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f  _COVERING_INDEX_
3c90: 53 43 41 4e 5d 20 63 6f 6e 66 69 67 75 72 61 74  SCAN] configurat
3ca0: 69 6f 6e 20 73 65 74 74 69 6e 67 2e 20 20 49 74  ion setting.  It
3cb0: 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 31   defaults.  to 1
3cc0: 20 28 6f 6e 29 20 77 68 69 63 68 20 6d 65 61 6e   (on) which mean
3cd0: 73 20 74 68 61 74 20 63 6f 76 65 72 69 6e 67 20  s that covering 
3ce0: 69 6e 64 69 63 65 73 20 61 72 65 20 75 73 65 64  indices are used
3cf0: 20 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 0a   for full table.
3d00: 20 20 73 63 61 6e 73 20 77 68 65 72 65 20 70 6f    scans where po
3d10: 73 73 69 62 6c 65 2c 20 69 6e 20 6f 72 64 65 72  ssible, in order
3d20: 20 74 6f 20 72 65 64 75 63 65 20 49 2f 4f 20 61   to reduce I/O a
3d30: 6e 64 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f  nd improve perfo
3d40: 72 6d 61 6e 63 65 2e 0a 20 20 48 6f 77 65 76 65  rmance..  Howeve
3d50: 72 2c 20 74 68 65 20 75 73 65 20 6f 66 20 61 20  r, the use of a 
3d60: 63 6f 76 65 72 69 6e 67 20 69 6e 64 65 78 20 66  covering index f
3d70: 6f 72 20 61 20 66 75 6c 6c 20 73 63 61 6e 20 77  or a full scan w
3d80: 69 6c 6c 20 63 61 75 73 65 20 72 65 73 75 6c 74  ill cause result
3d90: 73 0a 20 20 74 6f 20 61 70 70 65 61 72 20 69 6e  s.  to appear in
3da0: 20 61 20 64 69 66 66 65 72 65 6e 74 20 6f 72 64   a different ord
3db0: 65 72 20 66 72 6f 6d 20 6c 65 67 61 63 79 2c 20  er from legacy, 
3dc0: 77 68 69 63 68 20 63 6f 75 6c 64 20 63 61 75 73  which could caus
3dd0: 65 20 73 6f 6d 65 0a 20 20 28 69 6e 63 6f 72 72  e some.  (incorr
3de0: 65 63 74 6c 79 2d 63 6f 64 65 64 29 20 6c 65 67  ectly-coded) leg
3df0: 61 63 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  acy applications
3e00: 20 74 6f 20 62 72 65 61 6b 2e 20 20 48 65 6e 63   to break.  Henc
3e10: 65 2c 20 74 68 65 20 63 6f 76 65 72 69 6e 67 0a  e, the covering.
3e20: 20 20 69 6e 64 65 78 20 73 63 61 6e 20 6f 70 74    index scan opt
3e30: 69 6f 6e 20 63 61 6e 20 62 65 20 64 69 73 61 62  ion can be disab
3e40: 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  led at compile-t
3e50: 69 6d 65 20 6f 6e 20 73 79 73 74 65 6d 73 20 74  ime on systems t
3e60: 68 61 74 20 77 68 61 74 0a 20 20 74 6f 20 6d 69  hat what.  to mi
3e70: 6e 69 6d 69 7a 65 20 74 68 65 69 72 20 72 69 73  nimize their ris
3e80: 6b 20 6f 66 20 65 78 70 6f 73 69 6e 67 20 65 72  k of exposing er
3e90: 72 6f 72 73 20 69 6e 20 6c 65 67 61 63 79 20 61  rors in legacy a
3ea0: 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a  pplications..}..
3eb0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3ec0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f  SQLITE_ENABLE_8_
3ed0: 33 5f 4e 41 4d 45 53 3d 3c 69 3e 26 6c 74 3b 31  3_NAMES=<i>&lt;1
3ee0: 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 2&gt;</i>} {
3ef0: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
3f00: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
3f10: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
3f20: 20 65 78 74 72 61 20 63 6f 64 65 20 69 73 0a 20   extra code is. 
3f30: 20 69 6e 63 6c 75 64 65 64 20 74 68 61 74 20 61   included that a
3f40: 6c 6c 6f 77 73 20 53 51 4c 69 74 65 20 74 6f 20  llows SQLite to 
3f50: 66 75 6e 63 74 69 6f 6e 20 6f 6e 20 61 20 66 69  function on a fi
3f60: 6c 65 73 79 73 74 65 6d 20 74 68 61 74 0a 20 20  lesystem that.  
3f70: 6f 6e 6c 79 20 73 75 70 70 6f 72 74 20 38 2b 33  only support 8+3
3f80: 20 66 69 6c 65 6e 61 6d 65 73 2e 20 20 49 66 20   filenames.  If 
3f90: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69  the value of thi
3fa0: 73 20 6d 61 63 72 6f 20 69 73 20 31 2c 0a 20 20  s macro is 1,.  
3fb0: 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74  then the default
3fc0: 20 62 65 68 61 76 69 6f 72 20 69 73 20 74 6f 20   behavior is to 
3fd0: 63 6f 6e 74 69 6e 75 65 20 74 6f 20 75 73 65 20  continue to use 
3fe0: 6c 6f 6e 67 20 66 69 6c 65 6e 61 6d 65 73 20 61  long filenames a
3ff0: 6e 64 0a 20 20 74 6f 20 6f 6e 6c 79 20 75 73 65  nd.  to only use
4000: 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 69   8+3 filenames i
4010: 66 20 74 68 65 20 0a 20 20 64 61 74 61 62 61 73  f the .  databas
4020: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
4030: 6f 70 65 6e 65 64 20 75 73 69 6e 67 20 5b 55 52  opened using [UR
4040: 49 20 66 69 6c 65 6e 61 6d 65 73 5d 20 77 69 74  I filenames] wit
4050: 68 0a 20 20 74 68 65 20 22 3c 74 74 3e 38 5f 33  h.  the "<tt>8_3
4060: 5f 6e 61 6d 65 73 3d 31 3c 2f 74 74 3e 22 20 71  _names=1</tt>" q
4070: 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e 20  uery parameter. 
4080: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66   If the value of
4090: 0a 20 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73  .  this macro is
40a0: 20 32 2c 20 74 68 65 6e 20 74 68 65 20 75 73 65   2, then the use
40b0: 20 6f 66 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65   of 8+3 filename
40c0: 73 20 62 65 63 6f 6d 65 73 20 74 68 65 20 64 65  s becomes the de
40d0: 66 61 75 6c 74 0a 20 20 62 75 74 20 6d 61 79 20  fault.  but may 
40e0: 62 65 20 64 69 73 61 62 6c 65 64 20 6f 6e 20 75  be disabled on u
40f0: 73 69 6e 67 20 74 68 65 20 3c 74 74 3e 38 5f 33  sing the <tt>8_3
4100: 5f 6e 61 6d 65 73 3d 30 3c 2f 74 74 3e 20 71 75  _names=0</tt> qu
4110: 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e 0a 20  ery parameter.. 
4120: 20 53 65 65 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   See .}..COMPILE
4130: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
4140: 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f 57 52  ENABLE_ATOMIC_WR
4150: 49 54 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  ITE} {.  If this
4160: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
4170: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
4180: 20 61 6e 64 20 69 66 20 74 68 65 0a 20 20 78 44   and if the.  xD
4190: 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73  eviceCharacteris
41a0: 74 69 63 73 20 6d 65 74 68 6f 64 20 6f 66 20 5b  tics method of [
41b0: 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
41c0: 64 73 5d 20 6f 62 6a 65 63 74 20 66 6f 72 0a 20  ds] object for. 
41d0: 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
41e0: 20 72 65 70 6f 72 74 73 20 28 76 69 61 20 6f 6e   reports (via on
41f0: 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45  e of the [SQLITE
4200: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 20 62  _IOCAP_ATOMIC] b
4210: 69 74 73 29 0a 20 20 74 68 61 74 20 74 68 65 20  its).  that the 
4220: 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f  filesystem suppo
4230: 72 74 73 20 61 74 6f 6d 69 63 20 77 72 69 74 65  rts atomic write
4240: 73 20 61 6e 64 20 69 66 20 61 20 74 72 61 6e 73  s and if a trans
4250: 61 63 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c 76 65  action.  involve
4260: 73 20 61 20 63 68 61 6e 67 65 20 74 6f 20 6f 6e  s a change to on
4270: 6c 79 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65  ly a single page
4280: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
4290: 20 66 69 6c 65 2c 0a 20 20 74 68 65 6e 20 74 68   file,.  then th
42a0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f  e transaction co
42b0: 6d 6d 69 74 73 20 77 69 74 68 20 6a 75 73 74 20  mmits with just 
42c0: 61 20 73 69 6e 67 6c 65 20 77 72 69 74 65 20 72  a single write r
42d0: 65 71 75 65 73 74 20 6f 66 0a 20 20 61 20 73 69  equest of.  a si
42e0: 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65  ngle page of the
42f0: 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 6e 6f   database and no
4300: 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
4310: 6c 20 69 73 20 63 72 65 61 74 65 64 0a 20 20 6f  l is created.  o
4320: 72 20 77 72 69 74 74 65 6e 2e 20 20 4f 6e 20 66  r written.  On f
4330: 69 6c 65 73 79 73 74 65 6d 73 20 74 68 61 74 20  ilesystems that 
4340: 73 75 70 70 6f 72 74 20 61 74 6f 6d 69 63 20 77  support atomic w
4350: 72 69 74 65 73 2c 20 74 68 69 73 0a 20 20 6f 70  rites, this.  op
4360: 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 72  timization can r
4370: 65 73 75 6c 74 20 69 6e 20 73 69 67 6e 69 66 69  esult in signifi
4380: 63 61 6e 74 20 73 70 65 65 64 20 69 6d 70 72 6f  cant speed impro
4390: 76 65 6d 65 6e 74 73 20 66 6f 72 0a 20 20 73 6d  vements for.  sm
43a0: 61 6c 6c 20 75 70 64 61 74 65 73 2e 20 20 48 6f  all updates.  Ho
43b0: 77 65 76 65 72 2c 20 66 65 77 20 66 69 6c 65 73  wever, few files
43c0: 79 73 74 65 6d 73 20 73 75 70 70 6f 72 74 20 74  ystems support t
43d0: 68 69 73 20 63 61 70 61 62 69 6c 69 74 79 0a 20  his capability. 
43e0: 20 61 6e 64 20 74 68 65 20 63 6f 64 65 20 70 61   and the code pa
43f0: 74 68 73 20 74 68 61 74 20 63 68 65 63 6b 20 66  ths that check f
4400: 6f 72 20 74 68 69 73 20 63 61 70 61 62 69 6c 69  or this capabili
4410: 74 79 20 73 6c 6f 77 20 64 6f 77 6e 20 77 72 69  ty slow down wri
4420: 74 65 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65  te.  performance
4430: 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74   on systems that
4440: 20 6c 61 63 6b 20 61 74 6f 6d 69 63 20 77 72 69   lack atomic wri
4450: 74 65 20 63 61 70 61 62 69 6c 69 74 79 2c 20 73  te capability, s
4460: 6f 20 74 68 69 73 0a 20 20 66 65 61 74 75 72 65  o this.  feature
4470: 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20   is disabled by 
4480: 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50  default..}..COMP
4490: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
44a0: 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e  TE_ENABLE_COLUMN
44b0: 5f 4d 45 54 41 44 41 54 41 7d 20 7b 0a 20 20 57  _METADATA} {.  W
44c0: 68 65 6e 20 74 68 69 73 20 43 2d 70 72 65 70 72  hen this C-prepr
44d0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
44e0: 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65   defined, SQLite
44f0: 20 69 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a 20   includes some. 
4500: 20 61 64 64 69 74 69 6f 6e 61 6c 20 41 50 49 73   additional APIs
4510: 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 63 6f   that provide co
4520: 6e 76 65 6e 69 65 6e 74 20 61 63 63 65 73 73 20  nvenient access 
4530: 74 6f 20 6d 65 74 61 2d 64 61 74 61 20 61 62 6f  to meta-data abo
4540: 75 74 0a 20 20 74 61 62 6c 65 73 20 61 6e 64 20  ut.  tables and 
4550: 71 75 65 72 69 65 73 2e 20 20 54 68 65 20 41 50  queries.  The AP
4560: 49 73 20 74 68 61 74 20 61 72 65 20 65 6e 61 62  Is that are enab
4570: 6c 65 64 20 62 79 20 74 68 69 73 20 6f 70 74 69  led by this opti
4580: 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a  on are:..  <ul>.
4590: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
45a0: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
45b0: 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  name()] </li>.  
45c0: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
45d0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
45e0: 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  me16()] </li>.  
45f0: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
4600: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
4610: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20  )] </li>.  <li> 
4620: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
4630: 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d 20  table_name16()] 
4640: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
4650: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
4660: 67 69 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  gin_name()] </li
4670: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
4680: 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
4690: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
46a0: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
46b0: 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
46c0: 61 64 61 74 61 28 29 5d 20 3c 2f 6c 69 3e 0a 20  adata()] </li>. 
46d0: 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c   </ul>.}..COMPIL
46e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
46f0: 5f 45 4e 41 42 4c 45 5f 46 54 53 33 7d 20 7b 0a  _ENABLE_FTS3} {.
4700: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
4710: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e  on is defined in
4720: 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69   the [amalgamati
4730: 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 20 33 0a 20  on], version 3. 
4740: 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78   of the full-tex
4750: 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20  t search engine 
4760: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
4770: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
4780: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
4790: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
47a0: 4e 41 42 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e  NABLE_FTS3_PAREN
47b0: 54 48 45 53 49 53 7d 20 7b 0a 20 20 54 68 69 73  THESIS} {.  This
47c0: 20 6f 70 74 69 6f 6e 20 6d 6f 64 69 66 69 65 73   option modifies
47d0: 20 74 68 65 20 71 75 65 72 79 20 70 61 74 74 65   the query patte
47e0: 72 6e 20 70 61 72 73 65 72 20 69 6e 20 46 54 53  rn parser in FTS
47f0: 33 20 73 75 63 68 20 74 68 61 74 20 69 74 0a 20  3 such that it. 
4800: 20 73 75 70 70 6f 72 74 73 20 6f 70 65 72 61 74   supports operat
4810: 6f 72 73 20 41 4e 44 20 61 6e 64 20 4e 4f 54 20  ors AND and NOT 
4820: 28 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20  (in addition to 
4830: 74 68 65 20 75 73 75 61 6c 20 4f 52 20 61 6e 64  the usual OR and
4840: 20 4e 45 41 52 29 0a 20 20 61 6e 64 20 61 6c 73   NEAR).  and als
4850: 6f 20 61 6c 6c 6f 77 73 20 71 75 65 72 79 20 65  o allows query e
4860: 78 70 72 65 73 73 69 6f 6e 73 20 74 6f 20 63 6f  xpressions to co
4870: 6e 74 61 69 6e 20 6e 65 73 74 65 64 20 70 61 72  ntain nested par
4880: 65 6e 74 68 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d  enthesis..}..COM
4890: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
48a0: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 7d  ITE_ENABLE_FTS4}
48b0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
48c0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
48d0: 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d   in the [amalgam
48e0: 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73  ation], versions
48f0: 20 33 20 61 6e 64 20 34 0a 20 20 6f 66 20 74 68   3 and 4.  of th
4900: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
4910: 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64  ch engine is add
4920: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
4930: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
4940: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4950: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
4960: 49 43 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ICU} {.  This op
4970: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
4980: 0a 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 69  .  [http://www.i
4990: 63 75 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 20  cu-project.org/ 
49a0: 7c 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20  | International 
49b0: 43 6f 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20 55  Components for U
49c0: 6e 69 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49 43  nicode].  or "IC
49d0: 55 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20  U" extension to 
49e0: 53 51 4c 69 74 65 20 74 6f 20 62 65 20 61 64 64  SQLite to be add
49f0: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 2e  ed to the build.
4a00: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
4a10: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
4a20: 42 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a 20  BLE_IOTRACE} {. 
4a30: 20 57 68 65 6e 20 62 6f 74 68 20 74 68 65 20 53   When both the S
4a40: 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74  QLite core and t
4a50: 68 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65  he [Command Line
4a60: 20 49 6e 74 65 72 66 61 63 65 5d 20 28 43 4c 49   Interface] (CLI
4a70: 29 20 61 72 65 20 62 6f 74 68 20 0a 20 20 63 6f  ) are both .  co
4a80: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73  mpiled with this
4a90: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68   option, then th
4aa0: 65 20 43 4c 49 20 70 72 6f 76 69 64 65 73 20 61  e CLI provides a
4ab0: 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64 0a  n extra command.
4ac0: 20 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61 63    named ".iotrac
4ad0: 65 22 20 74 68 61 74 20 70 72 6f 76 69 64 65 73  e" that provides
4ae0: 20 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67   a low-level log
4af0: 20 6f 66 20 49 2f 4f 20 61 63 74 69 76 69 74 79   of I/O activity
4b00: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
4b10: 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20  is experimental 
4b20: 61 6e 64 20 6d 61 79 20 62 65 20 64 69 73 63 6f  and may be disco
4b30: 6e 74 69 6e 75 65 64 20 69 6e 20 61 20 66 75 74  ntinued in a fut
4b40: 75 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a  ure release..}..
4b50: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4b60: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f  SQLITE_ENABLE_LO
4b70: 43 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a 20  CKING_STYLE} {. 
4b80: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
4b90: 62 6c 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20  bles additional 
4ba0: 6c 6f 67 69 63 20 69 6e 20 74 68 65 20 4f 53 20  logic in the OS 
4bb0: 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72 20  interface layer 
4bc0: 66 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e 20  for.  Mac OS X. 
4bd0: 54 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c  The additional l
4be0: 6f 67 69 63 20 61 74 74 65 6d 70 74 73 20 74 6f  ogic attempts to
4bf0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
4c00: 79 70 65 20 6f 66 20 74 68 65 0a 20 20 75 6e 64  ype of the.  und
4c10: 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74  erlying filesyst
4c20: 65 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20 61 6e  em and choose an
4c30: 64 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f  d alternative lo
4c40: 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79 0a 20  cking strategy. 
4c50: 20 74 68 61 74 20 77 6f 72 6b 73 20 63 6f 72 72   that works corr
4c60: 65 63 74 6c 79 20 66 6f 72 20 74 68 61 74 20 66  ectly for that f
4c70: 69 6c 65 73 79 73 74 65 6d 20 74 79 70 65 2e 20  ilesystem type. 
4c80: 46 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72  Five locking str
4c90: 61 74 65 67 69 65 73 20 0a 20 20 61 72 65 20 61  ategies .  are a
4ca0: 76 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c  vailable:..  <ul
4cb0: 3e 0a 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49 58  >.    <li> POSIX
4cc0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
4cd0: 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61  This is the defa
4ce0: 75 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  ult locking styl
4cf0: 65 20 61 6e 64 20 74 68 65 0a 20 20 20 20 20 20  e and the.      
4d00: 20 20 20 73 74 79 6c 65 20 75 73 65 64 20 62 79     style used by
4d10: 20 6f 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63 20   other (non Mac 
4d20: 4f 53 20 58 29 20 55 6e 69 78 65 73 2e 20 4c 6f  OS X) Unixes. Lo
4d30: 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64  cks are obtained
4d40: 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20 20 72   and .         r
4d50: 65 6c 65 61 73 65 64 20 75 73 69 6e 67 20 74 68  eleased using th
4d60: 65 20 66 63 6e 74 6c 28 29 20 73 79 73 74 65 6d  e fcntl() system
4d70: 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e   call...    <li>
4d80: 20 41 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74 79   AFP locking sty
4d90: 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67  le. This locking
4da0: 20 73 74 79 6c 65 20 69 73 20 75 73 65 64 20 66   style is used f
4db0: 6f 72 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 20  or network file 
4dc0: 0a 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d  .         system
4dd0: 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20 41  s that use the A
4de0: 46 50 20 28 41 70 70 6c 65 20 46 69 6c 69 6e 67  FP (Apple Filing
4df0: 20 50 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74 6f   Protocol) proto
4e00: 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20 20  col. Locks.     
4e10: 20 20 20 20 61 72 65 20 6f 62 74 61 69 6e 65 64      are obtained
4e20: 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20   by calling the 
4e30: 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
4e40: 20 5f 41 46 50 46 53 53 65 74 4c 6f 63 6b 28 29   _AFPFSSetLock()
4e50: 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f 63  ...    <li> Floc
4e60: 6b 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  k locking style.
4e70: 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f   This is used fo
4e80: 72 20 66 69 6c 65 2d 73 79 73 74 65 6d 73 20 74  r file-systems t
4e90: 68 61 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20 20  hat do not.     
4ea0: 20 20 20 20 73 75 70 70 6f 72 74 20 50 4f 53 49      support POSI
4eb0: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  X locking style.
4ec0: 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69   Locks are obtai
4ed0: 6e 65 64 20 61 6e 64 20 72 65 6c 65 61 73 65 64  ned and released
4ee0: 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20 20   using.         
4ef0: 74 68 65 20 66 6c 6f 63 6b 28 29 20 73 79 73 74  the flock() syst
4f00: 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c  em call...    <l
4f10: 69 3e 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b  i> Dot-file lock
4f20: 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20  ing style. This 
4f30: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73  locking style is
4f40: 20 75 73 65 64 20 77 68 65 6e 20 6e 65 69 74 68   used when neith
4f50: 65 72 0a 20 20 20 20 20 20 20 20 20 66 6c 6f 63  er.         floc
4f60: 6b 20 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63 6b  k nor POSIX lock
4f70: 69 6e 67 20 73 74 79 6c 65 73 20 61 72 65 20 73  ing styles are s
4f80: 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20  upported by the 
4f90: 66 69 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20 20  file system..   
4fa0: 20 20 20 20 20 20 44 61 74 61 62 61 73 65 20 6c        Database l
4fb0: 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65  ocks are obtaine
4fc0: 64 20 62 79 20 63 72 65 61 74 69 6e 67 20 61 6e  d by creating an
4fd0: 64 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 66  d entry in the f
4fe0: 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 20 20 20  ile-system.     
4ff0: 20 20 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b 6e      at a well-kn
5000: 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65 6c  own location rel
5010: 61 74 69 76 65 20 74 6f 20 74 68 65 20 64 61 74  ative to the dat
5020: 61 62 61 73 65 20 66 69 6c 65 20 28 61 20 22 64  abase file (a "d
5030: 6f 74 2d 66 69 6c 65 22 29 0a 20 20 20 20 20 20  ot-file").      
5040: 20 20 20 61 6e 64 20 72 65 6c 69 6e 71 75 69 73     and relinquis
5050: 68 65 64 20 62 79 20 64 65 6c 65 74 69 6e 67 20  hed by deleting 
5060: 74 68 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a 0a  the same file...
5070: 20 20 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63 6b      <li> No lock
5080: 69 6e 67 20 73 74 79 6c 65 2e 20 49 66 20 6e 6f  ing style. If no
5090: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
50a0: 63 61 6e 20 62 65 20 73 75 70 70 6f 72 74 65 64  can be supported
50b0: 2c 20 74 68 69 73 20 0a 20 20 20 20 20 20 20 20  , this .        
50c0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69   locking style i
50d0: 73 20 75 73 65 64 2e 20 4e 6f 20 64 61 74 61 62  s used. No datab
50e0: 61 73 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63 68  ase locking mech
50f0: 61 6e 69 73 6d 20 69 73 20 75 73 65 64 2e 20 57  anism is used. W
5100: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 74 68 69  hen.         thi
5110: 73 20 73 79 73 74 65 6d 20 69 73 20 75 73 65 64  s system is used
5120: 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20   it is not safe 
5130: 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 64 61 74  for a single dat
5140: 61 62 61 73 65 20 74 6f 20 62 65 0a 20 20 20 20  abase to be.    
5150: 20 20 20 20 20 61 63 63 65 73 73 65 64 20 62 79       accessed by
5160: 20 6d 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e 74   multiple client
5170: 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41 64  s..  </ul>..  Ad
5180: 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76 65  ditionally, five
5190: 20 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70   extra [VFS] imp
51a0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65  lementations are
51b0: 20 70 72 6f 76 69 64 65 64 20 61 73 20 77 65 6c   provided as wel
51c0: 6c 20 61 73 20 74 68 65 0a 20 20 64 65 66 61 75  l as the.  defau
51d0: 6c 74 2e 20 42 79 20 73 70 65 63 69 66 79 69 6e  lt. By specifyin
51e0: 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 74  g one of the ext
51f0: 72 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74  ra VFS implement
5200: 61 74 69 6f 6e 73 20 0a 20 20 77 68 65 6e 20 63  ations .  when c
5210: 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f  alling [sqlite3_
5220: 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 20 61  open_v2()], an a
5230: 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 62  pplication may b
5240: 79 70 61 73 73 20 74 68 65 20 66 69 6c 65 2d 73  ypass the file-s
5250: 79 73 74 65 6d 0a 20 20 64 65 74 65 63 74 69 6f  ystem.  detectio
5260: 6e 20 6c 6f 67 69 63 20 61 6e 64 20 65 78 70 6c  n logic and expl
5270: 69 63 69 74 6c 79 20 73 65 6c 65 63 74 20 6f 6e  icitly select on
5280: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 6c  e of the above l
5290: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 2e 20 54  ocking styles. T
52a0: 68 65 0a 20 20 66 69 76 65 20 65 78 74 72 61 20  he.  five extra 
52b0: 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61  [VFS] implementa
52c0: 74 69 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65 64  tions are called
52d0: 20 22 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20 22   "unix-posix", "
52e0: 75 6e 69 78 2d 61 66 70 22 2c 0a 20 20 22 75 6e  unix-afp",.  "un
52f0: 69 78 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69 78  ix-flock", "unix
5300: 2d 64 6f 74 66 69 6c 65 22 20 61 6e 64 20 22 75  -dotfile" and "u
5310: 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f  nix-none"..}..CO
5320: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5330: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f  LITE_ENABLE_MEMO
5340: 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20 7b  RY_MANAGEMENT} {
5350: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
5360: 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20  dds extra logic 
5370: 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 61  to SQLite that a
5380: 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c 65  llows it to rele
5390: 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65 6d  ase unused.  mem
53a0: 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73 74  ory upon request
53b0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d  .  This option m
53c0: 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20 69  ust be enabled i
53d0: 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 0a  n order for the.
53e0: 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61    [sqlite3_relea
53f0: 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74  se_memory()] int
5400: 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e 20  erface to work. 
5410: 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   If this compile
5420: 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69  -time.  option i
5430: 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20  s not used, the 
5440: 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65  [sqlite3_release
5450: 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72  _memory()] inter
5460: 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f 2d  face is a .  no-
5470: 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  op..}..COMPILE_O
5480: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
5490: 41 42 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b 0a  ABLE_MEMSYS3} {.
54a0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e    This option in
54b0: 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53  cludes code in S
54c0: 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65  QLite that imple
54d0: 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  ments an alterna
54e0: 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c  tive.  memory al
54f0: 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61  locator.  This a
5500: 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
5510: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f  y allocator is o
5520: 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68  nly engaged.  wh
5530: 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  en the [SQLITE_C
5540: 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69  ONFIG_HEAP] opti
5550: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
5560: 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64  onfig()] is used
5570: 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c   to.  supply a l
5580: 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65  arge chunk of me
5590: 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20  mory from which 
55a0: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
55b0: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b  ations are.  tak
55c0: 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53  en..  The MEMSYS
55d0: 33 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  3 memory allocat
55e0: 6f 72 20 75 73 65 73 20 61 20 68 79 62 72 69 64  or uses a hybrid
55f0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67 6f   allocation algo
5600: 72 69 74 68 6d 20 0a 20 20 70 61 74 74 65 72 6e  rithm .  pattern
5610: 65 64 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c 6f  ed after dlmallo
5620: 63 28 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65 20  c().   Only one 
5630: 6f 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  of SQLITE_ENABLE
5640: 5f 4d 45 4d 53 59 53 33 20 61 6e 64 20 0a 20 20  _MEMSYS3 and .  
5650: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
5660: 4d 53 59 53 35 20 6d 61 79 20 62 65 20 65 6e 61  MSYS5 may be ena
5670: 62 6c 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d 0a  bled at once..}.
5680: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5690: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d  {SQLITE_ENABLE_M
56a0: 45 4d 53 59 53 35 7d 20 7b 0a 20 20 54 68 69 73  EMSYS5} {.  This
56b0: 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73   option includes
56c0: 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20   code in SQLite 
56d0: 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20  that implements 
56e0: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20  an alternative. 
56f0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
5700: 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61  r.  This alterna
5710: 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  tive memory allo
5720: 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e  cator is only en
5730: 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65  gaged.  when the
5740: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
5750: 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20  HEAP] option to 
5760: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
5770: 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20  )] is used to.  
5780: 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63  supply a large c
5790: 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66  hunk of memory f
57a0: 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65  rom which all me
57b0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mory allocations
57c0: 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20   are.  taken..  
57d0: 54 68 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64 75  The MEMSYS5 modu
57e0: 6c 65 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61 6c  le rounds all al
57f0: 6c 6f 63 61 74 69 6f 6e 73 20 75 70 20 74 6f 20  locations up to 
5800: 74 68 65 20 6e 65 78 74 20 70 6f 77 65 72 0a 20  the next power. 
5810: 20 6f 66 20 74 77 6f 20 61 6e 64 20 75 73 65 73   of two and uses
5820: 20 61 20 66 69 72 73 74 2d 66 69 74 2c 20 62 75   a first-fit, bu
5830: 64 64 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61 6c  ddy-allocator al
5840: 67 6f 72 69 74 68 6d 0a 20 20 74 68 61 74 20 70  gorithm.  that p
5850: 72 6f 76 69 64 65 73 20 73 74 72 6f 6e 67 20 67  rovides strong g
5860: 75 61 72 61 6e 74 65 65 73 20 61 67 61 69 6e 73  uarantees agains
5870: 74 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20  t fragmentation 
5880: 61 6e 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20 20  and breakdown.  
5890: 73 75 62 6a 65 63 74 20 74 6f 20 63 65 72 74 61  subject to certa
58a0: 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 63 6f 6e  in operating con
58b0: 73 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d  straints..}..COM
58c0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
58d0: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
58e0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
58f0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
5900: 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f  to include suppo
5910: 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74  rt for the.  [rt
5920: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64  ree | R*Tree ind
5930: 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d  ex extension]..}
5940: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5950: 20 7b 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49   {SQLITE_RTREE_I
5960: 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20 20 49 66 20  NT_ONLY} {.  If 
5970: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  this option is u
5980: 73 65 64 20 74 6f 67 65 74 68 65 72 20 77 69 74  sed together wit
5990: 68 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  h [SQLITE_ENABLE
59a0: 5f 52 54 52 45 45 5d 20 74 68 65 6e 20 74 68 65  _RTREE] then the
59b0: 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72  .  [rtree | R*Tr
59c0: 65 65 20 65 78 74 65 6e 73 69 6f 6e 5d 20 77 69  ee extension] wi
59d0: 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72 65 20 33 32  ll only store 32
59e0: 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65  -bit signed inte
59f0: 67 65 72 0a 20 20 63 6f 6f 72 64 69 6e 61 74 65  ger.  coordinate
5a00: 73 20 61 6e 64 20 61 6c 6c 20 69 6e 74 65 72 6e  s and all intern
5a10: 61 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20  al computations 
5a20: 77 69 6c 6c 20 62 65 20 64 6f 6e 65 20 75 73 69  will be done usi
5a30: 6e 67 20 69 6e 74 65 67 65 72 73 0a 20 20 69 6e  ng integers.  in
5a40: 73 74 65 61 64 20 6f 66 20 66 6c 6f 61 74 69 6e  stead of floatin
5a50: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2e  g point numbers.
5a60: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5a70: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
5a80: 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54 68 69  E_STAT2} {.  Thi
5a90: 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20 74 6f  s option used to
5aa0: 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e 41 4c   cause the [ANAL
5ab0: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  YZE] command to 
5ac0: 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65 78 20  collect.  index 
5ad0: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69  histogram data i
5ae0: 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  n the <b>sqlite_
5af0: 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c 65 2e  stat2</b> table.
5b00: 20 20 42 75 74 20 74 68 61 74 0a 20 20 66 75 6e    But that.  fun
5b10: 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73 20 73  ctionality was s
5b20: 75 70 65 72 63 65 64 65 64 20 62 79 20 5b 53 51  uperceded by [SQ
5b30: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
5b40: 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c 69 74  3] as of.  SQLit
5b50: 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 39 2e  e version 3.7.9.
5b60: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 4e 41    The SQLITE_ENA
5b70: 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c  BLE_STAT2 compil
5b80: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20  e-time option.  
5b90: 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a  is now a no-op..
5ba0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5bb0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
5bc0: 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68 69 73  _STAT3} {.  This
5bd0: 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64   option adds add
5be0: 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f  itional logic to
5bf0: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
5c00: 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20  ommand and to.  
5c10: 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
5c20: 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c  er] that can hel
5c30: 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73  p SQLite to chos
5c40: 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79  e a better query
5c50: 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65   plan.  under ce
5c60: 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73  rtain situations
5c70: 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  .  The [ANALYZE]
5c80: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61   command is enha
5c90: 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  nced to collect.
5ca0: 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61    histogram data
5cb0: 20 66 72 6f 6d 20 65 61 63 68 20 69 6e 64 65 78   from each index
5cc0: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20   and store that 
5cd0: 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20 3c 62  data.  in the <b
5ce0: 3e 73 71 6c 69 74 65 5f 73 74 61 74 33 3c 2f 62  >sqlite_stat3</b
5cf0: 3e 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71 75  > table.  The qu
5d00: 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c  ery planner will
5d10: 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20 20   then use the.  
5d20: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 74  histogram data t
5d30: 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20 62  o help it make b
5d40: 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69  etter index choi
5d50: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
5d60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
5d70: 4e 41 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41  NABLE_TREE_EXPLA
5d80: 49 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  IN} {.  This opt
5d90: 69 6f 6e 20 61 64 64 73 20 73 75 70 70 6f 72 74  ion adds support
5da0: 20 66 6f 72 20 74 68 65 20 5b 53 51 4c 49 54 45   for the [SQLITE
5db0: 5f 54 45 53 54 43 54 52 4c 5f 45 58 50 4c 41 49  _TESTCTRL_EXPLAI
5dc0: 4e 5f 53 54 4d 54 5d 20 74 65 73 74 2d 63 6f 6e  N_STMT] test-con
5dd0: 74 72 6f 6c 0a 20 20 69 6e 20 74 68 65 20 53 51  trol.  in the SQ
5de0: 4c 69 74 65 20 63 6f 72 65 2e 20 20 57 68 65 6e  Lite core.  When
5df0: 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69   the [command-li
5e00: 6e 65 20 73 68 65 6c 6c 5d 20 69 73 20 61 6c 73  ne shell] is als
5e10: 6f 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a  o compiled with.
5e20: 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74    this option, t
5e30: 68 65 20 22 2e 65 78 70 6c 61 69 6e 22 20 64 6f  he ".explain" do
5e40: 74 2d 63 6f 6d 6d 61 6e 64 20 65 6e 61 62 6c 65  t-command enable
5e50: 73 20 61 20 6d 6f 64 65 20 74 68 61 74 20 75 73  s a mode that us
5e60: 65 73 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45  es the.  [SQLITE
5e70: 5f 54 45 53 54 43 54 52 4c 5f 45 58 50 4c 41 49  _TESTCTRL_EXPLAI
5e80: 4e 5f 53 54 4d 54 5d 20 69 6e 74 65 72 66 61 63  N_STMT] interfac
5e90: 65 20 74 6f 20 64 69 73 70 6c 61 79 20 61 6e 20  e to display an 
5ea0: 41 53 43 49 49 2d 61 72 74 20 64 69 61 67 72 61  ASCII-art diagra
5eb0: 6d 0a 20 20 6f 66 20 74 68 65 20 70 61 72 73 65  m.  of the parse
5ec0: 20 74 72 65 65 20 66 6f 72 20 65 61 63 68 20 53   tree for each S
5ed0: 51 4c 20 71 75 65 72 79 20 73 74 61 74 65 6d 65  QL query stateme
5ee0: 6e 74 20 74 68 61 74 20 69 73 20 72 75 6e 20 69  nt that is run i
5ef0: 6e 20 74 68 65 20 73 68 65 6c 6c 2e 0a 20 20 54  n the shell..  T
5f00: 68 69 73 20 6d 65 63 68 61 6e 69 73 6d 20 69 73  his mechanism is
5f10: 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65 62 75   useful for debu
5f20: 67 67 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  gging the SQLite
5f30: 20 70 61 72 73 65 72 20 61 6e 64 20 63 6f 64 65   parser and code
5f40: 0a 20 20 67 65 6e 65 72 61 74 6f 72 2e 20 20 54  .  generator.  T
5f50: 68 69 73 20 77 68 6f 6c 65 20 6d 65 63 68 61 6e  his whole mechan
5f60: 69 73 6d 20 69 73 20 68 69 67 68 6c 79 20 65 78  ism is highly ex
5f70: 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 63  perimental and c
5f80: 6f 75 6c 64 20 63 68 61 6e 67 65 0a 20 20 64 72  ould change.  dr
5f90: 61 73 74 69 63 61 6c 6c 79 20 6f 72 20 62 65 20  astically or be 
5fa0: 65 6c 69 6d 69 6e 61 74 65 64 20 69 6e 20 66 75  eliminated in fu
5fb0: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
5fc0: 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50   SQLite..}..COMP
5fd0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5fe0: 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45  TE_ENABLE_UPDATE
5ff0: 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 7d 20 7b  _DELETE_LIMIT} {
6000: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65  .  This option e
6010: 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74 69 6f 6e  nables an option
6020: 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20  al ORDER BY and 
6030: 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6f 6e 20  LIMIT clause on 
6040: 0a 20 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20  .  [UPDATE] and 
6050: 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
6060: 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66 20 74 68  nts...  <p>If th
6070: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
6080: 69 6e 65 64 2c 20 74 68 65 6e 20 69 74 20 6d 75  ined, then it mu
6090: 73 74 20 61 6c 73 6f 20 62 65 20 0a 20 20 64 65  st also be .  de
60a0: 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67  fined when using
60b0: 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f   the 'lemon' too
60c0: 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20 61 20  l to generate a 
60d0: 70 61 72 73 65 2e 63 0a 20 20 66 69 6c 65 2e 20  parse.c.  file. 
60e0: 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c  Because of this,
60f0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   this option may
6100: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68   only be used wh
6110: 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  en the library i
6120: 73 20 62 75 69 6c 74 0a 20 20 66 72 6f 6d 20 73  s built.  from s
6130: 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20  ource, not from 
6140: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
6150: 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63  n] or from the c
6160: 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 20 20 70  ollection of.  p
6170: 72 65 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69  re-packaged C fi
6180: 6c 65 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72  les provided for
6190: 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70   non-Unix like p
61a0: 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20  latforms on the 
61b0: 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f 70 3e 0a  website..  </p>.
61c0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
61d0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
61e0: 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20  _UNLOCK_NOTIFY} 
61f0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6200: 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c  enables the [sql
6210: 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69  ite3_unlock_noti
6220: 66 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  fy()] interface 
6230: 61 6e 64 0a 20 20 69 74 73 20 61 73 73 6f 63 69  and.  its associ
6240: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ated functionali
6250: 74 79 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63  ty.  See the doc
6260: 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65  umentation title
6270: 64 0a 20 20 5b 55 73 69 6e 67 20 74 68 65 20 53  d.  [Using the S
6280: 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74  QLite Unlock Not
6290: 69 66 69 63 61 74 69 6f 6e 20 46 65 61 74 75 72  ification Featur
62a0: 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  e] for additiona
62b0: 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  l.  information.
62c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
62d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55 4e 44  ON {SQLITE_SOUND
62e0: 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  EX} {.  This opt
62f0: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
6300: 5b 73 6f 75 6e 64 65 78 28 29 20 53 51 4c 20 66  [soundex() SQL f
6310: 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d  unction]..}..COM
6320: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54  PILE_OPTION {YYT
6330: 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45 50 54  RACKMAXSTACKDEPT
6340: 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  H} {.  This opti
6350: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 4c 41  on causes the LA
6360: 4c 52 28 31 29 20 70 61 72 73 65 72 20 73 74 61  LR(1) parser sta
6370: 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65 20 74  ck depth to be t
6380: 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72 65 70  racked.  and rep
6390: 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  orted using the 
63a0: 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73 5d  [sqlite3_status]
63b0: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
63c0: 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e  PARSER_STACK],..
63d0: 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20  .).  interface. 
63e0: 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52 28 31   SQLite's LALR(1
63f0: 29 20 70 61 72 73 65 72 20 68 61 73 20 61 20 66  ) parser has a f
6400: 69 78 65 64 20 73 74 61 63 6b 20 64 65 70 74 68  ixed stack depth
6410: 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64 20 61  .  (determined a
6420: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75  t compile-time u
6430: 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54 41 43  sing the [YYSTAC
6440: 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29  KDEPTH] options)
6450: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
6460: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 68  can be used to h
6470: 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66  elp determine if
6480: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   an application 
6490: 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63 6c 6f  is.  getting clo
64a0: 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e 67 20  se to exceeding 
64b0: 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52  the maximum LALR
64c0: 28 31 29 20 73 74 61 63 6b 20 64 65 70 74 68 2e  (1) stack depth.
64d0: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61  .}.</tcl>..<a na
64e0: 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61 74 75  me="disablefeatu
64f0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  res"></a>.<h2>1.
6500: 35 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69 73  5 Options To Dis
6510: 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f  able Features No
6520: 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e  rmally Turned On
6530: 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  </h2>..<tcl>.COM
6540: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6550: 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d  ITE_DISABLE_LFS}
6560: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
6570: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
6580: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 6c 61  o is defined, la
6590: 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74  rge file support
65a0: 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a  .  is disabled..
65b0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
65c0: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
65d0: 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49  E_DIRSYNC} {.  I
65e0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
65f0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
6600: 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74 6f 72  efined, director
6610: 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20 64 69  y syncs.  are di
6620: 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74 65 20  sabled.  SQLite 
6630: 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65 6d 70  typically attemp
6640: 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65 20 70  ts to sync the p
6650: 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74 6f 72  arent.  director
6660: 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20 69 73  y when a file is
6670: 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e 73 75   deleted to ensu
6680: 72 65 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  re the directory
6690: 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65 20 75  .  entries are u
66a0: 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61 74 65  pdated immediate
66b0: 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43  ly on disk..}..C
66c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
66d0: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54  QLITE_DISABLE_FT
66e0: 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20  S3_UNICODE} {.  
66f0: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
6700: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
6710: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e  defined, the [un
6720: 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a  icode61] tokeniz
6730: 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20 69  er.  in [FTS3] i
6740: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  s omitted from t
6750: 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69 73 20  he build and is 
6760: 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a  unavailable to .
6770: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a    applications..
6780: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6790: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
67a0: 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44 7d  E_FTS4_DEFERRED}
67b0: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
67c0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
67d0: 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 22  o disables the "
67e0: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
67f0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69  optimization.  i
6800: 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65 20 22  n [FTS4].  The "
6810: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
6820: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f  optimization avo
6830: 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73  ids loading mass
6840: 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69  ive.  posting li
6850: 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20 74 68  sts for terms th
6860: 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74 20 64  at are in most d
6870: 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68 65 20  ocuments of the 
6880: 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64  collection.  and
6890: 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c 79 20   instead simply 
68a0: 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73 65 20  scans for those 
68b0: 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20 64 6f  tokens in the do
68c0: 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20 20  cument source.  
68d0: 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20  [FTS4].  should 
68e0: 67 65 74 20 65 78 61 63 74 6c 79 20 74 68 65 20  get exactly the 
68f0: 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f 74 68  same answer both
6900: 20 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75   with and withou
6910: 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74  t this optimizat
6920: 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  ion..}.</tcl>..<
6930: 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65  tcl>.  hd_fragme
6940: 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73  nt "omitfeatures
6950: 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20  ".  hd_keywords 
6960: 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c  "omitfeatures".<
6970: 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70  /tcl>.<h2>1.6 Op
6980: 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65  tions To Omit Fe
6990: 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  atures</h2>..<p>
69a0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70  The following op
69b0: 74 69 6f 6e 73 20 63 61 6e 20 75 73 65 64 20 74  tions can used t
69c0: 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70 72 69 6e 74  o .[relfootprint
69d0: 20 7c 20 72 65 64 75 63 65 20 74 68 65 20 73 69   | reduce the si
69e0: 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c  ze of the compil
69f0: 65 64 20 6c 69 62 72 61 72 79 5d 0a 62 79 20 6f  ed library].by o
6a00: 6d 69 74 74 69 6e 67 20 75 6e 75 73 65 64 20 66  mitting unused f
6a10: 65 61 74 75 72 65 73 2e 20 54 68 69 73 20 69 73  eatures. This is
6a20: 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75   probably only u
6a30: 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65  seful.in embedde
6a40: 64 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20  d systems where 
6a50: 73 70 61 63 65 20 69 73 20 65 73 70 65 63 69 61  space is especia
6a60: 6c 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65 76  lly tight, as ev
6a70: 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74  en with all.feat
6a80: 75 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68  ures included th
6a90: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
6aa0: 20 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73   is relatively s
6ab0: 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67  mall. Don't forg
6ac0: 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20  et.to tell your 
6ad0: 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69  compiler to opti
6ae0: 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20  mize for binary 
6af0: 73 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f  size! (the -Os o
6b00: 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47  ption if.using G
6b10: 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f  CC).  Telling yo
6b20: 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f  ur compiler to o
6b30: 70 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65  ptimize for size
6b40: 20 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d   usually has.a m
6b50: 75 63 68 20 6c 61 72 67 65 72 20 69 6d 70 61 63  uch larger impac
6b60: 74 20 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f  t on library foo
6b70: 74 70 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c  tprint than empl
6b80: 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65  oying any of the
6b90: 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  se.compile-time 
6ba0: 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68  options.  You sh
6bb0: 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72 69 66 79  ould also verify
6bc0: 20 74 68 61 74 20 0a 3c 61 20 68 72 65 66 3d 22   that .<a href="
6bd0: 23 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64  #debugoptions">d
6be0: 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73  ebugging options
6bf0: 3c 2f 61 3e 20 61 72 65 20 64 69 73 61 62 6c 65  </a> are disable
6c00: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d  d.</p>..<p>The m
6c10: 61 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65  acros in this se
6c20: 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71  ction do not req
6c30: 75 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65  uire values. The
6c40: 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70   following .comp
6c50: 69 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73  ilation switches
6c60: 20 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61   all have the sa
6c70: 6d 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d  me effect:<br>.-
6c80: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
6c90: 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51  ERTABLE<br>.-DSQ
6ca0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
6cb0: 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c  ABLE=1<br>.-DSQL
6cc0: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
6cd0: 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  BLE=0.</p>..<p>I
6ce0: 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f  f any of these o
6cf0: 70 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e  ptions are defin
6d00: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d  ed, then the sam
6d10: 65 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f  e set of SQLITE_
6d20: 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d  OMIT_*.options m
6d30: 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66 69  ust also be defi
6d40: 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ned when using t
6d50: 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20  he 'lemon' tool 
6d60: 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a  to generate the.
6d70: 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64  parse.c file and
6d80: 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20   when compiling 
6d90: 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61  the 'mkkeywordha
6da0: 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67  sh' tool which g
6db0: 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65  enerates .the ke
6dc0: 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65  ywordhash.h file
6dd0: 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  ..Because of thi
6de0: 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  s, these options
6df0: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
6e00: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
6e10: 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d  ry is built.from
6e20: 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63   canonical sourc
6e30: 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20  e, not from the 
6e40: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f  [amalgamation] o
6e50: 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65  r from the colle
6e60: 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d 70 61 63  ction of.pre-pac
6e70: 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72  kaged C files pr
6e80: 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55  ovided for non-U
6e90: 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72  nix like platfor
6ea0: 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74  ms on the websit
6eb0: 65 2e 0a 41 6e 79 20 53 51 4c 49 54 45 5f 4f 4d  e..Any SQLITE_OM
6ec0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 77 68 69  IT_* options whi
6ed0: 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20 64  ch can be used d
6ee0: 69 72 65 63 74 6c 79 20 77 69 74 68 20 74 68 65  irectly with the
6ef0: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20   [amalgamation] 
6f00: 0a 61 72 65 20 6c 69 73 74 65 64 20 62 65 6c 6f  .are listed belo
6f10: 77 2c 20 68 6f 77 65 76 65 72 2c 20 74 68 65 20  w, however, the 
6f20: 77 61 72 6e 69 6e 67 73 20 69 6e 20 74 68 65 20  warnings in the 
6f30: 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 67 72  following paragr
6f40: 61 70 68 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f  aph should be no
6f50: 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ted..</p>..<bloc
6f60: 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d  kquote>.<i><b>Im
6f70: 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62  portant Note:</b
6f80: 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  > The SQLITE_OMI
6f90: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 64 6f 20 6e  T_* options do n
6fa0: 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65  ot work with the
6fb0: 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20  .[amalgamation] 
6fc0: 6f 72 20 77 69 74 68 20 70 72 65 2d 70 61 63 6b  or with pre-pack
6fd0: 61 67 65 64 20 43 20 63 6f 64 65 20 66 69 6c 65  aged C code file
6fe0: 73 2e 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  s.  SQLITE_OMIT_
6ff0: 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  * compile-time.o
7000: 70 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b  ptions only work
7010: 20 63 6f 72 72 65 63 74 6c 79 20 77 68 65 6e 20   correctly when 
7020: 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20  SQLite is built 
7030: 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73  from canonical s
7040: 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69  ource files..</i
7050: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
7060: 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72  ..<p>Special ver
7070: 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c  sions of the SQL
7080: 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  ite amalgamation
7090: 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69   that do work wi
70a0: 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e  th a.predetermin
70b0: 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45  ed set of SQLITE
70c0: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
70d0: 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64  can be generated
70e0: 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b  .  To do so,.mak
70f0: 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  e a copy of the 
7100: 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67  Makefile.linux-g
7110: 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70  cc makefile temp
7120: 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f  late in the cano
7130: 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64  nical.source cod
7140: 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20  e distribution. 
7150: 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65   Change the name
7160: 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f   of your copy to
7170: 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c   simply "Makefil
7180: 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d  e"..Then edit "M
7190: 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20  akefile" to set 
71a0: 75 70 20 61 70 70 72 6f 70 72 69 61 74 65 20 63  up appropriate c
71b0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
71c0: 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a  ons.  Then.type:
71d0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74  .<blockquote><tt
71e0: 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b  >make clean; mak
71f0: 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e  e sqlite3.c</tt>
7200: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68  </blockquote>.Th
7210: 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c  e resulting "sql
7220: 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61  ite3.c" amalgama
7230: 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28  tion code file (
7240: 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74  and its associat
7250: 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22  ed.header file "
7260: 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20  sqlite3.h") can 
7270: 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f  then be moved to
7280: 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74   a non-unix plat
7290: 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63  form.for final c
72a0: 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67  ompilation using
72b0: 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c   a native compil
72c0: 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20  er.</p>..<p>All 
72d0: 6f 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d  of the SQLITE_OM
72e0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65  IT_* options are
72f0: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 3c 2f 70   unsupported.</p
7300: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
7310: 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20  <i><b>Important 
7320: 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53 51  Note:</b>.The SQ
7330: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70  LITE_OMIT_* comp
7340: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
7350: 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64   are unsupported
7360: 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  ..</i></blockquo
7370: 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53 51 4c  te>..<p>.The SQL
7380: 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69  ITE_OMIT_* compi
7390: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20  le-time options 
73a0: 61 72 65 20 75 73 75 61 6c 6c 79 20 75 6e 74 65  are usually unte
73b0: 73 74 65 64 20 61 6e 64 0a 61 72 65 20 61 6c 6d  sted and.are alm
73c0: 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 75 6e  ost certainly un
73d0: 74 65 73 74 65 64 20 69 6e 20 63 6f 6d 62 69 6e  tested in combin
73e0: 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c  ation..Any or al
73f0: 6c 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f  l of these optio
7400: 6e 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65  ns may be remove
7410: 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 20  d from the code 
7420: 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  in future releas
7430: 65 73 0a 61 6e 64 20 77 69 74 68 6f 75 74 20 77  es.and without w
7440: 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61 6e 79  arning.  For any
7450: 20 70 61 72 74 69 63 75 6c 61 72 20 72 65 6c 65   particular rele
7460: 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74 68 65  ase, some of the
7470: 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20 63  se.options may c
7480: 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  ause compile-tim
7490: 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20 66 61  e or run-time fa
74a0: 69 6c 75 72 65 73 2c 20 70 61 72 74 69 63 75 6c  ilures, particul
74b0: 61 72 6c 79 0a 77 68 65 6e 20 75 73 65 64 20 69  arly.when used i
74c0: 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69  n combination wi
74d0: 74 68 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e 73  th other options
74e0: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  .</p>..<tcl>.COM
74f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7500: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
7510: 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  BLE} {.  When th
7520: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
7530: 69 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c  ined, the .  [AL
7540: 54 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61  TER TABLE] comma
7550: 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
7560: 65 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62  ed in the .  lib
7570: 72 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20  rary. Executing 
7580: 61 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d  an [ALTER TABLE]
7590: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65   statement cause
75a0: 73 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  s a parse error.
75b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
75c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
75d0: 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65  ANALYZE} {.  Whe
75e0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
75f0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41   defined, the [A
7600: 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20  NALYZE] command 
7610: 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a  is omitted from.
7620: 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a    the build..}..
7630: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7640: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41  SQLITE_OMIT_ATTA
7650: 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  CH} {.  When thi
7660: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
7670: 6e 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48  ned, the [ATTACH
7680: 5d 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63  ] and [DETACH] c
7690: 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d  ommands are.  om
76a0: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
76b0: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
76c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
76d0: 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49  OMIT_AUTHORIZATI
76e0: 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  ON} {.  Defining
76f0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
7700: 74 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61  ts the authoriza
7710: 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65  tion callback fe
7720: 61 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20  ature from the. 
7730: 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73   library. The [s
7740: 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
7750: 72 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e  rizer()] API fun
7760: 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65  ction is not pre
7770: 73 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69  sent.  in the li
7780: 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  brary..}..COMPIL
7790: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
77a0: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d  _OMIT_AUTOINCREM
77b0: 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ENT} {.  This op
77c0: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
77d0: 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 41 55 54  omit the .  [AUT
77e0: 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 66 75 6e 63  OINCREMENT] func
77f0: 74 69 6f 6e 61 6c 69 74 79 2e 20 57 68 65 6e 20  tionality. When 
7800: 74 68 69 73 20 0a 20 20 69 73 20 6d 61 63 72 6f  this .  is macro
7810: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c   is defined, col
7820: 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73  umns declared as
7830: 20 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52   .  "[INTEGER PR
7840: 49 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49  IMARY KEY] AUTOI
7850: 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61  NCREMENT".  beha
7860: 76 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77  ve in the same w
7870: 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65  ay as columns de
7880: 63 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45  clared as "[INTE
7890: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d  GER PRIMARY KEY]
78a0: 22 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c  " when a .  NULL
78b0: 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68   is inserted. Th
78c0: 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  e sqlite_sequenc
78d0: 65 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69  e system table i
78e0: 73 20 6e 65 69 74 68 65 72 20 63 72 65 61 74 65  s neither create
78f0: 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74  d, nor.  respect
7900: 65 64 20 69 66 20 69 74 20 61 6c 72 65 61 64 79  ed if it already
7910: 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50   exists..}..COMP
7920: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7930: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
7940: 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77 61  } {.  For backwa
7950: 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  rds compatibilit
7960: 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72  y with older ver
7970: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
7980: 74 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65 20  that lack.  the 
7990: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
79a0: 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ize()] interface
79b0: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  , the [sqlite3_i
79c0: 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74  nitialize()] int
79d0: 65 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c 6c  erface.  is call
79e0: 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ed automatically
79f0: 20 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63   upon entry to c
7a00: 65 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65 72  ertain key inter
7a10: 66 61 63 65 73 20 73 75 63 68 20 61 73 0a 20 20  faces such as.  
7a20: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
7a30: 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72  , [sqlite3_vfs_r
7a40: 65 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64 20  egister()], and 
7a50: 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66  [sqlite3_mprintf
7a60: 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72 68  ()]..  The overh
7a70: 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20  ead of invoking 
7a80: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
7a90: 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69 63  ize()] automatic
7aa0: 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20 77  ally in this.  w
7ab0: 61 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65  ay may be omitte
7ac0: 64 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53 51  d by building SQ
7ad0: 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 53 51  Lite with the SQ
7ae0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e  LITE_OMIT_AUTOIN
7af0: 49 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65 73  IT.  C-preproces
7b00: 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e  sor macro.  When
7b10: 20 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51 4c   built using SQL
7b20: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
7b30: 54 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c  T, SQLite.  will
7b40: 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c   not automatical
7b50: 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 74  ly initialize it
7b60: 73 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70 70  self and the app
7b70: 6c 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71 75  lication is requ
7b80: 69 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65  ired.  to invoke
7b90: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
7ba0: 6c 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c 79  lize()] directly
7bb0: 20 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e   prior to beginn
7bc0: 69 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a 20  ing use of the. 
7bd0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
7be0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7bf0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
7c00: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 7d  AUTOMATIC_INDEX}
7c10: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
7c20: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
7c30: 20 74 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61 74   the .  [automat
7c40: 69 63 20 69 6e 64 65 78 69 6e 67 5d 20 66 75 6e  ic indexing] fun
7c50: 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 7d 0a 0a 43  ctionality..}..C
7c60: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
7c70: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52  QLITE_OMIT_AUTOR
7c80: 45 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65 66  ESET} {.  By def
7c90: 61 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69 74  ault, the [sqlit
7ca0: 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65 72  e3_step()] inter
7cb0: 66 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61  face will automa
7cc0: 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20  tically invoke. 
7cd0: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
7ce0: 29 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65 20  )] to reset the 
7cf0: 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
7d00: 65 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61 72  ent] if necessar
7d10: 79 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69  y.  This.  compi
7d20: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63  le-time option c
7d30: 68 61 6e 67 65 73 20 74 68 61 74 20 62 65 68 61  hanges that beha
7d40: 76 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73 71  vior so that [sq
7d50: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69  lite3_step()] wi
7d60: 6c 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c  ll.  return [SQL
7d70: 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69  ITE_MISUSE] if i
7d80: 74 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 61  t called again a
7d90: 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61  fter returning a
7da0: 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20 20  nything other.  
7db0: 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57  than [SQLITE_ROW
7dc0: 5d 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  ], [SQLITE_BUSY]
7dd0: 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  , or [SQLITE_LOC
7de0: 4b 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65 72  KED] unless ther
7df0: 65 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65 72  e was an.  inter
7e00: 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b  vening call to [
7e10: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d  sqlite3_reset()]
7e20: 2e 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20 76  ...  In SQLite v
7e30: 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 20  ersion 3.6.23.1 
7e40: 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b 73 71  and earlier, [sq
7e50: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 75 73  lite3_step()] us
7e60: 65 64 20 74 6f 20 61 6c 77 61 79 73 0a 20 20 72  ed to always.  r
7e70: 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49  eturn [SQLITE_MI
7e80: 53 55 53 45 5d 20 69 66 20 69 74 20 77 61 73 20  SUSE] if it was 
7e90: 69 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20 61 66  invoked again af
7ea0: 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e  ter returning an
7eb0: 79 74 68 69 6e 67 0a 20 20 6f 74 68 65 72 20 74  ything.  other t
7ec0: 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d  han [SQLITE_ROW]
7ed0: 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65   without an inte
7ee0: 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20  rvening call to 
7ef0: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
7f00: 5d 2e 0a 20 20 54 68 69 73 20 63 61 75 73 65 64  ]..  This caused
7f10: 20 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f 6d   problems on som
7f20: 65 20 70 6f 6f 72 6c 79 20 77 72 69 74 74 65 6e  e poorly written
7f30: 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c   smartphone appl
7f40: 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68 0a 20  ications which. 
7f50: 20 64 69 64 20 6e 6f 74 20 63 6f 72 72 65 63 74   did not correct
7f60: 6c 79 20 68 61 6e 64 6c 65 20 74 68 65 20 5b 53  ly handle the [S
7f70: 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61 6e  QLITE_LOCKED] an
7f80: 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20  d [SQLITE_BUSY] 
7f90: 65 72 72 6f 72 20 0a 20 20 72 65 74 75 72 6e 73  error .  returns
7fa0: 2e 20 20 52 61 74 68 65 72 20 74 68 61 6e 20 66  .  Rather than f
7fb0: 69 78 20 74 68 65 20 6d 61 6e 79 20 64 65 66 65  ix the many defe
7fc0: 63 74 69 76 65 20 73 6d 61 72 74 70 68 6f 6e 65  ctive smartphone
7fd0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 0a   applications, .
7fe0: 20 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f    the behavior o
7ff0: 66 20 53 51 4c 69 74 65 20 77 61 73 20 63 68 61  f SQLite was cha
8000: 6e 67 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e 32  nged in 3.6.23.2
8010: 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   to automaticall
8020: 79 20 72 65 73 65 74 0a 20 20 74 68 65 20 70 72  y reset.  the pr
8030: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
8040: 2e 20 20 42 75 74 20 74 68 61 74 20 63 68 61 6e  .  But that chan
8050: 67 65 64 20 63 61 75 73 65 64 20 69 73 73 75 65  ged caused issue
8060: 73 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 69 6d  s in other .  im
8070: 70 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d 65  properly impleme
8080: 6e 74 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e  nted application
8090: 73 20 74 68 61 74 20 77 65 72 65 20 61 63 74 75  s that were actu
80a0: 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20 66  ally looking.  f
80b0: 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 49  or an [SQLITE_MI
80c0: 53 55 53 45 5d 20 72 65 74 75 72 6e 20 74 6f 20  SUSE] return to 
80d0: 74 65 72 6d 69 6e 61 74 65 20 74 68 65 69 72 20  terminate their 
80e0: 71 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28 41  query loops.  (A
80f0: 6e 79 74 69 6d 65 0a 20 20 61 6e 20 61 70 70 6c  nytime.  an appl
8100: 69 63 61 74 69 6f 6e 20 67 65 74 73 20 61 6e 20  ication gets an 
8110: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65 72  SQLITE_MISUSE er
8120: 72 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20 53 51  ror code from SQ
8130: 4c 69 74 65 2c 20 74 68 61 74 20 6d 65 61 6e 73  Lite, that means
8140: 20 74 68 65 0a 20 20 61 70 70 6c 69 63 61 74 69   the.  applicati
8150: 6f 6e 20 69 73 20 6d 69 73 75 73 69 6e 67 20 74  on is misusing t
8160: 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  he SQLite interf
8170: 61 63 65 20 61 6e 64 20 69 73 20 74 68 75 73 20  ace and is thus 
8180: 69 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20 69 6d  incorrectly.  im
8190: 70 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54 68 65  plemented.)  The
81a0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
81b0: 4f 52 45 53 45 54 20 69 6e 74 65 72 66 61 63 65  ORESET interface
81c0: 20 77 61 73 20 61 64 64 65 64 20 74 6f 20 53 51   was added to SQ
81d0: 4c 69 74 65 0a 20 20 76 65 72 73 69 6f 6e 20 33  Lite.  version 3
81e0: 2e 37 2e 35 20 69 6e 20 61 6e 20 65 66 66 6f 72  .7.5 in an effor
81f0: 74 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f 66 20  t to get all of 
8200: 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20 20 61  the (broken).  a
8210: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 77  pplications to w
8220: 6f 72 6b 20 61 67 61 69 6e 20 77 69 74 68 6f 75  ork again withou
8230: 74 20 68 61 76 69 6e 67 20 74 6f 20 61 63 74 75  t having to actu
8240: 61 6c 6c 79 20 66 69 78 20 74 68 65 20 61 70 70  ally fix the app
8250: 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f  lications..}..CO
8260: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8270: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41  LITE_OMIT_AUTOVA
8280: 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68 69  CUUM} {.  If thi
8290: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
82a0: 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79  ned, the library
82b0: 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 6f   cannot create o
82c0: 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20 64 61  r write to .  da
82d0: 74 61 62 61 73 65 73 20 74 68 61 74 20 73 75 70  tabases that sup
82e0: 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63 75 75  port [auto_vacuu
82f0: 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20  m]..  Executing 
8300: 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f 76  a [PRAGMA auto_v
8310: 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e 74  acuum] statement
8320: 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72   is not an error
8330: 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f 77  .  (since unknow
8340: 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20 73 69  n PRAGMAs are si
8350: 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29 2c  lently ignored),
8360: 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 72 65   but does not re
8370: 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20 20 6f  turn a value.  o
8380: 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61 75 74  r modify the aut
8390: 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20 69 6e  o-vacuum flag in
83a0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
83b0: 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62 61 73  le. If a databas
83c0: 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f 72 74  e that.  support
83d0: 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69 73  s auto-vacuum is
83e0: 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c 69 62   opened by a lib
83f0: 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20 77 69  rary compiled wi
8400: 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20  th this option, 
8410: 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61 74 69  it.  is automati
8420: 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e 20  cally opened in 
8430: 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a  read-only mode..
8440: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8450: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  N {SQLITE_OMIT_B
8460: 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54  ETWEEN_OPTIMIZAT
8470: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
8480: 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
8490: 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65 73  e use of indices
84a0: 20 77 69 74 68 20 57 48 45 52 45 20 63 6c 61 75   with WHERE clau
84b0: 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61 74 20  se terms.  that 
84c0: 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54 57 45  employ the BETWE
84d0: 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a  EN operator..}..
84e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
84f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42  SQLITE_OMIT_BLOB
8500: 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57 68  _LITERAL} {.  Wh
8510: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
8520: 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 69 73  s defined, it is
8530: 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f   not possible to
8540: 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f 62 20   specify a blob 
8550: 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74 61 74  in.  an SQL stat
8560: 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68 65 20  ement using the 
8570: 58 27 41 42 43 44 27 20 73 79 6e 74 61 78 2e 0a  X'ABCD' syntax..
8580: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8590: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  N {SQLITE_OMIT_B
85a0: 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20 20 57  TREECOUNT} {.  W
85b0: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
85c0: 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e 20 6f  is defined, an o
85d0: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74  ptimization that
85e0: 20 61 63 63 65 6c 65 72 61 74 65 73 20 63 6f 75   accelerates cou
85f0: 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e 74 72  nting.  all entr
8600: 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65 20 28  ies in a table (
8610: 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  in other words, 
8620: 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  an optimization 
8630: 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22 53 45  that helps.  "SE
8640: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
8650: 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20 66 61  OM table" run fa
8660: 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74 65 64  ster) is omitted
8670: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8680: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8690: 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20 7b  _BUILTIN_TEST} {
86a0: 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  .  A standard SQ
86b0: 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c 75  Lite build inclu
86c0: 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f 75  des a small amou
86d0: 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f 6e 74  nt of logic cont
86e0: 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68 65 20  rolled.  by the 
86f0: 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63 6f  [sqlite3_test_co
8700: 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61  ntrol()] interfa
8710: 63 65 20 74 68 61 74 20 69 73 20 75 73 65 64 20  ce that is used 
8720: 74 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70 61  to exercise.  pa
8730: 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74  rts of the SQLit
8740: 65 20 63 6f 72 65 20 74 68 61 74 20 61 72 65 20  e core that are 
8750: 64 69 66 66 69 63 75 6c 74 20 74 6f 20 63 6f 6e  difficult to con
8760: 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75 72 65  trol and measure
8770: 20 75 73 69 6e 67 0a 20 20 74 68 65 20 73 74 61   using.  the sta
8780: 6e 64 61 72 64 20 41 50 49 2e 20 20 54 68 69 73  ndard API.  This
8790: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
87a0: 61 74 20 62 75 69 6c 74 2d 69 6e 20 74 65 73 74  at built-in test
87b0: 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49   logic..}..COMPI
87c0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
87d0: 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a 20  E_OMIT_CAST} {. 
87e0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
87f0: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
8800: 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  it support for t
8810: 68 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f 72  he CAST operator
8820: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8830: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8840: 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73  _CHECK} {.  This
8850: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
8860: 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75  QLite to omit su
8870: 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b 20  pport for CHECK 
8880: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20 54  constraints..  T
8890: 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20 73  he parser will s
88a0: 74 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45 43  till accept CHEC
88b0: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e  K constraints in
88c0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c   SQL statements,
88d0: 0a 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75 73  .  they will jus
88e0: 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63 65  t not be enforce
88f0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
8900: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
8910: 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f  T_COMPILEOPTION_
8920: 44 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73 20  DIAGS} {.  This 
8930: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
8940: 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 69  o omit the compi
8950: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64  le-time option d
8960: 69 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69 6c  iagnostics avail
8970: 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74 65  able.  in SQLite
8980: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20  , including the 
8990: 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65  [sqlite3_compile
89a0: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61  option_used()] a
89b0: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  nd.  [sqlite3_co
89c0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
89d0: 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f  )] C/C++ functio
89e0: 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  ns, the.  [sqlit
89f0: 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  e_compileoption_
8a00: 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c  used()] and [sql
8a10: 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  ite_compileoptio
8a20: 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75 6e  n_get()] SQL fun
8a30: 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74 68  ctions,.  and th
8a40: 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f  e [compile_optio
8a50: 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43  ns pragma]..}..C
8a60: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8a70: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c  QLITE_OMIT_COMPL
8a80: 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ETE} {.  This op
8a90: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
8aa0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74  [sqlite3_complet
8ab0: 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
8ac0: 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 0a  3_complete16()].
8ad0: 20 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20    interfaces to 
8ae0: 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  be omitted..}..C
8af0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8b00: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f  QLITE_OMIT_COMPO
8b10: 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20 20  UND_SELECT} {.  
8b20: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
8b30: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
8b40: 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43 54  compound [SELECT
8b50: 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  ] functionality.
8b60: 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74 61   .  [SELECT] sta
8b70: 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73 65  tements that use
8b80: 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20 55   the .  UNION, U
8b90: 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53  NION ALL, INTERS
8ba0: 45 43 54 20 6f 72 20 45 58 43 45 50 54 20 63 6f  ECT or EXCEPT co
8bb0: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f 70  mpound SELECT op
8bc0: 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20 20  erators will .  
8bd0: 63 61 75 73 65 20 61 20 70 61 72 73 65 20 65 72  cause a parse er
8be0: 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53 45  ror...  An [INSE
8bf0: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69  RT] statement wi
8c00: 74 68 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75  th multiple valu
8c10: 65 73 20 69 6e 20 74 68 65 20 56 41 4c 55 45 53  es in the VALUES
8c20: 20 63 6c 61 75 73 65 20 69 73 0a 20 20 69 6d 70   clause is.  imp
8c30: 6c 65 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e 61  lemented interna
8c40: 6c 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f 75 6e  lly as a compoun
8c50: 64 20 53 45 4c 45 43 54 2e 20 20 48 65 6e 63 65  d SELECT.  Hence
8c60: 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c  , this option al
8c70: 73 6f 0a 20 20 64 69 73 61 62 6c 65 73 20 74 68  so.  disables th
8c80: 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73  e ability to ins
8c90: 65 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 61 20  ert more than a 
8ca0: 73 69 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e 67  single row using
8cb0: 20 61 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e 54   an.  INSERT INT
8cc0: 4f 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e 2e  O ... VALUES ...
8cd0: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a 43   statement..}..C
8ce0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8cf0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54  QLITE_OMIT_DATET
8d00: 49 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49  IME_FUNCS} {.  I
8d10: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
8d20: 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65   defined, SQLite
8d30: 27 73 20 62 75 69 6c 74 2d 69 6e 20 64 61 74 65  's built-in date
8d40: 20 61 6e 64 20 74 69 6d 65 20 6d 61 6e 69 70 75   and time manipu
8d50: 6c 61 74 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f  lation.  functio
8d60: 6e 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20  ns are omitted. 
8d70: 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68  Specifically, th
8d80: 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20  e SQL functions 
8d90: 6a 75 6c 69 61 6e 64 61 79 28 29 2c 20 64 61 74  julianday(), dat
8da0: 65 28 29 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64  e(),.  time(), d
8db0: 61 74 65 74 69 6d 65 28 29 20 61 6e 64 20 73 74  atetime() and st
8dc0: 72 66 74 69 6d 65 28 29 20 61 72 65 20 6e 6f 74  rftime() are not
8dd0: 20 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 20   available. The 
8de0: 64 65 66 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20  default column. 
8df0: 20 76 61 6c 75 65 73 20 43 55 52 52 45 4e 54 5f   values CURRENT_
8e00: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
8e10: 54 45 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54  TE and CURRENT_T
8e20: 49 4d 45 53 54 41 4d 50 20 61 72 65 20 73 74 69  IMESTAMP are sti
8e30: 6c 6c 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a  ll available..}.
8e40: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8e50: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43  {SQLITE_OMIT_DEC
8e60: 4c 54 59 50 45 7d 20 7b 0a 20 20 54 68 69 73 20  LTYPE} {.  This 
8e70: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
8e80: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
8e90: 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b  port for the.  [
8ea0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
8eb0: 65 63 6c 74 79 70 65 28 29 5d 20 61 6e 64 20 5b  ecltype()] and [
8ec0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
8ed0: 65 63 6c 74 79 70 65 31 36 28 29 5d 0a 20 20 69  ecltype16()].  i
8ee0: 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f  nterfaces..}..CO
8ef0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8f00: 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43  LITE_OMIT_DEPREC
8f10: 41 54 45 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ATED} {.  This o
8f20: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
8f30: 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  ite to omit supp
8f40: 6f 72 74 20 66 6f 72 20 69 6e 74 65 72 66 61 63  ort for interfac
8f50: 65 73 0a 20 20 6d 61 72 6b 65 64 20 61 73 20 64  es.  marked as d
8f60: 65 70 72 65 63 61 74 65 64 2e 20 20 54 68 69 73  eprecated.  This
8f70: 20 69 6e 63 6c 75 64 65 73 20 0a 20 20 5b 73 71   includes .  [sq
8f80: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
8f90: 63 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b 73 71 6c  count()],.  [sql
8fa0: 69 74 65 33 5f 65 78 70 69 72 65 64 28 29 5d 2c  ite3_expired()],
8fb0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 6e  .  [sqlite3_tran
8fc0: 73 66 65 72 5f 62 69 6e 64 69 6e 67 73 28 29 5d  sfer_bindings()]
8fd0: 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 67 6c 6f  ,.  [sqlite3_glo
8fe0: 62 61 6c 5f 72 65 63 6f 76 65 72 28 29 5d 2c 0a  bal_recover()],.
8ff0: 20 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65 61    [sqlite3_threa
9000: 64 5f 63 6c 65 61 6e 75 70 28 29 5d 20 61 6e 64  d_cleanup()] and
9010: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  .  [sqlite3_memo
9020: 72 79 5f 61 6c 61 72 6d 28 29 5d 20 69 6e 74 65  ry_alarm()] inte
9030: 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  rfaces..}..COMPI
9040: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9050: 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b  E_OMIT_DISKIO} {
9060: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
9070: 6d 69 74 73 20 61 6c 6c 20 73 75 70 70 6f 72 74  mits all support
9080: 20 66 6f 72 20 77 72 69 74 69 6e 67 20 74 6f 20   for writing to 
9090: 74 68 65 20 64 69 73 6b 20 61 6e 64 20 66 6f 72  the disk and for
90a0: 63 65 73 0a 20 20 64 61 74 61 62 61 73 65 73 20  ces.  databases 
90b0: 74 6f 20 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f  to exist in memo
90c0: 72 79 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20 6f  ry only.  This o
90d0: 70 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65  ption has not be
90e0: 65 6e 20 0a 20 20 6d 61 69 6e 74 61 69 6e 65 64  en .  maintained
90f0: 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 64 6f   and probably do
9100: 65 73 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68  es not work with
9110: 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20   newer versions 
9120: 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f  of SQLite..}..CO
9130: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9140: 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49  LITE_OMIT_EXPLAI
9150: 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  N} {.  Defining 
9160: 74 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  this option caus
9170: 65 73 20 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d  es the [EXPLAIN]
9180: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f   command to be o
9190: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a  mitted from the.
91a0: 20 20 6c 69 62 72 61 72 79 2e 20 41 74 74 65 6d    library. Attem
91b0: 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65  pting to execute
91c0: 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74   an [EXPLAIN] st
91d0: 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75  atement will cau
91e0: 73 65 20 61 20 70 61 72 73 65 0a 20 20 65 72 72  se a parse.  err
91f0: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
9200: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
9210: 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d  IT_FLAG_PRAGMAS}
9220: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9230: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
9240: 6f 72 20 61 20 73 75 62 73 65 74 20 6f 66 20 5b  or a subset of [
9250: 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73  PRAGMA] commands
9260: 20 74 68 61 74 0a 20 20 71 75 65 72 79 20 61 6e   that.  query an
9270: 64 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72  d set boolean pr
9280: 6f 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d  operties..}..COM
9290: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
92a0: 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e  ITE_OMIT_FLOATIN
92b0: 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69  G_POINT} {.  Thi
92c0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
92d0: 20 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e   to omit floatin
92e0: 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73  g-point number s
92f0: 75 70 70 6f 72 74 20 66 72 6f 6d 20 74 68 65 20  upport from the 
9300: 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79  SQLite.  library
9310: 2e 20 57 68 65 6e 20 73 70 65 63 69 66 69 65 64  . When specified
9320: 2c 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 66  , specifying a f
9330: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75  loating point nu
9340: 6d 62 65 72 20 61 73 20 61 20 6c 69 74 65 72 61  mber as a litera
9350: 6c 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e 30 31  l .  (i.e. "1.01
9360: 22 29 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20  ") results in a 
9370: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20  parse error...  
9380: 3c 70 3e 49 6e 20 74 68 65 20 66 75 74 75 72 65  <p>In the future
9390: 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61  , this option ma
93a0: 79 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f  y also disable o
93b0: 74 68 65 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ther floating po
93c0: 69 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61  int .  functiona
93d0: 6c 69 74 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c  lity, for exampl
93e0: 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72  e the [sqlite3_r
93f0: 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c  esult_double()],
9400: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e   .  [sqlite3_bin
9410: 64 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71  d_double()], [sq
9420: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
9430: 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  le()] and.  [sql
9440: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
9450: 6c 65 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69  le()] API functi
9460: 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43  ons..  </p>.}..C
9470: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9480: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49  QLITE_OMIT_FOREI
9490: 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74  GN_KEY} {.  If t
94a0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
94b0: 66 69 6e 65 64 2c 20 74 68 65 6e 20 5b 66 6f 72  fined, then [for
94c0: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
94d0: 69 6e 74 5d 20 73 79 6e 74 61 78 20 69 73 0a 20  int] syntax is. 
94e0: 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 2e   not recognized.
94f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9500: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9510: 47 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54  GET_TABLE} {.  T
9520: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
9530: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73  s support for [s
9540: 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
9550: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
9560: 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d  e3_free_table()]
9570: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
9580: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9590: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49  N {SQLITE_OMIT_I
95a0: 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69  NCRBLOB} {.  Thi
95b0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
95c0: 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c  support for [sql
95d0: 69 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72  ite3_blob | incr
95e0: 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
95f0: 5d 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ].  to be omitte
9600: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
9610: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
9620: 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43  T_INTEGRITY_CHEC
9630: 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  K} {.  This opti
9640: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
9650: 20 66 6f 72 20 74 68 65 20 5b 69 6e 74 65 67 72   for the [integr
9660: 69 74 79 5f 63 68 65 63 6b 20 70 72 61 67 6d 61  ity_check pragma
9670: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
9680: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
9690: 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54  T_LIKE_OPTIMIZAT
96a0: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
96b0: 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
96c0: 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c  e ability of SQL
96d0: 69 74 65 20 74 6f 20 75 73 65 20 69 6e 64 69 63  ite to use indic
96e0: 65 73 20 74 6f 20 68 65 6c 70 0a 20 20 72 65 73  es to help.  res
96f0: 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20  olve [LIKE] and 
9700: 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73  [GLOB] operators
9710: 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75   in a WHERE clau
9720: 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  se..}..COMPILE_O
9730: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
9740: 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  IT_LOAD_EXTENSIO
9750: 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  N} {.  This opti
9760: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 65 6e 74  on omits the ent
9770: 69 72 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f  ire extension lo
9780: 61 64 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20  ading mechanism 
9790: 66 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c 20 69  from.  SQLite, i
97a0: 6e 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69 74 65  ncluding [sqlite
97b0: 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
97c0: 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 0a 20  tension()] and. 
97d0: 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65   [sqlite3_load_e
97e0: 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65  xtension()] inte
97f0: 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  rfaces..}..COMPI
9800: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9810: 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45  E_OMIT_LOCALTIME
9820: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9830: 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 6c 6f 63  n omits the "loc
9840: 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72  altime" modifier
9850: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 65 20 61   from the date a
9860: 6e 64 20 74 69 6d 65 0a 20 20 66 75 6e 63 74 69  nd time.  functi
9870: 6f 6e 73 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  ons.  This optio
9880: 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75  n is sometimes u
9890: 73 65 66 75 6c 20 77 68 65 6e 20 74 72 79 69 6e  seful when tryin
98a0: 67 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20 20 74  g to compile.  t
98b0: 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
98c0: 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 61 20   functions on a 
98d0: 70 6c 61 74 66 6f 72 6d 20 74 68 61 74 20 64 6f  platform that do
98e0: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 74  es not support t
98f0: 68 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f 66 20  he.  concept of 
9900: 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43  local time..}..C
9910: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9920: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41  QLITE_OMIT_LOOKA
9930: 53 49 44 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SIDE} {.  This o
9940: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
9950: 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72  [lookaside memor
9960: 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a  y allocator]..}.
9970: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9980: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d  {SQLITE_OMIT_MEM
9990: 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20  ORYDB} {.  When 
99a0: 74 68 69 73 20 69 73 20 64 65 66 69 6e 65 64 2c  this is defined,
99b0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65   the library doe
99c0: 73 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74 68  s not respect th
99d0: 65 20 73 70 65 63 69 61 6c 20 64 61 74 61 62 61  e special databa
99e0: 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f  se.  name ":memo
99f0: 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75  ry:" (normally u
9a00: 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e  sed to create an
9a10: 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61   [in-memory data
9a20: 62 61 73 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a  base]). If .  ":
9a30: 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73 73  memory:" is pass
9a40: 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  ed to [sqlite3_o
9a50: 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
9a60: 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20  _open16()], or. 
9a70: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
9a80: 32 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69 74  2()], a file wit
9a90: 68 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c  h this name will
9aa0: 20 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72   be .  opened or
9ab0: 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   created..}..COM
9ac0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9ad0: 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49  ITE_OMIT_OR_OPTI
9ae0: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68  MIZATION} {.  Th
9af0: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
9b00: 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f  es the ability o
9b10: 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20  f SQLite to use 
9b20: 61 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68 65  an index togethe
9b30: 72 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20 6f  r.  with terms o
9b40: 66 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  f a WHERE clause
9b50: 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68   connected by th
9b60: 65 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d  e OR operator..}
9b70: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9b80: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41   {SQLITE_OMIT_PA
9b90: 47 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  GER_PRAGMAS} {. 
9ba0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
9bb0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
9bc0: 6d 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74  mas related to t
9bd0: 68 65 20 70 61 67 65 72 20 73 75 62 73 79 73 74  he pager subsyst
9be0: 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62  em from .  the b
9bf0: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
9c00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9c10: 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20  OMIT_PRAGMA} {. 
9c20: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
9c30: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
9c40: 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e   [PRAGMA] comman
9c50: 64 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69 62  d.  from the lib
9c60: 72 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74 20  rary. Note that 
9c70: 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  it is useful to 
9c80: 64 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72 6f  define the macro
9c90: 73 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73 70  s that omit.  sp
9ca0: 65 63 69 66 69 63 20 70 72 61 67 6d 61 73 20 69  ecific pragmas i
9cb0: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  n addition to th
9cc0: 69 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79 20  is, as they may 
9cd0: 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70 70  also remove supp
9ce0: 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e  orting code.  in
9cf0: 20 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74 65   other sub-syste
9d00: 6d 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 72  ms. This macro r
9d10: 65 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41 47  emoves the [PRAG
9d20: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79  MA] command only
9d30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9d40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
9d50: 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41  _PROGRESS_CALLBA
9d60: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
9d70: 69 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69 6e  ion may be defin
9d80: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
9d90: 61 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73 73  apability to iss
9da0: 75 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a 20  ue "progress" . 
9db0: 20 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e   callbacks durin
9dc0: 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53  g long-running S
9dd0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54  QL statements. T
9de0: 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70  he .  [sqlite3_p
9df0: 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
9e00: 29 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69 6f  )].  API functio
9e10: 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74  n is not present
9e20: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
9e30: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9e40: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9e50: 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a  QUICKBALANCE} {.
9e60: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
9e70: 69 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  its an alternati
9e80: 76 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72 65  ve, faster B-Tre
9e90: 65 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74  e balancing rout
9ea0: 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68 69  ine..  Using thi
9eb0: 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53  s option makes S
9ec0: 51 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20 73  QLite slightly s
9ed0: 6d 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65 78  maller at the ex
9ee0: 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e  pense of.  makin
9ef0: 67 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74 6c  g it run slightl
9f00: 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d  y slower..}..COM
9f10: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9f20: 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58  ITE_OMIT_REINDEX
9f30: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
9f40: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
9f50: 64 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58 5d  d, the [REINDEX]
9f60: 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  .  command is no
9f70: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
9f80: 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65  e library..  Exe
9f90: 63 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44 45  cuting a [REINDE
9fa0: 58 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  X] statement cau
9fb0: 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65  ses .  a parse e
9fc0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
9fd0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9fe0: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
9ff0: 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
a000: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
a010: 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20  its pragmas for 
a020: 71 75 65 72 79 69 6e 67 20 74 68 65 20 64 61 74  querying the dat
a030: 61 62 61 73 65 20 73 63 68 65 6d 61 20 66 72 6f  abase schema fro
a040: 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
a050: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a060: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
a070: 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52  CHEMA_VERSION_PR
a080: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
a090: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
a0a0: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f  omits pragmas fo
a0b0: 72 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20 6d  r querying and m
a0c0: 6f 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20 20  odifying the .  
a0d0: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
a0e0: 76 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65 72  version and user
a0f0: 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68   version from th
a100: 65 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66 69  e build. Specifi
a110: 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73  cally, the .  [s
a120: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61  chema_version] a
a130: 6e 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e  nd [user_version
a140: 5d 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f 6d  ] PRAGMAs are om
a150: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
a160: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a170: 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43  _OMIT_SHARED_CAC
a180: 48 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  HE} {.  This opt
a190: 69 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69 74  ion builds SQLit
a1a0: 65 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f 72  e without suppor
a1b0: 74 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61 63  t for shared-cac
a1c0: 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b  he mode..  The [
a1d0: 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
a1e0: 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20 69  hared_cache()] i
a1f0: 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20  s omitted along 
a200: 77 69 74 68 20 61 20 66 61 69 72 0a 20 20 61 6d  with a fair.  am
a210: 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77 69  ount of logic wi
a220: 74 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65 20  thin the B-Tree 
a230: 73 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63 69  subsystem associ
a240: 61 74 65 64 20 77 69 74 68 20 73 68 61 72 65 64  ated with shared
a250: 0a 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65 6d  .  cache managem
a260: 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ent..}..COMPILE_
a270: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a280: 4d 49 54 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a  MIT_SUBQUERY} {.
a290: 20 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73 75    If defined, su
a2a0: 70 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73 65  pport for sub-se
a2b0: 6c 65 63 74 73 20 61 6e 64 20 74 68 65 20 49 4e  lects and the IN
a2c0: 28 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65 20  () operator are 
a2d0: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
a2e0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a2f0: 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49  TE_OMIT_TCL_VARI
a300: 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  ABLE} {.  If thi
a310: 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  s macro is defin
a320: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70 65  ed, then the spe
a330: 63 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c 65  cial "$<variable
a340: 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20  -name>" syntax. 
a350: 20 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61 74   used to automat
a360: 69 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20  ically bind SQL 
a370: 76 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43 4c  variables to TCL
a380: 20 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f 6d   variables is om
a390: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
a3a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a3b0: 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a  _OMIT_TEMPDB} {.
a3c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
a3d0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
a3e0: 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41 52  TEMP or TEMPORAR
a3f0: 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d  Y tables..}..COM
a400: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a410: 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20  ITE_OMIT_TRACE} 
a420: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a430: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
a440: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70  r the [sqlite3_p
a450: 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20  rofile()] and.  
a460: 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29  [sqlite3_trace()
a470: 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64  ] interfaces and
a480: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
a490: 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  d logic..}..COMP
a4a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a4b0: 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d  TE_OMIT_TRIGGER}
a4c0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
a4d0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
a4e0: 73 75 70 70 6f 72 74 20 66 6f 72 20 54 52 49 47  support for TRIG
a4f0: 47 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69  GER objects. Nei
a500: 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45  ther the .  [CRE
a510: 41 54 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20  ATE TRIGGER] or 
a520: 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20  [DROP TRIGGER]. 
a530: 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76   commands are av
a540: 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20  ailable in this 
a550: 63 61 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70  case, and attemp
a560: 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a  ting to execute.
a570: 20 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65    either will re
a580: 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20  sult in a parse 
a590: 65 72 72 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70  error..  This op
a5a0: 74 69 6f 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c  tion also disabl
a5b0: 65 73 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  es enforcement o
a5c0: 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  f [foreign key c
a5d0: 6f 6e 73 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73  onstraints],.  s
a5e0: 69 6e 63 65 20 74 68 65 20 63 6f 64 65 20 74 68  ince the code th
a5f0: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72  at implements tr
a600: 69 67 67 65 72 73 20 61 6e 64 20 77 68 69 63 68  iggers and which
a610: 20 69 73 20 6f 6d 69 74 74 65 64 20 62 79 20 74   is omitted by t
a620: 68 69 73 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20  his.  option is 
a630: 61 6c 73 6f 20 75 73 65 64 20 74 6f 20 69 6d 70  also used to imp
a640: 6c 65 6d 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20  lement [foreign 
a650: 6b 65 79 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a  key actions]..}.
a660: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a670: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55  {SQLITE_OMIT_TRU
a680: 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49  NCATE_OPTIMIZATI
a690: 4f 4e 7d 20 7b 0a 20 20 41 20 64 65 66 61 75 6c  ON} {.  A defaul
a6a0: 74 20 62 75 69 6c 64 20 6f 66 20 53 51 4c 69 74  t build of SQLit
a6b0: 65 2c 20 69 66 20 61 20 5b 44 45 4c 45 54 45 5d  e, if a [DELETE]
a6c0: 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 6e   statement has n
a6d0: 6f 20 57 48 45 52 45 20 63 6c 61 75 73 65 0a 20  o WHERE clause. 
a6e0: 20 61 6e 64 20 6f 70 65 72 61 74 65 73 20 6f 6e   and operates on
a6f0: 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 6e 6f   a table with no
a700: 20 74 72 69 67 67 65 72 73 2c 20 61 6e 20 6f 70   triggers, an op
a710: 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72  timization occur
a720: 73 20 74 68 61 74 0a 20 20 63 61 75 73 65 73 20  s that.  causes 
a730: 74 68 65 20 44 45 4c 45 54 45 20 74 6f 20 6f 63  the DELETE to oc
a740: 63 75 72 20 62 79 20 64 72 6f 70 70 69 6e 67 20  cur by dropping 
a750: 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 74  and recreating t
a760: 68 65 20 74 61 62 6c 65 2e 20 20 0a 20 20 44 72  he table.  .  Dr
a770: 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65  opping and recre
a780: 61 74 69 6e 67 20 61 20 74 61 62 6c 65 20 69 73  ating a table is
a790: 20 75 73 75 61 6c 6c 79 20 6d 75 63 68 20 66 61   usually much fa
a7a0: 73 74 65 72 20 74 68 61 6e 20 64 65 6c 65 74 69  ster than deleti
a7b0: 6e 67 0a 20 20 74 68 65 20 74 61 62 6c 65 20 63  ng.  the table c
a7c0: 6f 6e 74 65 6e 74 20 72 6f 77 20 62 79 20 72 6f  ontent row by ro
a7d0: 77 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20  w.  This is the 
a7e0: 22 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69  "truncate optimi
a7f0: 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50  zation"..}..COMP
a800: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a810: 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b  TE_OMIT_UTF16} {
a820: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
a830: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 73 75   used to omit su
a840: 70 70 6f 72 74 20 66 6f 72 20 55 54 46 31 36 20  pport for UTF16 
a850: 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57  text encoding. W
a860: 68 65 6e 20 74 68 69 73 20 69 73 0a 20 20 64 65  hen this is.  de
a870: 66 69 6e 65 64 20 61 6c 6c 20 41 50 49 20 66 75  fined all API fu
a880: 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74  nctions that ret
a890: 75 72 6e 20 6f 72 20 61 63 63 65 70 74 20 55 54  urn or accept UT
a8a0: 46 31 36 20 65 6e 63 6f 64 65 64 20 74 65 78 74  F16 encoded text
a8b0: 20 61 72 65 0a 20 20 75 6e 61 76 61 69 6c 61 62   are.  unavailab
a8c0: 6c 65 2e 20 54 68 65 73 65 20 66 75 6e 63 74 69  le. These functi
a8d0: 6f 6e 73 20 63 61 6e 20 62 65 20 69 64 65 6e 74  ons can be ident
a8e0: 69 66 69 65 64 20 62 79 20 74 68 65 20 66 61 63  ified by the fac
a8f0: 74 20 74 68 61 74 20 74 68 65 79 20 65 6e 64 0a  t that they end.
a900: 20 20 77 69 74 68 20 27 31 36 27 2c 20 66 6f 72    with '16', for
a910: 20 65 78 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65   example [sqlite
a920: 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c 20  3_prepare16()], 
a930: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
a940: 74 65 78 74 31 36 28 29 5d 20 61 6e 64 0a 20 20  text16()] and.  
a950: 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65  [sqlite3_bind_te
a960: 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50  xt16()]..}..COMP
a970: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a980: 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20  TE_OMIT_VACUUM} 
a990: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
a9a0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
a9b0: 20 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20   the [VACUUM].  
a9c0: 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69  command is not i
a9d0: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c  ncluded in the l
a9e0: 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74  ibrary..  Execut
a9f0: 69 6e 67 20 61 20 5b 56 41 43 55 55 4d 5d 20 73  ing a [VACUUM] s
aa00: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20  tatement causes 
aa10: 0a 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  .  a parse error
aa20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
aa30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
aa40: 5f 56 49 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e  _VIEW} {.  Defin
aa50: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
aa60: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
aa70: 72 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20  r VIEW objects. 
aa80: 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b  Neither the .  [
aa90: 43 52 45 41 54 45 20 56 49 45 57 5d 20 6e 6f 72  CREATE VIEW] nor
aaa0: 20 74 68 65 20 5b 44 52 4f 50 20 56 49 45 57 5d   the [DROP VIEW]
aab0: 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20  .  commands are 
aac0: 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69  available in thi
aad0: 73 20 63 61 73 65 2c 20 61 6e 64 0a 20 20 61 74  s case, and.  at
aae0: 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63  tempting to exec
aaf0: 75 74 65 20 65 69 74 68 65 72 20 77 69 6c 6c 20  ute either will 
ab00: 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73  result in a pars
ab10: 65 20 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e  e error...  WARN
ab20: 49 4e 47 3a 20 49 66 20 74 68 69 73 20 6d 61 63  ING: If this mac
ab30: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69  ro is defined, i
ab40: 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f  t will not be po
ab50: 73 73 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61  ssible to open a
ab60: 20 64 61 74 61 62 61 73 65 0a 20 20 66 6f 72 20   database.  for 
ab70: 77 68 69 63 68 20 74 68 65 20 73 63 68 65 6d 61  which the schema
ab80: 20 63 6f 6e 74 61 69 6e 73 20 56 49 45 57 20 6f   contains VIEW o
ab90: 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50  bjects. .}..COMP
aba0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
abb0: 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54  TE_OMIT_VIRTUALT
abc0: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ABLE} {.  This o
abd0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
abe0: 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c  ort for the [sql
abf0: 69 74 65 33 5f 76 74 61 62 20 7c 20 56 69 72 74  ite3_vtab | Virt
ac00: 75 61 6c 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63  ual Table].  mec
ac10: 68 61 6e 69 73 6d 20 69 6e 20 53 51 4c 69 74 65  hanism in SQLite
ac20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
ac30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
ac40: 5f 57 41 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _WAL} {.  This o
ac50: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
ac60: 22 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f  "[write-ahead lo
ac70: 67 5d 22 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41  g]" (a.k.a. "[WA
ac80: 4c 5d 22 29 20 63 61 70 61 62 69 6c 69 74 79 2e  L]") capability.
ac90: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
aca0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
acb0: 57 53 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  WSD} {.  This op
acc0: 74 69 6f 6e 73 20 62 75 69 6c 64 73 20 61 20 76  tions builds a v
acd0: 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ersion of the SQ
ace0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 68 61  Lite library tha
acf0: 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20  t contains no.  
ad00: 57 72 69 74 61 62 6c 65 20 53 74 61 74 69 63 20  Writable Static 
ad10: 44 61 74 61 20 28 57 53 44 29 2e 20 20 57 53 44  Data (WSD).  WSD
ad20: 20 69 73 20 67 6c 6f 62 61 6c 20 76 61 72 69 61   is global varia
ad30: 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73 74 61 74  bles and/or stat
ad40: 69 63 0a 20 20 76 61 72 69 61 62 6c 65 73 2e 20  ic.  variables. 
ad50: 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20   Some platforms 
ad60: 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57  do not support W
ad70: 53 44 2c 20 61 6e 64 20 74 68 69 73 20 6f 70 74  SD, and this opt
ad80: 69 6f 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79  ion is necessary
ad90: 0a 20 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  .  in order for 
ada0: 53 51 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20 74  SQLite to work t
adb0: 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20  hose platforms. 
adc0: 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65   ..  Unlike othe
add0: 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77  r OMIT options w
ade0: 68 69 63 68 20 6d 61 6b 65 20 74 68 65 20 53 51  hich make the SQ
adf0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 73 6d 61  Lite library sma
ae00: 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20 6f 70 74  ller,.  this opt
ae10: 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e 63  ion actually inc
ae20: 72 65 61 73 65 73 20 74 68 65 20 73 69 7a 65 20  reases the size 
ae30: 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 6d 61  of SQLite and ma
ae40: 6b 65 73 20 69 74 20 72 75 6e 0a 20 20 61 20 6c  kes it run.  a l
ae50: 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f  ittle slower.  O
ae60: 6e 6c 79 20 75 73 65 20 74 68 69 73 20 6f 70 74  nly use this opt
ae70: 69 6f 6e 20 69 66 20 53 51 4c 69 74 65 20 69 73  ion if SQLite is
ae80: 20 62 65 69 6e 67 20 62 75 69 6c 74 20 66 6f 72   being built for
ae90: 20 61 6e 0a 20 20 65 6d 62 65 64 64 65 64 20 74   an.  embedded t
aea0: 61 72 67 65 74 20 74 68 61 74 20 64 6f 65 73 20  arget that does 
aeb0: 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44 2e  not support WSD.
aec0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
aed0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
aee0: 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68  XFER_OPT} {.  Th
aef0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
af00: 73 75 70 70 6f 72 74 20 66 6f 72 20 6f 70 74 69  support for opti
af10: 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61 74 20 68  mizations that h
af20: 65 6c 70 20 73 74 61 74 65 6d 65 6e 74 73 0a 20  elp statements. 
af30: 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 49 4e   of the form "IN
af40: 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45  SERT INTO ... SE
af50: 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61  LECT ..." run fa
af60: 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ster..}..COMPILE
af70: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
af80: 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20  ZERO_MALLOC} {. 
af90: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
afa0: 74 73 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66  ts both the [def
afb0: 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ault memory allo
afc0: 63 61 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20  cator] and the. 
afd0: 20 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f   [debugging memo
afe0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72  ry allocator] fr
aff0: 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64  om the build and
b000: 20 73 75 62 73 74 69 74 75 74 65 73 20 61 20 73   substitutes a s
b010: 74 75 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c  tub.  memory all
b020: 6f 63 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61  ocator that alwa
b030: 79 73 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74  ys fails.  SQLit
b040: 65 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77  e will not run w
b050: 69 74 68 20 74 68 69 73 0a 20 20 73 74 75 62 20  ith this.  stub 
b060: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
b070: 20 73 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62   since it will b
b080: 65 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f  e unable to allo
b090: 63 61 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75  cate memory.  Bu
b0a0: 74 0a 20 20 74 68 69 73 20 73 74 75 62 20 63 61  t.  this stub ca
b0b0: 6e 20 62 65 20 72 65 70 6c 61 63 65 64 20 61 74  n be replaced at
b0c0: 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e   start-time usin
b0d0: 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  g.  [sqlite3_con
b0e0: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
b0f0: 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29  FIG_MALLOC],...)
b100: 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63   or.  [sqlite3_c
b110: 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43  onfig]([SQLITE_C
b120: 4f 4e 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29  ONFIG_HEAP],...)
b130: 2e 0a 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65  ..  So the net e
b140: 66 66 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f  ffect of this co
b150: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
b160: 6e 20 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c  n is that it all
b170: 6f 77 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20  ows SQLite.  to 
b180: 62 65 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20  be compiled and 
b190: 6c 69 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61  linked against a
b1a0: 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20   system library 
b1b0: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75  that does not su
b1c0: 70 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29  pport.  malloc()
b1d0: 2c 20 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72  , free(), and/or
b1e0: 20 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c   realloc()..}..<
b1f0: 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64  /tcl>.<a name="d
b200: 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61  ebugoptions"></a
b210: 3e 0a 3c 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73  >.<h2>1.7 Analys
b220: 69 73 20 61 6e 64 20 44 65 62 75 67 67 69 6e 67  is and Debugging
b230: 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74   Options</h2>.<t
b240: 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  cl>..COMPILE_OPT
b250: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 42 55  ION {SQLITE_DEBU
b260: 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 69 74  G} {.  The SQLit
b270: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 63 6f  e source code co
b280: 6e 74 61 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79  ntains literally
b290: 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 61 73   thousands of as
b2a0: 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74  sert() statement
b2b0: 73 0a 20 20 75 73 65 64 20 74 6f 20 76 65 72 69  s.  used to veri
b2c0: 66 79 20 69 6e 74 65 72 6e 61 6c 20 61 73 73 75  fy internal assu
b2d0: 6d 70 74 69 6f 6e 73 20 61 6e 64 20 73 75 62 72  mptions and subr
b2e0: 6f 75 74 69 6e 65 20 70 72 65 63 6f 6e 64 69 74  outine precondit
b2f0: 69 6f 6e 73 20 61 6e 64 0a 20 20 70 6f 73 74 63  ions and.  postc
b300: 6f 6e 64 69 74 69 6f 6e 73 2e 20 20 54 68 65 73  onditions.  Thes
b310: 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65  e assert() state
b320: 6d 65 6e 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c  ments are normal
b330: 6c 79 20 74 75 72 6e 65 64 20 6f 66 66 0a 20 20  ly turned off.  
b340: 28 74 68 65 79 20 67 65 6e 65 72 61 74 65 20 6e  (they generate n
b350: 6f 20 63 6f 64 65 29 20 73 69 6e 63 65 20 74 75  o code) since tu
b360: 72 6e 69 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61  rning them on ma
b370: 6b 65 73 20 53 51 4c 69 74 65 20 72 75 6e 20 61  kes SQLite run a
b380: 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74  pproximately.  t
b390: 68 72 65 65 20 74 69 6d 65 73 20 73 6c 6f 77 65  hree times slowe
b3a0: 72 2e 20 20 42 75 74 20 66 6f 72 20 74 65 73 74  r.  But for test
b3b0: 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73  ing and analysis
b3c0: 2c 20 69 74 20 69 73 20 75 73 65 66 75 6c 20 74  , it is useful t
b3d0: 6f 20 74 75 72 6e 0a 20 20 74 68 65 20 61 73 73  o turn.  the ass
b3e0: 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73  ert() statements
b3f0: 20 6f 6e 2e 20 20 54 68 65 20 53 51 4c 49 54 45   on.  The SQLITE
b400: 5f 44 45 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74  _DEBUG compile-t
b410: 69 6d 65 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20  ime option does 
b420: 74 68 69 73 2e 0a 20 20 53 51 4c 49 54 45 5f 44  this..  SQLITE_D
b430: 45 42 55 47 20 61 6c 73 6f 20 74 75 72 6e 73 20  EBUG also turns 
b440: 6f 6e 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65  on some other de
b450: 62 75 67 67 69 6e 67 20 66 65 61 74 75 72 65 73  bugging features
b460: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
b470: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44  ION {SQLITE_MEMD
b480: 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51  EBUG} {.  The SQ
b490: 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70  LITE_MEMDEBUG op
b4a0: 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69  tion causes an i
b4b0: 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b  nstrumented .  [
b4c0: 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
b4d0: 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f   allocator].  to
b4e0: 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
b4f0: 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
b500: 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20  llocator within 
b510: 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69  SQLite.  The.  i
b520: 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f  nstrumented memo
b530: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65  ry allocator che
b540: 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f  cks for misuse o
b550: 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c  f dynamically al
b560: 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79  located.  memory
b570: 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d  .  Examples of m
b580: 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73  isuse include us
b590: 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72  ing memory after
b5a0: 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20   it is freed,.  
b5b0: 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20  writing off the 
b5c0: 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79  ends of a memory
b5d0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65   allocation, fre
b5e0: 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20  eing memory not 
b5f0: 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74  previously.  obt
b600: 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d  ained from the m
b610: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c  emory allocator,
b620: 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69   or failing to i
b630: 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a  nitialize newly.
b640: 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f    allocated memo
b650: 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a        ry..}..</tcl>.