Documentation Source Text

Hex Artifact Content
Login

Artifact 4ca3424b23c9080498a9770586b5fdd0c2f644aa:


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 4a 4f 55 52 4e 41 4c 5f 53 49 5a 45 5f 4c  T_JOURNAL_SIZE_L
0ec0: 49 4d 49 54 3d 3c 69 3e 26 6c 74 3b 62 79 74 65  IMIT=<i>&lt;byte
0ed0: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
0ee0: 68 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  his option sets 
0ef0: 74 68 65 20 73 69 7a 65 20 6c 69 6d 69 74 20 6f  the size limit o
0f00: 6e 20 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  n [rollback jour
0f10: 6e 61 6c 5d 20 66 69 6c 65 73 20 69 6e 0a 20 20  nal] files in.  
0f20: 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 70 72  [journal_mode pr
0f30: 61 67 6d 61 20 7c 20 70 65 72 73 69 73 74 65 6e  agma | persisten
0f40: 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 5d 20  t journal mode] 
0f50: 61 6e 64 0a 20 20 5b 6c 6f 63 6b 69 6e 67 5f 6d  and.  [locking_m
0f60: 6f 64 65 20 7c 20 65 78 63 6c 75 73 69 76 69 6e  ode | exclusivin
0f70: 67 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 5d 20  g locking mode] 
0f80: 61 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a 65 20  and on the size 
0f90: 6f 66 20 74 68 65 0a 20 20 77 72 69 74 65 2d 61  of the.  write-a
0fa0: 68 65 61 64 20 6c 6f 67 20 66 69 6c 65 20 69 6e  head log file in
0fb0: 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 57 68 65   [WAL mode]. Whe
0fc0: 6e 20 74 68 69 73 20 0a 20 20 63 6f 6d 70 69 6c  n this .  compil
0fd0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
0fe0: 20 6f 6d 69 74 74 65 64 20 74 68 65 72 65 20 69   omitted there i
0ff0: 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64  s no upper bound
1000: 20 6f 6e 20 74 68 65 0a 20 20 73 69 7a 65 20 6f   on the.  size o
1010: 66 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a  f the rollback j
1020: 6f 75 72 6e 61 6c 73 20 6f 72 20 77 72 69 74 65  ournals or write
1030: 2d 61 68 65 61 64 20 6c 6f 67 73 2e 20 20 0a 20  -ahead logs.  . 
1040: 20 54 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c   The journal fil
1050: 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a 20 20 63  e size limit.  c
1060: 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20 61 74  an be changed at
1070: 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20   run-time using 
1080: 74 68 65 20 5b 6a 6f 75 72 6e 61 6c 5f 73 69 7a  the [journal_siz
1090: 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d 61 5d 2e  e_limit pragma].
10a0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
10b0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
10c0: 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d  LT_LOCKING_MODE=
10d0: 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74  <i>&lt;1 or 0&gt
10e0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 73 65  ;</i>} {.  If se
10f0: 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 74 68 65  t to 1, then the
1100: 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e   default [lockin
1110: 67 5f 6d 6f 64 65 5d 20 69 73 20 73 65 74 20 74  g_mode] is set t
1120: 6f 20 45 58 43 4c 55 53 49 56 45 2e 0a 20 20 49  o EXCLUSIVE..  I
1130: 66 20 6f 6d 69 74 74 65 64 20 6f 72 20 73 65 74  f omitted or set
1140: 20 74 6f 20 30 20 74 68 65 6e 20 74 68 65 20 64   to 0 then the d
1150: 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f  efault [locking_
1160: 6d 6f 64 65 5d 20 69 73 20 4e 4f 52 4d 41 4c 2e  mode] is NORMAL.
1170: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1180: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55  ON {SQLITE_DEFAU
1190: 4c 54 5f 4d 45 4d 53 54 41 54 55 53 3d 3c 69 3e  LT_MEMSTATUS=<i>
11a0: 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c 2f  &lt;1 or 0&gt;</
11b0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
11c0: 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 64 65  ro is used to de
11d0: 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72 20  termine whether 
11e0: 6f 72 20 6e 6f 74 20 74 68 65 20 66 65 61 74 75  or not the featu
11f0: 72 65 73 20 65 6e 61 62 6c 65 64 20 61 6e 64 0a  res enabled and.
1200: 20 20 64 69 73 61 62 6c 65 64 20 75 73 69 6e 67    disabled using
1210: 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46   the SQLITE_CONF
1220: 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 61 72 67  IG_MEMSTATUS arg
1230: 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65  ument to [sqlite
1240: 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 20 20 61 72  3_config()].  ar
1250: 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
1260: 65 66 61 75 6c 74 2e 20 54 68 65 20 64 65 66 61  efault. The defa
1270: 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31 20 28  ult value is 1 (
1280: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1290: 45 4d 53 54 41 54 55 53 5d 0a 20 20 72 65 6c 61  EMSTATUS].  rela
12a0: 74 65 64 20 66 65 61 74 75 72 65 73 20 65 6e 61  ted features ena
12b0: 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  bled)..}..COMPIL
12c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
12d0: 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49  _DEFAULT_PAGE_SI
12e0: 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26  ZE=<i>&lt;bytes&
12f0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69  gt;</i>} {.  Thi
1300: 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
1310: 74 6f 20 73 65 74 20 74 68 65 20 64 65 66 61 75  to set the defau
1320: 6c 74 20 70 61 67 65 2d 73 69 7a 65 20 75 73 65  lt page-size use
1330: 64 20 77 68 65 6e 20 61 0a 20 20 64 61 74 61 62  d when a.  datab
1340: 61 73 65 20 69 73 20 63 72 65 61 74 65 64 2e 20  ase is created. 
1350: 54 68 65 20 76 61 6c 75 65 20 61 73 73 69 67 6e  The value assign
1360: 65 64 20 6d 75 73 74 20 62 65 20 61 20 70 6f 77  ed must be a pow
1370: 65 72 20 6f 66 20 32 2e 20 54 68 65 0a 20 20 64  er of 2. The.  d
1380: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
1390: 31 30 32 34 2e 20 54 68 65 20 63 6f 6d 70 69 6c  1024. The compil
13a0: 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d  e-time default m
13b0: 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e  ay be overridden
13c0: 20 61 74 20 0a 20 20 72 75 6e 74 69 6d 65 20 62   at .  runtime b
13d0: 79 20 74 68 65 20 5b 50 52 41 47 4d 41 20 70 61  y the [PRAGMA pa
13e0: 67 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64  ge_size] command
13f0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
1400: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
1410: 55 4c 54 5f 54 45 4d 50 5f 43 41 43 48 45 5f 53  ULT_TEMP_CACHE_S
1420: 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73  IZE=<i>&lt;pages
1430: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
1440: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
1450: 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f  e default size o
1460: 66 20 74 68 65 20 70 61 67 65 2d 63 61 63 68 65  f the page-cache
1470: 20 66 6f 72 20 74 65 6d 70 6f 72 61 72 79 20 66   for temporary f
1480: 69 6c 65 73 0a 20 20 63 72 65 61 74 65 64 20 62  iles.  created b
1490: 79 20 53 51 4c 69 74 65 20 74 6f 20 73 74 6f 72  y SQLite to stor
14a0: 65 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 72  e intermediate r
14b0: 65 73 75 6c 74 73 2c 20 69 6e 20 70 61 67 65 73  esults, in pages
14c0: 2e 20 49 74 20 64 6f 65 73 0a 20 20 6e 6f 74 20  . It does.  not 
14d0: 61 66 66 65 63 74 20 74 68 65 20 70 61 67 65 2d  affect the page-
14e0: 63 61 63 68 65 20 66 6f 72 20 74 68 65 20 74 65  cache for the te
14f0: 6d 70 20 64 61 74 61 62 61 73 65 2c 20 77 68 65  mp database, whe
1500: 72 65 20 74 61 62 6c 65 73 20 63 72 65 61 74 65  re tables create
1510: 64 0a 20 20 75 73 69 6e 67 20 5b 43 52 45 41 54  d.  using [CREAT
1520: 45 20 54 41 42 4c 45 20 7c 20 43 52 45 41 54 45  E TABLE | CREATE
1530: 20 54 45 4d 50 20 54 41 42 4c 45 5d 20 61 72 65   TEMP TABLE] are
1540: 20 73 74 6f 72 65 64 2e 20 54 68 65 20 64 65 66   stored. The def
1550: 61 75 6c 74 20 76 61 6c 75 65 0a 20 20 69 73 20  ault value.  is 
1560: 35 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  500..}..COMPILE_
1570: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
1580: 45 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43  EFAULT_WAL_AUTOC
1590: 48 45 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26 6c 74  HECKPOINT=<i>&lt
15a0: 3b 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20  ;pages&gt;</i>} 
15b0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
15c0: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  ets the default 
15d0: 70 61 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 74  page count for t
15e0: 68 65 20 5b 57 41 4c 5d 0a 20 20 5b 63 68 65 63  he [WAL].  [chec
15f0: 6b 70 6f 69 6e 74 69 6e 67 20 7c 20 61 75 74 6f  kpointing | auto
1600: 6d 61 74 69 63 20 63 68 65 63 6b 70 6f 69 6e 74  matic checkpoint
1610: 69 6e 67 5d 20 66 65 61 74 75 72 65 2e 20 20 49  ing] feature.  I
1620: 66 20 75 6e 73 70 65 63 69 66 69 65 64 2c 0a 20  f unspecified,. 
1630: 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61 67   the default pag
1640: 65 20 63 6f 75 6e 74 20 69 73 20 31 30 30 30 2e  e count is 1000.
1650: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1660: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 53  ON {SQLITE_MAX_S
1670: 43 48 45 4d 41 5f 52 45 54 52 59 3d 3c 69 3e 4e  CHEMA_RETRY=<i>N
1680: 3c 2f 69 3e 7d 20 7b 0a 20 20 57 68 65 6e 65 76  </i>} {.  Whenev
1690: 65 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20  er the database 
16a0: 73 63 68 65 6d 61 20 63 68 61 6e 67 65 73 2c 20  schema changes, 
16b0: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
16c0: 6e 74 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69  nts are automati
16d0: 63 61 6c 6c 79 0a 20 20 72 65 70 72 65 70 61 72  cally.  reprepar
16e0: 65 64 20 74 6f 20 61 63 63 6f 6d 6d 6f 64 61 74  ed to accommodat
16f0: 65 20 74 68 65 20 6e 65 77 20 73 63 68 65 6d 61  e the new schema
1700: 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 72 61  .  There is a ra
1710: 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72  ce condition her
1720: 65 0a 20 20 69 6e 20 74 68 61 74 20 69 66 20 6f  e.  in that if o
1730: 6e 65 20 74 68 72 65 61 64 20 69 73 20 63 6f 6e  ne thread is con
1740: 73 74 61 6e 74 6c 79 20 63 68 61 6e 67 69 6e 67  stantly changing
1750: 20 74 68 65 20 73 63 68 65 6d 61 2c 20 61 6e 6f   the schema, ano
1760: 74 68 65 72 20 74 68 72 65 61 64 0a 20 20 6d 69  ther thread.  mi
1770: 67 68 74 20 73 70 69 6e 20 6f 6e 20 72 65 70 61  ght spin on repa
1780: 72 73 65 73 20 61 6e 64 20 72 65 70 72 65 70 61  rses and reprepa
1790: 72 61 74 69 6f 6e 73 20 6f 66 20 61 20 70 72 65  rations of a pre
17a0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
17b0: 61 6e 64 0a 20 20 6e 65 76 65 72 20 67 65 74 20  and.  never get 
17c0: 61 6e 79 20 72 65 61 6c 20 77 6f 72 6b 20 64 6f  any real work do
17d0: 6e 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65  ne.  This parame
17e0: 74 65 72 20 70 72 65 76 65 6e 74 73 20 61 6e 20  ter prevents an 
17f0: 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 0a 20 20  infinite loop.  
1800: 62 79 20 66 6f 72 63 69 6e 67 20 74 68 65 20 73  by forcing the s
1810: 70 69 6e 6e 69 6e 67 20 74 68 72 65 61 64 20 74  pinning thread t
1820: 6f 20 67 69 76 65 20 75 70 20 61 66 74 65 72 20  o give up after 
1830: 61 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f  a fixed number o
1840: 66 20 61 74 74 65 6d 70 74 73 0a 20 20 61 74 20  f attempts.  at 
1850: 72 65 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20  recompiling the 
1860: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
1870: 6e 74 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  nt.  The default
1880: 20 73 65 74 74 69 6e 67 20 69 73 20 35 20 77 68   setting is 5 wh
1890: 69 63 68 20 69 73 0a 20 20 6d 6f 72 65 20 74 68  ich is.  more th
18a0: 61 6e 20 61 64 65 71 75 61 74 65 20 66 6f 72 20  an adequate for 
18b0: 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  most application
18c0: 73 2e 20 20 42 75 74 20 69 6e 20 73 6f 6d 65 20  s.  But in some 
18d0: 6f 62 73 63 75 72 65 20 63 61 73 65 73 2c 20 69  obscure cases, i
18e0: 74 0a 20 20 69 73 20 75 73 65 66 75 6c 20 74 6f  t.  is useful to
18f0: 20 72 61 69 73 65 20 74 68 69 73 20 70 61 72 61   raise this para
1900: 6d 65 74 65 72 20 74 6f 20 31 30 30 20 6f 72 20  meter to 100 or 
1910: 6d 6f 72 65 20 74 6f 20 70 72 65 76 65 6e 74 20  more to prevent 
1920: 73 70 75 72 69 6f 75 73 0a 20 20 5b 53 51 4c 49  spurious.  [SQLI
1930: 54 45 5f 53 43 48 45 4d 41 5d 20 65 72 72 6f 72  TE_SCHEMA] error
1940: 73 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 5b  s when running [
1950: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e  sqlite3_step()].
1960: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1970: 4f 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52  ON {SQLITE_POWER
1980: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c  SAFE_OVERWRITE=<
1990: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b  i>&lt;0 or 1&gt;
19a0: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
19b0: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
19c0: 65 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70  e default assump
19d0: 74 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65  tion about [powe
19e0: 72 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d  rsafe overwrite]
19f0: 0a 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72  .  for the under
1a00: 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d  lying filesystem
1a10: 73 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61  s for the unix a
1a20: 6e 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65  nd windows [VFSe
1a30: 73 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51  s]..  Setting SQ
1a40: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
1a50: 56 45 52 57 52 49 54 45 20 74 6f 20 31 20 63 61  VERWRITE to 1 ca
1a60: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61  uses SQLite to a
1a70: 73 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70  ssume that.  app
1a80: 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77  lication-level w
1a90: 72 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61  rites cannot cha
1aa0: 6e 67 65 73 20 62 79 74 65 73 20 6f 75 74 73 69  nges bytes outsi
1ab0: 64 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a  de the range of.
1ac0: 20 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20    bytes written 
1ad0: 65 76 65 6e 20 69 66 20 74 68 65 20 77 72 69 74  even if the writ
1ae0: 65 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65  e occurs just be
1af0: 66 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73  fore a power los
1b00: 73 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45  s..  With SQLITE
1b10: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
1b20: 52 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53  RITE set to 0, S
1b30: 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68  QLite assumes th
1b40: 61 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73  at other.  bytes
1b50: 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63   in the same sec
1b60: 74 6f 72 20 77 69 74 68 20 61 20 77 72 69 74 74  tor with a writt
1b70: 65 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62 65  en byte might be
1b80: 20 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64   changed or .  d
1b90: 61 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77 65  amaged by a powe
1ba0: 72 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  r loss..}..COMPI
1bb0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41  LE_OPTION {YYSTA
1bc0: 43 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d  CKDEPTH=<i>&lt;m
1bd0: 61 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e  ax_depth&gt;</i>
1be0: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
1bf0: 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75   sets the maximu
1c00: 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c  m depth of the L
1c10: 41 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73 65  ALR(1) stack use
1c20: 64 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70  d by.  the SQL p
1c30: 61 72 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c  arser within SQL
1c40: 69 74 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ite.  The defaul
1c50: 74 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20  t value is 100. 
1c60: 20 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70   A typical.  app
1c70: 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73  lication will us
1c80: 65 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75  e less than abou
1c90: 74 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74  t 20 levels of t
1ca0: 68 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65  he stack..  Deve
1cb0: 6c 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70 70  lopers whose app
1cc0: 6c 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69  lications contai
1cd0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
1ce0: 20 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f   that .  need mo
1cf0: 72 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52  re than 100 LALR
1d00: 28 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65  (1) stack entrie
1d10: 73 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73  s should serious
1d20: 6c 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65  ly.  consider re
1d30: 66 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20  factoring their 
1d40: 53 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b  SQL as it is lik
1d50: 65 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62  ely to be well b
1d60: 65 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c  eyond.  the abil
1d70: 69 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e  ity of any human
1d80: 20 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a   to comprehend..
1d90: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e  }.</tcl>..<h2>1.
1da0: 32 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74  2 Options To Set
1db0: 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32   Size Limits</h2
1dc0: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20  >..<p>There are 
1dd0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1de0: 69 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73  ions that will s
1df0: 65 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a  et upper bounds.
1e00: 6f 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20  on the sizes of 
1e10: 76 61 72 69 6f 75 73 20 73 74 72 75 63 74 75 72  various structur
1e20: 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  es in SQLite.  T
1e30: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  he compile-time.
1e40: 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79  options normally
1e50: 20 73 65 74 20 61 20 68 61 72 64 20 75 70 70 65   set a hard uppe
1e60: 72 20 62 6f 75 6e 64 20 74 68 61 74 20 63 61 6e  r bound that can
1e70: 20 62 65 20 63 68 61 6e 67 65 64 0a 61 74 20 72   be changed.at r
1e80: 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76  un-time on indiv
1e90: 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20  idual [database 
1ea0: 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69  connections] usi
1eb0: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
1ec0: 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61  limit()] interfa
1ed0: 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ce.</p>..<p>The 
1ee0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1ef0: 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67  ions for setting
1f00: 20 75 70 70 65 72 20 62 6f 75 6e 64 73 20 61 72   upper bounds ar
1f10: 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75  e.[limits | docu
1f20: 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c  mented separatel
1f30: 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69  y].  The followi
1f40: 6e 67 20 69 73 20 61 20 6c 69 73 74 20 6f 66 0a  ng is a list of.
1f50: 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65  the available se
1f60: 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c  ttings:</p>..<ul
1f70: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
1f80: 41 58 5f 41 54 54 41 43 48 45 44 5d 20 20 3c 2f  AX_ATTACHED]  </
1f90: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
1fa0: 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f  _MAX_COLUMN]  </
1fb0: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
1fc0: 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  _MAX_COMPOUND_SE
1fd0: 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  LECT]  </li>.<li
1fe0: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58  > [SQLITE_MAX_EX
1ff0: 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e  PR_DEPTH]  </li>
2000: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
2010: 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20  X_FUNCTION_ARG] 
2020: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
2030: 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20  ITE_MAX_LENGTH] 
2040: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
2050: 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54  ITE_MAX_LIKE_PAT
2060: 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f  TERN_LENGTH]  </
2070: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
2080: 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d  _MAX_PAGE_COUNT]
2090: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
20a0: 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e  LITE_MAX_SQL_LEN
20b0: 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  GTH]  </li>.<li>
20c0: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52   [SQLITE_MAX_VAR
20d0: 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 20 3c  IABLE_NUMBER]  <
20e0: 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e  /li>.</ul>..<a n
20f0: 61 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66 65 61 74  ame="controlfeat
2100: 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31  ures"></a>.<h2>1
2110: 2e 33 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43 6f  .3 Options To Co
2120: 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67 20  ntrol Operating 
2130: 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 3c  Characteristics<
2140: 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50  /h2>..<tcl>.COMP
2150: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2160: 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45  TE_4_BYTE_ALIGNE
2170: 44 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e  D_MALLOC} {.  On
2180: 20 6d 6f 73 74 20 73 79 73 74 65 6d 73 2c 20 74   most systems, t
2190: 68 65 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73 74  he malloc() syst
21a0: 65 6d 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20  em call returns 
21b0: 61 20 62 75 66 66 65 72 20 74 68 61 74 20 69 73  a buffer that is
21c0: 0a 20 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e  .  aligned to an
21d0: 20 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79   8-byte boundary
21e0: 2e 20 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20 73  .  But on some s
21f0: 79 73 74 65 6d 73 20 28 65 78 3a 20 77 69 6e 64  ystems (ex: wind
2200: 6f 77 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20 20  ows) malloc().  
2210: 72 65 74 75 72 6e 73 20 34 2d 62 79 74 65 20 61  returns 4-byte a
2220: 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20  ligned pointer. 
2230: 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   This compile-ti
2240: 6d 65 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62  me option must b
2250: 65 20 75 73 65 64 0a 20 20 6f 6e 20 73 79 73 74  e used.  on syst
2260: 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20  ems that return 
2270: 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70  4-byte aligned p
2280: 6f 69 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61 6c  ointers from mal
2290: 6c 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  loc()..}..COMPIL
22a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
22b0: 5f 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f  _CASE_SENSITIVE_
22c0: 4c 49 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  LIKE} {.  If thi
22d0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73  s option is pres
22e0: 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 62 75  ent, then the bu
22f0: 69 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70  ilt-in [LIKE] op
2300: 65 72 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20  erator will be. 
2310: 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 2e   case sensitive.
2320: 20 20 54 68 69 73 20 73 61 6d 65 20 65 66 66 65    This same effe
2330: 63 74 20 63 61 6e 20 62 65 20 61 63 68 69 65 76  ct can be achiev
2340: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75  ed at run-time u
2350: 73 69 6e 67 0a 20 20 74 68 65 20 5b 63 61 73 65  sing.  the [case
2360: 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20  _sensitive_like 
2370: 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50  pragma]..}..COMP
2380: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2390: 54 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c  TE_DIRECT_OVERFL
23a0: 4f 57 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68 65  OW_READ} {.  Whe
23b0: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
23c0: 20 70 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65 6e   present, conten
23d0: 74 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a 20  t contained in. 
23e0: 20 5b 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73   [overflow pages
23f0: 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  ] of the databas
2400: 65 20 66 69 6c 65 20 69 73 20 72 65 61 64 20 64  e file is read d
2410: 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 64 69 73  irectly from dis
2420: 6b 2c 0a 20 20 62 79 70 61 73 73 69 6e 67 20 74  k,.  bypassing t
2430: 68 65 20 5b 70 61 67 65 20 63 61 63 68 65 5d 2c  he [page cache],
2440: 20 64 75 72 69 6e 67 20 72 65 61 64 20 74 72 61   during read tra
2450: 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20 61  nsactions.  In a
2460: 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74 68  pplications.  th
2470: 61 74 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 72  at do a lot of r
2480: 65 61 64 73 20 6f 66 20 6c 61 72 67 65 20 42 4c  eads of large BL
2490: 4f 42 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  OBs, this option
24a0: 20 6d 69 67 68 74 20 69 6d 70 72 6f 76 65 20 72   might improve r
24b0: 65 61 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63  ead.  performanc
24c0: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
24d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56  TION {SQLITE_HAV
24e0: 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20  E_ISNAN} {.  If 
24f0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
2500: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c  resent, then SQL
2510: 69 74 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65  ite will use the
2520: 20 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f   isnan() functio
2530: 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73  n from.  the sys
2540: 74 65 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79  tem math library
2550: 2e 20 20 57 69 74 68 6f 75 74 20 74 68 69 73 20  .  Without this 
2560: 6f 70 74 69 6f 6e 20 28 74 68 65 20 64 65 66 61  option (the defa
2570: 75 6c 74 20 62 65 68 61 76 69 6f 72 29 0a 20 20  ult behavior).  
2580: 53 51 4c 69 74 65 20 75 73 65 73 20 69 74 73 20  SQLite uses its 
2590: 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20 69 6d 70  own internal imp
25a0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69  lementation of i
25b0: 73 6e 61 6e 28 29 2e 20 20 53 51 4c 69 74 65 20  snan().  SQLite 
25c0: 75 73 65 73 0a 20 20 69 74 73 20 6f 77 6e 20 69  uses.  its own i
25d0: 6e 74 65 72 6e 61 6c 20 69 73 6e 61 6e 28 29 20  nternal isnan() 
25e0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 62  implementation b
25f0: 79 20 64 65 66 61 75 6c 74 20 62 65 63 61 75 73  y default becaus
2600: 65 20 6f 66 20 70 61 73 74 0a 20 20 70 72 6f 62  e of past.  prob
2610: 6c 65 6d 73 20 77 69 74 68 20 73 79 73 74 65 6d  lems with system
2620: 20 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f   isnan() functio
2630: 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ns..}..COMPILE_O
2640: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53  PTION {SQLITE_OS
2650: 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20  _OTHER=<i>&lt;0 
2660: 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 1&gt;</i>} {.
2670: 20 20 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75    The option cau
2680: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
2690: 69 74 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20  it its built-in 
26a0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
26b0: 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f   interfaces.  fo
26c0: 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c  r Unix, Windows,
26d0: 20 61 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20   and OS/2.  The 
26e0: 72 65 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72  resulting librar
26f0: 79 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64  y will have no d
2700: 65 66 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65  efault.  [sqlite
2710: 33 5f 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e  3_vfs | operatin
2720: 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61  g system interfa
2730: 63 65 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f  ce].  Applicatio
2740: 6e 73 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73  ns must use.  [s
2750: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
2760: 74 65 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74  ter()] to regist
2770: 65 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  er an appropriat
2780: 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f  e interface befo
2790: 72 65 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74  re.  using SQLit
27a0: 65 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  e.  Applications
27b0: 20 6d 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c   must also suppl
27c0: 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  y implementation
27d0: 73 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  s for the.  [sql
27e0: 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20  ite3_os_init()] 
27f0: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  and [sqlite3_os_
2800: 65 6e 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65  end()] interface
2810: 73 2e 20 20 54 68 65 20 75 73 75 61 6c 20 70 72  s.  The usual pr
2820: 61 63 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20  actice.  is for 
2830: 74 68 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71  the supplied [sq
2840: 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d  lite3_os_init()]
2850: 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69   to invoke [sqli
2860: 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72  te3_vfs_register
2870: 28 29 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69  ()]..  SQLite wi
2880: 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ll automatically
2890: 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33   invoke [sqlite3
28a0: 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e  _os_init()] when
28b0: 20 69 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e   it initializes.
28c0: 0a 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
28d0: 69 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65  is typically use
28e0: 64 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20  d when building 
28f0: 53 51 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d  SQLite for an em
2900: 62 65 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72  bedded.  platfor
2910: 6d 20 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20  m with a custom 
2920: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
2930: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2940: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55  ION {SQLITE_SECU
2950: 52 45 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54  RE_DELETE} {.  T
2960: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
2970: 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20   option changes 
2980: 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  the default sett
2990: 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65  ing of the.  [se
29a0: 63 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67  cure_delete prag
29b0: 6d 61 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20  ma].  When this 
29c0: 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73  option is not us
29d0: 65 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74  ed, secure_delet
29e0: 65 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20  e defaults.  to 
29f0: 6f 66 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20  off.  When this 
2a00: 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e  option is presen
2a10: 74 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65  t, secure_delete
2a20: 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e   defaults to on.
2a30: 0a 0a 20 20 54 68 65 20 73 65 63 75 72 65 5f 64  ..  The secure_d
2a40: 65 6c 65 74 65 20 73 65 74 74 69 6e 67 20 63 61  elete setting ca
2a50: 75 73 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e  uses deleted con
2a60: 74 65 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77  tent to be overw
2a70: 72 69 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65  ritten with.  ze
2a80: 72 6f 73 2e 20 20 54 68 65 72 65 20 69 73 20 61  ros.  There is a
2a90: 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e   small performan
2aa0: 63 65 20 70 65 6e 61 6c 74 79 20 66 6f 72 20 74  ce penalty for t
2ab0: 68 69 73 20 73 69 6e 63 65 20 61 64 64 69 74 69  his since additi
2ac0: 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75 73 74 20  onal I/O.  must 
2ad0: 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68 65 20 6f  occur.  On the o
2ae0: 74 68 65 72 20 68 61 6e 64 2c 20 73 65 63 75 72  ther hand, secur
2af0: 65 5f 64 65 6c 65 74 65 20 63 61 6e 20 70 72 65  e_delete can pre
2b00: 76 65 6e 74 20 73 65 6e 73 69 74 69 76 65 20 0a  vent sensitive .
2b10: 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72    information fr
2b20: 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20  om lingering in 
2b30: 75 6e 75 73 65 64 20 70 61 72 74 73 20 6f 66 20  unused parts of 
2b40: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
2b50: 65 20 61 66 74 65 72 20 69 74 0a 20 20 68 61 73  e after it.  has
2b60: 20 61 6c 6c 65 67 65 64 6c 79 20 62 65 65 6e 20   allegedly been 
2b70: 64 65 6c 65 74 65 64 2e 20 20 53 65 65 20 74 68  deleted.  See th
2b80: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  e documentation 
2b90: 6f 6e 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65  on the.  [secure
2ba0: 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 20  _delete pragma] 
2bb0: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
2bc0: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43  nformation..}..C
2bd0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
2be0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
2bf0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f  =<i>&lt;0 or 1 o
2c00: 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 2&gt;</i>} {. 
2c10: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e   This option con
2c20: 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20 6f 72  trols whether or
2c30: 20 6e 6f 74 20 63 6f 64 65 20 69 73 20 69 6e 63   not code is inc
2c40: 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20  luded in SQLite 
2c50: 74 6f 0a 20 20 65 6e 61 62 6c 65 20 69 74 20 74  to.  enable it t
2c60: 6f 20 6f 70 65 72 61 74 65 20 73 61 66 65 6c 79  o operate safely
2c70: 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61   in a multithrea
2c80: 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e  ded environment.
2c90: 20 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20    The.  default 
2ca0: 69 73 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  is SQLITE_THREAD
2cb0: 53 41 46 45 3d 31 20 77 68 69 63 68 20 69 73 20  SAFE=1 which is 
2cc0: 73 61 66 65 20 66 6f 72 20 75 73 65 20 69 6e 20  safe for use in 
2cd0: 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a  a multithreaded.
2ce0: 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20    environment.  
2cf0: 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  When compiled wi
2d00: 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  th SQLITE_THREAD
2d10: 53 41 46 45 3d 30 20 61 6c 6c 20 6d 75 74 65 78  SAFE=0 all mutex
2d20: 69 6e 67 20 63 6f 64 65 0a 20 20 69 73 20 6f 6d  ing code.  is om
2d30: 69 74 74 65 64 20 61 6e 64 20 69 74 20 69 73 20  itted and it is 
2d40: 75 6e 73 61 66 65 20 74 6f 20 75 73 65 20 53 51  unsafe to use SQ
2d50: 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74  Lite in a multit
2d60: 68 72 65 61 64 65 64 20 70 72 6f 67 72 61 6d 2e  hreaded program.
2d70: 0a 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64  .  When compiled
2d80: 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52   with SQLITE_THR
2d90: 45 41 44 53 41 46 45 3d 32 2c 20 53 51 4c 69 74  EADSAFE=2, SQLit
2da0: 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  e can be used in
2db0: 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64   a multithreaded
2dc0: 0a 20 20 70 72 6f 67 72 61 6d 20 73 6f 20 6c 6f  .  program so lo
2dd0: 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72  ng as no two thr
2de0: 65 61 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20  eads attempt to 
2df0: 75 73 65 20 74 68 65 20 73 61 6d 65 0a 20 20 5b  use the same.  [
2e00: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2e10: 69 6f 6e 5d 20 61 74 20 74 68 65 20 73 61 6d 65  ion] at the same
2e20: 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75 74   time...  To put
2e30: 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61 79 2c   it another way,
2e40: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2e50: 46 45 3d 31 20 73 65 74 73 20 74 68 65 20 64 65  FE=1 sets the de
2e60: 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69  fault.  [threadi
2e70: 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69  ng mode] to Seri
2e80: 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54 45 5f  alized.  SQLITE_
2e90: 54 48 52 45 41 44 53 41 46 45 3d 32 20 73 65 74  THREADSAFE=2 set
2ea0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20  s the default.  
2eb0: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
2ec0: 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64   to Multi-thread
2ed0: 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54 45 5f  ed.  And SQLITE_
2ee0: 54 48 52 45 41 44 53 41 46 45 3d 30 20 73 65 74  THREADSAFE=0 set
2ef0: 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61 64 69  s the.  [threadi
2f00: 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67  ng mode] to Sing
2f10: 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20 20  le-threaded...  
2f20: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53 51 4c  The value of SQL
2f30: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 63  ITE_THREADSAFE c
2f40: 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  an be determined
2f50: 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75   at run-time.  u
2f60: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
2f70: 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d 20  3_threadsafe()] 
2f80: 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 57 68  interface...  Wh
2f90: 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20 62 65  en SQLite has be
2fa0: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
2fb0: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2fc0: 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54 45  FE=1 or.  SQLITE
2fd0: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 74 68  _THREADSAFE=2 th
2fe0: 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  en the [threadin
2ff0: 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62 65  g mode].  can be
3000: 20 61 6c 74 65 72 65 64 20 61 74 20 72 75 6e 2d   altered at run-
3010: 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b  time using the [
3020: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
3030: 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65  ] interface toge
3040: 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e 65 20  ther.  with one 
3050: 6f 66 20 74 68 65 73 65 20 76 65 72 62 73 3a 0a  of these verbs:.
3060: 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b 53  .  <ul>.  <li>[S
3070: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e  QLITE_CONFIG_SIN
3080: 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c 69  GLETHREAD].  <li
3090: 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  >[SQLITE_CONFIG_
30a0: 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20 20 3c  MULTITHREAD].  <
30b0: 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  li>[SQLITE_CONFI
30c0: 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20 20  G_SERIALIZED].  
30d0: 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53 51  </ul>..  The [SQ
30e0: 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45  LITE_OPEN_NOMUTE
30f0: 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45  X] and.  [SQLITE
3100: 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d  _OPEN_FULLMUTEX]
3110: 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69 74   flags to [sqlit
3120: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63 61  e3_open_v2()] ca
3130: 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 0a 20  n also be used. 
3140: 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20 5b   to adjust the [
3150: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
3160: 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 5b 64  of individual [d
3170: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
3180: 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74 69  ons].  at run-ti
3190: 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61 74  me...  Note that
31a0: 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
31b0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51  compiled with SQ
31c0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
31d0: 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20 74 6f  0, the code.  to
31e0: 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74 68 72   make SQLite thr
31f0: 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69 74 74  eadsafe is omitt
3200: 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
3210: 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 63  d.  When this oc
3220: 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20 69 6d  curs,.  it is im
3230: 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e  possible to chan
3240: 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  ge the [threadin
3250: 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61 72 74  g mode] at start
3260: 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d  -time or run-tim
3270: 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20 5b 74  e...  See the [t
3280: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64  hreading mode] d
3290: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
32a0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
32b0: 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73 70  rmation.  on asp
32c0: 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20 53 51  ects of using SQ
32d0: 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74  Lite in a multit
32e0: 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d  hreaded environm
32f0: 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ent..}..COMPILE_
3300: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
3310: 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c 74  EMP_STORE=<i>&lt
3320: 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67 74 3b  ;0 through 3&gt;
3330: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  </i>} {.  This o
3340: 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77  ption controls w
3350: 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61 72 79  hether temporary
3360: 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65   files are store
3370: 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20 69  d on disk or.  i
3380: 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 6d  n memory.  The m
3390: 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61 72 69  eanings for vari
33a0: 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f 66 20  ous settings of 
33b0: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
33c0: 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65 20 61  e.  option are a
33d0: 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c 74  s follows:..  <t
33e0: 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67  able cellpadding
33f0: 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31 22 3e  ="2" border="1">
3400: 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49 54  .  <tr><th>SQLIT
3410: 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68  E_TEMP_STORE</th
3420: 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74 68  ><th>Meaning</th
3430: 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64  ></tr>.  <tr><td
3440: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
3450: 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73  0</td><td>Always
3460: 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20 66   use temporary f
3470: 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20  iles</td></tr>. 
3480: 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22   <tr><td align="
3490: 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74  center">1</td><t
34a0: 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79 20 64  d>Use files by d
34b0: 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77  efault but allow
34c0: 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74   the.  [PRAGMA t
34d0: 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61  emp_store] comma
34e0: 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f  nd to override</
34f0: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  td></tr>.  <tr><
3500: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
3510: 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20  ">2</td><td>Use 
3520: 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61 75 6c  memory by defaul
3530: 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a  t but allow the.
3540: 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73    [PRAGMA temp_s
3550: 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f  tore] command to
3560: 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f   override</td></
3570: 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c  tr>.  <tr><td al
3580: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c 2f  ign="center">3</
3590: 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75 73  td><td>Always us
35a0: 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74  e memory</td></t
35b0: 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a 20  r>.  </table>.. 
35c0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74   The default set
35d0: 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20 20 41  ting is 1.  .  A
35e0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
35f0: 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75  ation can be fou
3600: 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72 65  nd in [tempstore
3610: 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68 74 6d   | tempfiles.htm
3620: 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  l]..}..COMPILE_O
3630: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
3640: 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73 20  E_URI} {.  This 
3650: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
3660: 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d  e [URI filename]
3670: 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20 74   process logic t
3680: 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20  o be enabled by 
3690: 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a  .  default.  .}.
36a0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
36b0: 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73  ="enablefeatures
36c0: 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f  "></a>.<h2>1.4 O
36d0: 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65  ptions To Enable
36e0: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
36f0: 6c 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68  ly Turned Off</h
3700: 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  2>..<tcl>.COMPIL
3710: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3720: 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45  _ENABLE_8_3_NAME
3730: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26  S=<i>&lt;1 or 2&
3740: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
3750: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
3760: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
3770: 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61  ined, then extra
3780: 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75   code is.  inclu
3790: 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ded that allows 
37a0: 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69  SQLite to functi
37b0: 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74  on on a filesyst
37c0: 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73  em that.  only s
37d0: 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e  upport 8+3 filen
37e0: 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61  ames.  If the va
37f0: 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72  lue of this macr
3800: 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74  o is 1,.  then t
3810: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
3820: 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e  ior is to contin
3830: 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66  ue to use long f
3840: 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74  ilenames and.  t
3850: 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66  o only use 8+3 f
3860: 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20  ilenames if the 
3870: 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  .  database conn
3880: 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
3890: 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65   using [URI file
38a0: 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68  names] with.  th
38b0: 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  e "<tt>8_3_names
38c0: 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70  =1</tt>" query p
38d0: 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68  arameter.  If th
38e0: 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69  e value of.  thi
38f0: 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68  s macro is 2, th
3900: 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b  en the use of 8+
3910: 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f  3 filenames beco
3920: 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  mes the default.
3930: 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73    but may be dis
3940: 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74  abled on using t
3950: 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  he <tt>8_3_names
3960: 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61  =0</tt> query pa
3970: 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65 20 0a  rameter..  See .
3980: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3990: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
39a0: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b  _ATOMIC_WRITE} {
39b0: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
39c0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
39d0: 69 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69  is defined and i
39e0: 66 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43  f the.  xDeviceC
39f0: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d  haracteristics m
3a00: 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65  ethod of [sqlite
3a10: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
3a20: 6a 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74  ject for.  a dat
3a30: 61 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72  abase file repor
3a40: 74 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74  ts (via one of t
3a50: 68 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  he [SQLITE_IOCAP
3a60: 5f 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20  _ATOMIC] bits). 
3a70: 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79   that the filesy
3a80: 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74  stem supports at
3a90: 6f 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20  omic writes and 
3aa0: 69 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  if a transaction
3ab0: 0a 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68  .  involves a ch
3ac0: 61 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73  ange to only a s
3ad0: 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68  ingle page of th
3ae0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c  e database file,
3af0: 0a 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e  .  then the tran
3b00: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20  saction commits 
3b10: 77 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67  with just a sing
3b20: 6c 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74  le write request
3b30: 20 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70   of.  a single p
3b40: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
3b50: 61 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62  ase and no rollb
3b60: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63  ack journal is c
3b70: 72 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74  reated.  or writ
3b80: 74 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73  ten.  On filesys
3b90: 74 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72  tems that suppor
3ba0: 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  t atomic writes,
3bb0: 20 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61   this.  optimiza
3bc0: 74 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20  tion can result 
3bd0: 69 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73  in significant s
3be0: 70 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74  peed improvement
3bf0: 73 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70  s for.  small up
3c00: 64 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c  dates.  However,
3c10: 20 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73   few filesystems
3c20: 20 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61   support this ca
3c30: 70 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74  pability.  and t
3c40: 68 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68  he code paths th
3c50: 61 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69  at check for thi
3c60: 73 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f  s capability slo
3c70: 77 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70  w down write.  p
3c80: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79  erformance on sy
3c90: 73 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20  stems that lack 
3ca0: 61 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70  atomic write cap
3cb0: 61 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73  ability, so this
3cc0: 0a 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69  .  feature is di
3cd0: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
3ce0: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
3cf0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
3d00: 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44  BLE_COLUMN_METAD
3d10: 41 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ATA} {.  When th
3d20: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
3d30: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
3d40: 65 64 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75  ed, SQLite inclu
3d50: 64 65 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74  des some.  addit
3d60: 69 6f 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20  ional APIs that 
3d70: 70 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65  provide convenie
3d80: 6e 74 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74  nt access to met
3d90: 61 2d 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74  a-data about.  t
3da0: 61 62 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65  ables and querie
3db0: 73 2e 20 20 54 68 65 20 41 50 49 73 20 74 68 61  s.  The APIs tha
3dc0: 74 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79  t are enabled by
3dd0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65   this option are
3de0: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
3df0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
3e00: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29  _database_name()
3e10: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
3e20: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
3e30: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29  atabase_name16()
3e40: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
3e50: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
3e60: 61 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  able_name()] </l
3e70: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
3e80: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
3e90: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
3ea0: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
3eb0: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
3ec0: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
3ed0: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
3ee0: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
3ef0: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
3f00: 20 5b 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f   [sqlite3_table_
3f10: 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28  column_metadata(
3f20: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e  )] </li>.  </ul>
3f30: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3f40: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
3f50: 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e  E_FTS3} {.  When
3f60: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
3f70: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
3f80: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76  amalgamation], v
3f90: 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68  ersion 3.  of th
3fa0: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
3fb0: 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64  ch engine is add
3fc0: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
3fd0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
3fe0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
3ff0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
4000: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
4010: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
4020: 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71  n modifies the q
4030: 75 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72  uery pattern par
4040: 73 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68  ser in FTS3 such
4050: 20 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f   that it.  suppo
4060: 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e  rts operators AN
4070: 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64  D and NOT (in ad
4080: 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73  dition to the us
4090: 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29  ual OR and NEAR)
40a0: 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f  .  and also allo
40b0: 77 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73  ws query express
40c0: 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20  ions to contain 
40d0: 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73  nested parenthes
40e0: 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  is..}..COMPILE_O
40f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
4100: 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57  ABLE_FTS4} {.  W
4110: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
4120: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
4130: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
4140: 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e 64  , versions 3 and
4150: 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   4.  of the full
4160: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
4170: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
4180: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
4190: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
41a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
41b0: 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 7d 20 7b  TE_ENABLE_ICU} {
41c0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
41d0: 61 75 73 65 73 20 74 68 65 20 0a 20 20 5b 68 74  auses the .  [ht
41e0: 74 70 3a 2f 2f 77 77 77 2e 69 63 75 2d 70 72 6f  tp://www.icu-pro
41f0: 6a 65 63 74 2e 6f 72 67 2f 20 7c 20 49 6e 74 65  ject.org/ | Inte
4200: 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e  rnational Compon
4210: 65 6e 74 73 20 66 6f 72 20 55 6e 69 63 6f 64 65  ents for Unicode
4220: 5d 0a 20 20 6f 72 20 22 49 43 55 22 20 65 78 74  ].  or "ICU" ext
4230: 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69 74 65  ension to SQLite
4240: 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20   to be added to 
4250: 74 68 65 20 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a  the build.  .}..
4260: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4270: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f  SQLITE_ENABLE_IO
4280: 54 52 41 43 45 7d 20 7b 0a 20 20 57 68 65 6e 20  TRACE} {.  When 
4290: 62 6f 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  both the SQLite 
42a0: 63 6f 72 65 20 61 6e 64 20 74 68 65 20 5b 43 6f  core and the [Co
42b0: 6d 6d 61 6e 64 20 4c 69 6e 65 20 49 6e 74 65 72  mmand Line Inter
42c0: 66 61 63 65 5d 20 28 43 4c 49 29 20 61 72 65 20  face] (CLI) are 
42d0: 62 6f 74 68 20 0a 20 20 63 6f 6d 70 69 6c 65 64  both .  compiled
42e0: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
42f0: 6e 2c 20 74 68 65 6e 20 74 68 65 20 43 4c 49 20  n, then the CLI 
4300: 70 72 6f 76 69 64 65 73 20 61 6e 20 65 78 74 72  provides an extr
4310: 61 20 63 6f 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65  a command.  name
4320: 64 20 22 2e 69 6f 74 72 61 63 65 22 20 74 68 61  d ".iotrace" tha
4330: 74 20 70 72 6f 76 69 64 65 73 20 61 20 6c 6f 77  t provides a low
4340: 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f 66 20 49 2f  -level log of I/
4350: 4f 20 61 63 74 69 76 69 74 79 2e 0a 20 20 54 68  O activity..  Th
4360: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 78 70  is option is exp
4370: 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 6d 61  erimental and ma
4380: 79 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65  y be discontinue
4390: 64 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65  d in a future re
43a0: 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lease..}..COMPIL
43b0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
43c0: 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f  _ENABLE_LOCKING_
43d0: 53 54 59 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20  STYLE} {.  This 
43e0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61  option enables a
43f0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
4400: 69 6e 20 74 68 65 20 4f 53 20 69 6e 74 65 72 66  in the OS interf
4410: 61 63 65 20 6c 61 79 65 72 20 66 6f 72 0a 20 20  ace layer for.  
4420: 4d 61 63 20 4f 53 20 58 2e 20 54 68 65 20 61 64  Mac OS X. The ad
4430: 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 61  ditional logic a
4440: 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72  ttempts to deter
4450: 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f 66  mine the type of
4460: 20 74 68 65 0a 20 20 75 6e 64 65 72 6c 79 69 6e   the.  underlyin
4470: 67 20 66 69 6c 65 73 79 73 74 65 6d 20 61 6e 64  g filesystem and
4480: 20 63 68 6f 6f 73 65 20 61 6e 64 20 61 6c 74 65   choose and alte
4490: 72 6e 61 74 69 76 65 20 6c 6f 63 6b 69 6e 67 20  rnative locking 
44a0: 73 74 72 61 74 65 67 79 0a 20 20 74 68 61 74 20  strategy.  that 
44b0: 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c 79 20  works correctly 
44c0: 66 6f 72 20 74 68 61 74 20 66 69 6c 65 73 79 73  for that filesys
44d0: 74 65 6d 20 74 79 70 65 2e 20 46 69 76 65 20 6c  tem type. Five l
44e0: 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 69 65  ocking strategie
44f0: 73 20 0a 20 20 61 72 65 20 61 76 61 69 6c 61 62  s .  are availab
4500: 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 20 20  le:..  <ul>.    
4510: 3c 6c 69 3e 20 50 4f 53 49 58 20 6c 6f 63 6b 69  <li> POSIX locki
4520: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 69  ng style. This i
4530: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f  s the default lo
4540: 63 6b 69 6e 67 20 73 74 79 6c 65 20 61 6e 64 20  cking style and 
4550: 74 68 65 0a 20 20 20 20 20 20 20 20 20 73 74 79  the.         sty
4560: 6c 65 20 75 73 65 64 20 62 79 20 6f 74 68 65 72  le used by other
4570: 20 28 6e 6f 6e 20 4d 61 63 20 4f 53 20 58 29 20   (non Mac OS X) 
4580: 55 6e 69 78 65 73 2e 20 4c 6f 63 6b 73 20 61 72  Unixes. Locks ar
4590: 65 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 0a  e obtained and .
45a0: 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65           release
45b0: 64 20 75 73 69 6e 67 20 74 68 65 20 66 63 6e 74  d using the fcnt
45c0: 6c 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e  l() system call.
45d0: 0a 0a 20 20 20 20 3c 6c 69 3e 20 41 46 50 20 6c  ..    <li> AFP l
45e0: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68  ocking style. Th
45f0: 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  is locking style
4600: 20 69 73 20 75 73 65 64 20 66 6f 72 20 6e 65 74   is used for net
4610: 77 6f 72 6b 20 66 69 6c 65 20 0a 20 20 20 20 20  work file .     
4620: 20 20 20 20 73 79 73 74 65 6d 73 20 74 68 61 74      systems that
4630: 20 75 73 65 20 74 68 65 20 41 46 50 20 28 41 70   use the AFP (Ap
4640: 70 6c 65 20 46 69 6c 69 6e 67 20 50 72 6f 74 6f  ple Filing Proto
4650: 63 6f 6c 29 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c  col) protocol. L
4660: 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 61 72  ocks.         ar
4670: 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63 61  e obtained by ca
4680: 6c 6c 69 6e 67 20 74 68 65 20 6c 69 62 72 61 72  lling the librar
4690: 79 20 66 75 6e 63 74 69 6f 6e 20 5f 41 46 50 46  y function _AFPF
46a0: 53 53 65 74 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20  SSetLock()...   
46b0: 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b   <li> Flock lock
46c0: 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20  ing style. This 
46d0: 69 73 20 75 73 65 64 20 66 6f 72 20 66 69 6c 65  is used for file
46e0: 2d 73 79 73 74 65 6d 73 20 74 68 61 74 20 64 6f  -systems that do
46f0: 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 73 75   not.         su
4700: 70 70 6f 72 74 20 50 4f 53 49 58 20 6c 6f 63 6b  pport POSIX lock
4710: 69 6e 67 20 73 74 79 6c 65 2e 20 4c 6f 63 6b 73  ing style. Locks
4720: 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61 6e   are obtained an
4730: 64 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67  d released using
4740: 0a 20 20 20 20 20 20 20 20 20 74 68 65 20 66 6c  .         the fl
4750: 6f 63 6b 28 29 20 73 79 73 74 65 6d 20 63 61 6c  ock() system cal
4760: 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 44 6f 74  l...    <li> Dot
4770: 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 73 74  -file locking st
4780: 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e  yle. This lockin
4790: 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64 20  g style is used 
47a0: 77 68 65 6e 20 6e 65 69 74 68 65 72 0a 20 20 20  when neither.   
47b0: 20 20 20 20 20 20 66 6c 6f 63 6b 20 6e 6f 72 20        flock nor 
47c0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
47d0: 79 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72 74  yles are support
47e0: 65 64 20 62 79 20 74 68 65 20 66 69 6c 65 20 73  ed by the file s
47f0: 79 73 74 65 6d 2e 0a 20 20 20 20 20 20 20 20 20  ystem..         
4800: 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 73 20 61  Database locks a
4810: 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63  re obtained by c
4820: 72 65 61 74 69 6e 67 20 61 6e 64 20 65 6e 74 72  reating and entr
4830: 79 20 69 6e 20 74 68 65 20 66 69 6c 65 2d 73 79  y in the file-sy
4840: 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 61 74  stem.         at
4850: 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f   a well-known lo
4860: 63 61 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20  cation relative 
4870: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
4880: 66 69 6c 65 20 28 61 20 22 64 6f 74 2d 66 69 6c  file (a "dot-fil
4890: 65 22 29 0a 20 20 20 20 20 20 20 20 20 61 6e 64  e").         and
48a0: 20 72 65 6c 69 6e 71 75 69 73 68 65 64 20 62 79   relinquished by
48b0: 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 73 61   deleting the sa
48c0: 6d 65 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c  me file...    <l
48d0: 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e 67 20 73 74  i> No locking st
48e0: 79 6c 65 2e 20 49 66 20 6e 6f 6e 65 20 6f 66 20  yle. If none of 
48f0: 74 68 65 20 61 62 6f 76 65 20 63 61 6e 20 62 65  the above can be
4900: 20 73 75 70 70 6f 72 74 65 64 2c 20 74 68 69 73   supported, this
4910: 20 0a 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 69   .         locki
4920: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
4930: 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 20 6c 6f  . No database lo
4940: 63 6b 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20  cking mechanism 
4950: 69 73 20 75 73 65 64 2e 20 57 68 65 6e 0a 20 20  is used. When.  
4960: 20 20 20 20 20 20 20 74 68 69 73 20 73 79 73 74         this syst
4970: 65 6d 20 69 73 20 75 73 65 64 20 69 74 20 69 73  em is used it is
4980: 20 6e 6f 74 20 73 61 66 65 20 66 6f 72 20 61 20   not safe for a 
4990: 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20  single database 
49a0: 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20 61  to be.         a
49b0: 63 63 65 73 73 65 64 20 62 79 20 6d 75 6c 74 69  ccessed by multi
49c0: 70 6c 65 20 63 6c 69 65 6e 74 73 2e 0a 20 20 3c  ple clients..  <
49d0: 2f 75 6c 3e 0a 0a 20 20 41 64 64 69 74 69 6f 6e  /ul>..  Addition
49e0: 61 6c 6c 79 2c 20 66 69 76 65 20 65 78 74 72 61  ally, five extra
49f0: 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74   [VFS] implement
4a00: 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 76 69  ations are provi
4a10: 64 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ded as well as t
4a20: 68 65 0a 20 20 64 65 66 61 75 6c 74 2e 20 42 79  he.  default. By
4a30: 20 73 70 65 63 69 66 79 69 6e 67 20 6f 6e 65 20   specifying one 
4a40: 6f 66 20 74 68 65 20 65 78 74 72 61 20 56 46 53  of the extra VFS
4a50: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
4a60: 20 0a 20 20 77 68 65 6e 20 63 61 6c 6c 69 6e 67   .  when calling
4a70: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
4a80: 32 28 29 5d 2c 20 61 6e 20 61 70 70 6c 69 63 61  2()], an applica
4a90: 74 69 6f 6e 20 6d 61 79 20 62 79 70 61 73 73 20  tion may bypass 
4aa0: 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a  the file-system.
4ab0: 20 20 64 65 74 65 63 74 69 6f 6e 20 6c 6f 67 69    detection logi
4ac0: 63 20 61 6e 64 20 65 78 70 6c 69 63 69 74 6c 79  c and explicitly
4ad0: 20 73 65 6c 65 63 74 20 6f 6e 65 20 6f 66 20 74   select one of t
4ae0: 68 65 20 61 62 6f 76 65 20 6c 6f 63 6b 69 6e 67  he above locking
4af0: 20 73 74 79 6c 65 73 2e 20 54 68 65 0a 20 20 66   styles. The.  f
4b00: 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20  ive extra [VFS] 
4b10: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
4b20: 61 72 65 20 63 61 6c 6c 65 64 20 22 75 6e 69 78  are called "unix
4b30: 2d 70 6f 73 69 78 22 2c 20 22 75 6e 69 78 2d 61  -posix", "unix-a
4b40: 66 70 22 2c 0a 20 20 22 75 6e 69 78 2d 66 6c 6f  fp",.  "unix-flo
4b50: 63 6b 22 2c 20 22 75 6e 69 78 2d 64 6f 74 66 69  ck", "unix-dotfi
4b60: 6c 65 22 20 61 6e 64 20 22 75 6e 69 78 2d 6e 6f  le" and "unix-no
4b70: 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ne"..}..COMPILE_
4b80: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
4b90: 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e  NABLE_MEMORY_MAN
4ba0: 41 47 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69  AGEMENT} {.  Thi
4bb0: 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 65 78  s option adds ex
4bc0: 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53 51 4c  tra logic to SQL
4bd0: 69 74 65 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ite that allows 
4be0: 69 74 20 74 6f 20 72 65 6c 65 61 73 65 20 75 6e  it to release un
4bf0: 75 73 65 64 0a 20 20 6d 65 6d 6f 72 79 20 75 70  used.  memory up
4c00: 6f 6e 20 72 65 71 75 65 73 74 2e 20 20 54 68 69  on request.  Thi
4c10: 73 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65  s option must be
4c20: 20 65 6e 61 62 6c 65 64 20 69 6e 20 6f 72 64 65   enabled in orde
4c30: 72 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  r for the.  [sql
4c40: 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
4c50: 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ory()] interface
4c60: 20 74 6f 20 77 6f 72 6b 2e 20 20 49 66 20 74 68   to work.  If th
4c70: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
4c80: 20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20    option is not 
4c90: 75 73 65 64 2c 20 74 68 65 20 5b 73 71 6c 69 74  used, the [sqlit
4ca0: 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
4cb0: 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 69  y()] interface i
4cc0: 73 20 61 20 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a  s a .  no-op..}.
4cd0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4ce0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d  {SQLITE_ENABLE_M
4cf0: 45 4d 53 59 53 33 7d 20 7b 0a 20 20 54 68 69 73  EMSYS3} {.  This
4d00: 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73   option includes
4d10: 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20   code in SQLite 
4d20: 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20  that implements 
4d30: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20  an alternative. 
4d40: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
4d50: 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61  r.  This alterna
4d60: 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  tive memory allo
4d70: 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e  cator is only en
4d80: 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65  gaged.  when the
4d90: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
4da0: 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20  HEAP] option to 
4db0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
4dc0: 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20  )] is used to.  
4dd0: 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63  supply a large c
4de0: 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66  hunk of memory f
4df0: 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65  rom which all me
4e00: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mory allocations
4e10: 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20   are.  taken..  
4e20: 54 68 65 20 4d 45 4d 53 59 53 33 20 6d 65 6d 6f  The MEMSYS3 memo
4e30: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 75 73 65  ry allocator use
4e40: 73 20 61 20 68 79 62 72 69 64 20 61 6c 6c 6f 63  s a hybrid alloc
4e50: 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ation algorithm 
4e60: 0a 20 20 70 61 74 74 65 72 6e 65 64 20 61 66 74  .  patterned aft
4e70: 65 72 20 64 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20  er dlmalloc().  
4e80: 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20 53 51 4c   Only one of SQL
4e90: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
4ea0: 53 33 20 61 6e 64 20 0a 20 20 53 51 4c 49 54 45  S3 and .  SQLITE
4eb0: 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 20  _ENABLE_MEMSYS5 
4ec0: 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64 20 61  may be enabled a
4ed0: 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  t once..}..COMPI
4ee0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
4ef0: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35  E_ENABLE_MEMSYS5
4f00: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
4f10: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
4f20: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
4f30: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
4f40: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
4f50: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
4f60: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
4f70: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
4f80: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
4f90: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
4fa0: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
4fb0: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
4fc0: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
4fd0: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
4fe0: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
4ff0: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
5000: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
5010: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
5020: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
5030: 4d 53 59 53 35 20 6d 6f 64 75 6c 65 20 72 6f 75  MSYS5 module rou
5040: 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69  nds all allocati
5050: 6f 6e 73 20 75 70 20 74 6f 20 74 68 65 20 6e 65  ons up to the ne
5060: 78 74 20 70 6f 77 65 72 0a 20 20 6f 66 20 74 77  xt power.  of tw
5070: 6f 20 61 6e 64 20 75 73 65 73 20 61 20 66 69 72  o and uses a fir
5080: 73 74 2d 66 69 74 2c 20 62 75 64 64 79 2d 61 6c  st-fit, buddy-al
5090: 6c 6f 63 61 74 6f 72 20 61 6c 67 6f 72 69 74 68  locator algorith
50a0: 6d 0a 20 20 74 68 61 74 20 70 72 6f 76 69 64 65  m.  that provide
50b0: 73 20 73 74 72 6f 6e 67 20 67 75 61 72 61 6e 74  s strong guarant
50c0: 65 65 73 20 61 67 61 69 6e 73 74 20 66 72 61 67  ees against frag
50d0: 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 62 72  mentation and br
50e0: 65 61 6b 64 6f 77 6e 0a 20 20 73 75 62 6a 65 63  eakdown.  subjec
50f0: 74 20 74 6f 20 63 65 72 74 61 69 6e 20 6f 70 65  t to certain ope
5100: 72 61 74 69 6e 67 20 63 6f 6e 73 74 72 61 69 6e  rating constrain
5110: 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ts..}..COMPILE_O
5120: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
5130: 41 42 4c 45 5f 52 54 52 45 45 7d 20 7b 0a 20 20  ABLE_RTREE} {.  
5140: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
5150: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69 6e 63  es SQLite to inc
5160: 6c 75 64 65 20 73 75 70 70 6f 72 74 20 66 6f 72  lude support for
5170: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
5180: 52 2a 54 72 65 65 20 69 6e 64 65 78 20 65 78 74  R*Tree index ext
5190: 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ension]..}..COMP
51a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
51b0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 7d  TE_ENABLE_STAT2}
51c0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
51d0: 20 75 73 65 64 20 74 6f 20 63 61 75 73 65 20 74   used to cause t
51e0: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
51f0: 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  mand to collect.
5200: 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67 72 61    index histogra
5210: 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20 3c 62  m data in the <b
5220: 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62  >sqlite_stat2</b
5230: 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20 74 68  > table.  But th
5240: 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69  at.  functionali
5250: 74 79 20 77 61 73 20 73 75 70 65 72 63 65 64 65  ty was supercede
5260: 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45 4e 41  d by [SQLITE_ENA
5270: 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20 6f 66  BLE_STAT3] as of
5280: 0a 20 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  .  SQLite versio
5290: 6e 20 33 2e 37 2e 39 2e 20 20 54 68 65 20 53 51  n 3.7.9.  The SQ
52a0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
52b0: 32 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  2 compile-time o
52c0: 70 74 69 6f 6e 0a 20 20 69 73 20 6e 6f 77 20 61  ption.  is now a
52d0: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
52e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
52f0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 7d 20  E_ENABLE_STAT3} 
5300: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
5310: 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20  adds additional 
5320: 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e  logic to the [AN
5330: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61  ALYZE] command a
5340: 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65  nd to.  the [que
5350: 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74  ry planner] that
5360: 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65   can help SQLite
5370: 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74   to chose a bett
5380: 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20  er query plan.  
5390: 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73 69  under certain si
53a0: 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b  tuations.  The [
53b0: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
53c0: 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20   is enhanced to 
53d0: 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67  collect.  histog
53e0: 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 65 61  ram data from ea
53f0: 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f  ch index and sto
5400: 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20 69  re that data.  i
5410: 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  n the <b>sqlite_
5420: 73 74 61 74 33 3c 2f 62 3e 20 74 61 62 6c 65 2e  stat3</b> table.
5430: 20 20 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e    The query plan
5440: 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73  ner will then us
5450: 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61  e the.  histogra
5460: 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69  m data to help i
5470: 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e  t make better in
5480: 64 65 78 20 63 68 6f 69 63 65 73 2e 0a 7d 0a 0a  dex choices..}..
5490: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
54a0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50  SQLITE_ENABLE_UP
54b0: 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49  DATE_DELETE_LIMI
54c0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
54d0: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70  on enables an op
54e0: 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20  tional ORDER BY 
54f0: 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  and LIMIT clause
5500: 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20   on .  [UPDATE] 
5510: 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61  and [DELETE] sta
5520: 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49  tements...  <p>I
5530: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
5540: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69   defined, then i
5550: 74 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a  t must also be .
5560: 20 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75    defined when u
5570: 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27  sing the 'lemon'
5580: 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74   tool to generat
5590: 65 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69  e a parse.c.  fi
55a0: 6c 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74  le. Because of t
55b0: 68 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  his, this option
55c0: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
55d0: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
55e0: 72 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72  ry is built.  fr
55f0: 6f 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66  om source, not f
5600: 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d  rom the [amalgam
5610: 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74  ation] or from t
5620: 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66  he collection of
5630: 0a 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20  .  pre-packaged 
5640: 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64  C files provided
5650: 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69   for non-Unix li
5660: 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20  ke platforms on 
5670: 74 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c  the website..  <
5680: 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  /p>.}..COMPILE_O
5690: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
56a0: 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49  ABLE_UNLOCK_NOTI
56b0: 46 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  FY} {.  This opt
56c0: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20  ion enables the 
56d0: 5b 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f  [sqlite3_unlock_
56e0: 6e 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66  notify()] interf
56f0: 61 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73  ace and.  its as
5700: 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f  sociated functio
5710: 6e 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65  nality.  See the
5720: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74   documentation t
5730: 69 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74  itled.  [Using t
5740: 68 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b  he SQLite Unlock
5750: 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65   Notification Fe
5760: 61 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74  ature] for addit
5770: 69 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74  ional.  informat
5780: 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ion..}..COMPILE_
5790: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53  OPTION {SQLITE_S
57a0: 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73  OUNDEX} {.  This
57b0: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
57c0: 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53  the [soundex() S
57d0: 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a  QL function]..}.
57e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
57f0: 7b 59 59 54 52 41 43 4b 4d 41 58 53 54 41 43 4b  {YYTRACKMAXSTACK
5800: 44 45 50 54 48 7d 20 7b 0a 20 20 54 68 69 73 20  DEPTH} {.  This 
5810: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
5820: 65 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72  e LALR(1) parser
5830: 20 73 74 61 63 6b 20 64 65 70 74 68 20 74 6f 20   stack depth to 
5840: 62 65 20 74 72 61 63 6b 65 64 0a 20 20 61 6e 64  be tracked.  and
5850: 20 72 65 70 6f 72 74 65 64 20 75 73 69 6e 67 20   reported using 
5860: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 61  the [sqlite3_sta
5870: 74 75 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41  tus]([SQLITE_STA
5880: 54 55 53 5f 50 41 52 53 45 52 5f 53 54 41 43 4b  TUS_PARSER_STACK
5890: 5d 2c 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61  ],...).  interfa
58a0: 63 65 2e 20 20 53 51 4c 69 74 65 27 73 20 4c 41  ce.  SQLite's LA
58b0: 4c 52 28 31 29 20 70 61 72 73 65 72 20 68 61 73  LR(1) parser has
58c0: 20 61 20 66 69 78 65 64 20 73 74 61 63 6b 20 64   a fixed stack d
58d0: 65 70 74 68 0a 20 20 28 64 65 74 65 72 6d 69 6e  epth.  (determin
58e0: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
58f0: 6d 65 20 75 73 69 6e 67 20 74 68 65 20 5b 59 59  me using the [YY
5900: 53 54 41 43 4b 44 45 50 54 48 5d 20 6f 70 74 69  STACKDEPTH] opti
5910: 6f 6e 73 29 2e 0a 20 20 54 68 69 73 20 6f 70 74  ons)..  This opt
5920: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
5930: 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e  to help determin
5940: 65 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74  e if an applicat
5950: 69 6f 6e 20 69 73 0a 20 20 67 65 74 74 69 6e 67  ion is.  getting
5960: 20 63 6c 6f 73 65 20 74 6f 20 65 78 63 65 65 64   close to exceed
5970: 69 6e 67 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ing the maximum 
5980: 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 64 65  LALR(1) stack de
5990: 70 74 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  pth..}.</tcl>..<
59a0: 61 20 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65 66  a name="disablef
59b0: 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68  eatures"></a>.<h
59c0: 32 3e 31 2e 35 20 4f 70 74 69 6f 6e 73 20 54 6f  2>1.5 Options To
59d0: 20 44 69 73 61 62 6c 65 20 46 65 61 74 75 72 65   Disable Feature
59e0: 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65  s Normally Turne
59f0: 64 20 4f 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  d On</h2>..<tcl>
5a00: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5a10: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
5a20: 4c 46 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  LFS} {.  If this
5a30: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
5a40: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
5a50: 2c 20 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70  , large file sup
5a60: 70 6f 72 74 0a 20 20 69 73 20 64 69 73 61 62 6c  port.  is disabl
5a70: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
5a80: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
5a90: 53 41 42 4c 45 5f 44 49 52 53 59 4e 43 7d 20 7b  SABLE_DIRSYNC} {
5aa0: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
5ab0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
5ac0: 69 73 20 64 65 66 69 6e 65 64 2c 20 64 69 72 65  is defined, dire
5ad0: 63 74 6f 72 79 20 73 79 6e 63 73 0a 20 20 61 72  ctory syncs.  ar
5ae0: 65 20 64 69 73 61 62 6c 65 64 2e 20 20 53 51 4c  e disabled.  SQL
5af0: 69 74 65 20 74 79 70 69 63 61 6c 6c 79 20 61 74  ite typically at
5b00: 74 65 6d 70 74 73 20 74 6f 20 73 79 6e 63 20 74  tempts to sync t
5b10: 68 65 20 70 61 72 65 6e 74 0a 20 20 64 69 72 65  he parent.  dire
5b20: 63 74 6f 72 79 20 77 68 65 6e 20 61 20 66 69 6c  ctory when a fil
5b30: 65 20 69 73 20 64 65 6c 65 74 65 64 20 74 6f 20  e is deleted to 
5b40: 65 6e 73 75 72 65 20 74 68 65 20 64 69 72 65 63  ensure the direc
5b50: 74 6f 72 79 0a 20 20 65 6e 74 72 69 65 73 20 61  tory.  entries a
5b60: 72 65 20 75 70 64 61 74 65 64 20 69 6d 6d 65 64  re updated immed
5b70: 69 61 74 65 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a  iately on disk..
5b80: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a  }.</tcl>..<tcl>.
5b90: 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f    hd_fragment "o
5ba0: 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20 20 68  mitfeatures".  h
5bb0: 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74  d_keywords "omit
5bc0: 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e  features".</tcl>
5bd0: 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73  .<h2>1.6 Options
5be0: 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65   To Omit Feature
5bf0: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66  s</h2>..<p>The f
5c00: 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73  ollowing options
5c10: 20 63 61 6e 20 75 73 65 64 20 74 6f 20 0a 5b 72   can used to .[r
5c20: 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65  elfootprint | re
5c30: 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66  duce the size of
5c40: 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69   the compiled li
5c50: 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69  brary].by omitti
5c60: 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74 75 72  ng unused featur
5c70: 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62  es. This is prob
5c80: 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c  ably only useful
5c90: 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73  .in embedded sys
5ca0: 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65  tems where space
5cb0: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74   is especially t
5cc0: 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69  ight, as even wi
5cd0: 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20  th all.features 
5ce0: 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c  included the SQL
5cf0: 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72  ite library is r
5d00: 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e  elatively small.
5d10: 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f   Don't forget.to
5d20: 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69   tell your compi
5d30: 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  ler to optimize 
5d40: 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21  for binary size!
5d50: 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e   (the -Os option
5d60: 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20   if.using GCC). 
5d70: 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f   Telling your co
5d80: 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69  mpiler to optimi
5d90: 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61  ze for size usua
5da0: 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c  lly has.a much l
5db0: 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20  arger impact on 
5dc0: 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e  library footprin
5dd0: 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67  t than employing
5de0: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f   any of these.co
5df0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
5e00: 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20  ns.  You should 
5e10: 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74  also verify that
5e20: 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75   .<a href="#debu
5e30: 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67  goptions">debugg
5e40: 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20  ing options</a> 
5e50: 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70  are disabled.</p
5e60: 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73  >..<p>The macros
5e70: 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e   in this section
5e80: 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20   do not require 
5e90: 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c  values. The foll
5ea0: 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69  owing .compilati
5eb0: 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20  on switches all 
5ec0: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66  have the same ef
5ed0: 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49  fect:<br>.-DSQLI
5ee0: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
5ef0: 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  LE<br>.-DSQLITE_
5f00: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
5f10: 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  1<br>.-DSQLITE_O
5f20: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30  MIT_ALTERTABLE=0
5f30: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79  .</p>..<p>If any
5f40: 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e   of these option
5f50: 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74  s are defined, t
5f60: 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74  hen the same set
5f70: 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f   of SQLITE_OMIT_
5f80: 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61  *.options must a
5f90: 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77  lso be defined w
5fa0: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c  hen using the 'l
5fb0: 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65  emon' tool to ge
5fc0: 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65  nerate the.parse
5fd0: 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e  .c file and when
5fe0: 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27   compiling the '
5ff0: 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74  mkkeywordhash' t
6000: 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61  ool which genera
6010: 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64  tes .the keyword
6020: 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63  hash.h file..Bec
6030: 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68  ause of this, th
6040: 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ese options may 
6050: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
6060: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
6070: 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f   built.from cano
6080: 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f  nical source, no
6090: 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c  t from the [amal
60a0: 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f  gamation] or fro
60b0: 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  m the collection
60c0: 20 6f 66 0a 70 72 65 2d 70 61 63 6b 61 67 65 64   of.pre-packaged
60d0: 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65   C files provide
60e0: 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c  d for non-Unix l
60f0: 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e  ike platforms on
6100: 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 41 6e   the website..An
6110: 79 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  y SQLITE_OMIT_* 
6120: 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 63 61  options which ca
6130: 6e 20 62 65 20 75 73 65 64 20 64 69 72 65 63 74  n be used direct
6140: 6c 79 20 77 69 74 68 20 74 68 65 20 5b 61 6d 61  ly with the [ama
6150: 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a 61 72 65 20  lgamation] .are 
6160: 6c 69 73 74 65 64 20 62 65 6c 6f 77 2c 20 68 6f  listed below, ho
6170: 77 65 76 65 72 2c 20 74 68 65 20 77 61 72 6e 69  wever, the warni
6180: 6e 67 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  ngs in the follo
6190: 77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20 73  wing paragraph s
61a0: 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65 64 2e 0a  hould be noted..
61b0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
61c0: 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61  e>.<i><b>Importa
61d0: 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65  nt Note:</b> The
61e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
61f0: 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 77 6f  ptions do not wo
6200: 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61  rk with the.[ama
6210: 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 77 69  lgamation] or wi
6220: 74 68 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20  th pre-packaged 
6230: 43 20 63 6f 64 65 20 66 69 6c 65 73 2e 20 20 53  C code files.  S
6240: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d  QLITE_OMIT_* com
6250: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
6260: 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 63 6f 72 72  s only work corr
6270: 65 63 74 6c 79 20 77 68 65 6e 20 53 51 4c 69 74  ectly when SQLit
6280: 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d 20  e is built from 
6290: 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65  canonical source
62a0: 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f 62   files..</i>.</b
62b0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70 3e  lockquote>...<p>
62c0: 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e 73  Special versions
62d0: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 61   of the SQLite a
62e0: 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61 74  malgamation that
62f0: 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61 0a   do work with a.
6300: 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73 65  predetermined se
6310: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
6320: 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62  _* options can b
6330: 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54 6f  e generated.  To
6340: 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20 63   do so,.make a c
6350: 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65 66  opy of the Makef
6360: 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d 61  ile.linux-gcc ma
6370: 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65 20  kefile template 
6380: 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c  in the canonical
6390: 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69 73  .source code dis
63a0: 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61 6e  tribution.  Chan
63b0: 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79  ge the name of y
63c0: 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d 70  our copy to simp
63d0: 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a 54  ly "Makefile"..T
63e0: 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66 69  hen edit "Makefi
63f0: 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20 61 70  le" to set up ap
6400: 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69 6c  propriate compil
6410: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20  e-time options. 
6420: 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62 6c 6f   Then.type:.<blo
6430: 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61 6b 65  ckquote><tt>make
6440: 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c   clean; make sql
6450: 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62 6c 6f  ite3.c</tt></blo
6460: 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72 65 73  ckquote>.The res
6470: 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33 2e  ulting "sqlite3.
6480: 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  c" amalgamation 
6490: 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20 69  code file (and i
64a0: 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68 65  ts associated.he
64b0: 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69 74  ader file "sqlit
64c0: 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e 20  e3.h") can then 
64d0: 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 6f  be moved to a no
64e0: 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d 0a  n-unix platform.
64f0: 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69 6c  for final compil
6500: 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e 61  ation using a na
6510: 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c 2f  tive compiler.</
6520: 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f 66 20 74 68  p>..<p>All of th
6530: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
6540: 6f 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75  options are unsu
6550: 70 70 6f 72 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 62  pported.</p>..<b
6560: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62  lockquote>.<i><b
6570: 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a  >Important Note:
6580: 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f  </b>.The SQLITE_
6590: 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74  OMIT_* compile-t
65a0: 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ime options are 
65b0: 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69  unsupported..</i
65c0: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
65d0: 3c 70 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f  <p>.The SQLITE_O
65e0: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
65f0: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75  me options are u
6600: 73 75 61 6c 6c 79 20 75 6e 74 65 73 74 65 64 20  sually untested 
6610: 61 6e 64 0a 61 72 65 20 61 6c 6d 6f 73 74 20 63  and.are almost c
6620: 65 72 74 61 69 6e 6c 79 20 75 6e 74 65 73 74 65  ertainly unteste
6630: 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  d in combination
6640: 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c 20 6f 66 20  ..Any or all of 
6650: 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61  these options ma
6660: 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f  y be removed fro
6670: 6d 20 74 68 65 20 63 6f 64 65 20 69 6e 20 66 75  m the code in fu
6680: 74 75 72 65 20 72 65 6c 65 61 73 65 73 0a 61 6e  ture releases.an
6690: 64 20 77 69 74 68 6f 75 74 20 77 61 72 6e 69 6e  d without warnin
66a0: 67 2e 20 20 46 6f 72 20 61 6e 79 20 70 61 72 74  g.  For any part
66b0: 69 63 75 6c 61 72 20 72 65 6c 65 61 73 65 2c 20  icular release, 
66c0: 73 6f 6d 65 20 6f 66 20 74 68 65 73 65 0a 6f 70  some of these.op
66d0: 74 69 6f 6e 73 20 6d 61 79 20 63 61 75 73 65 20  tions may cause 
66e0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20  compile-time or 
66f0: 72 75 6e 2d 74 69 6d 65 20 66 61 69 6c 75 72 65  run-time failure
6700: 73 2c 20 70 61 72 74 69 63 75 6c 61 72 6c 79 0a  s, particularly.
6710: 77 68 65 6e 20 75 73 65 64 20 69 6e 20 63 6f 6d  when used in com
6720: 62 69 6e 61 74 69 6f 6e 20 77 69 74 68 20 6f 74  bination with ot
6730: 68 65 72 20 6f 70 74 69 6f 6e 73 2e 3c 2f 70 3e  her options.</p>
6740: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
6750: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
6760: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20  MIT_ALTERTABLE} 
6770: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
6780: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
6790: 20 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54   the .  [ALTER T
67a0: 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  ABLE] command is
67b0: 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e   not included in
67c0: 20 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e   the .  library.
67d0: 20 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41   Executing an [A
67e0: 4c 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74  LTER TABLE] stat
67f0: 65 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20 70  ement causes a p
6800: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
6810: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6820: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59  QLITE_OMIT_ANALY
6830: 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  ZE} {.  When thi
6840: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
6850: 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a  ned, the [ANALYZ
6860: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d  E] command is om
6870: 69 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65  itted from.  the
6880: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
6890: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
68a0: 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b  E_OMIT_ATTACH} {
68b0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
68c0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
68d0: 74 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64  the [ATTACH] and
68e0: 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e   [DETACH] comman
68f0: 64 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64  ds are.  omitted
6900: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
6910: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6920: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6930: 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b  AUTHORIZATION} {
6940: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
6950: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
6960: 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20  e authorization 
6970: 63 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65  callback feature
6980: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
6990: 61 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65  ary. The [sqlite
69a0: 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
69b0: 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  ()] API function
69c0: 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a   is not present.
69d0: 20 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79    in the library
69e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
69f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
6a00: 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20  _AUTOINCREMENT} 
6a10: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6a20: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
6a30: 74 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52  the .  [AUTOINCR
6a40: 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61  EMENT] functiona
6a50: 6c 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73 20  lity. When this 
6a60: 0a 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64  .  is macro is d
6a70: 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20  efined, columns 
6a80: 64 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22  declared as .  "
6a90: 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
6aa0: 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d   KEY] AUTOINCREM
6ab0: 45 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e  ENT".  behave in
6ac0: 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 61 73   the same way as
6ad0: 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65   columns declare
6ae0: 64 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50  d as "[INTEGER P
6af0: 52 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65  RIMARY KEY]" whe
6b00: 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69  n a .  NULL is i
6b10: 6e 73 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c  nserted. The sql
6b20: 69 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73  ite_sequence sys
6b30: 74 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69  tem table is nei
6b40: 74 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f  ther created, no
6b50: 72 0a 20 20 72 65 73 70 65 63 74 65 64 20 69 66  r.  respected if
6b60: 20 69 74 20 61 6c 72 65 61 64 79 20 65 78 69 73   it already exis
6b70: 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ts..}..COMPILE_O
6b80: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
6b90: 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20  IT_AUTOINIT} {. 
6ba0: 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63   For backwards c
6bb0: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  ompatibility wit
6bc0: 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73  h older versions
6bd0: 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74 20   of SQLite that 
6be0: 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69  lack.  the [sqli
6bf0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
6c00: 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65  ] interface, the
6c10: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
6c20: 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63  lize()] interfac
6c30: 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75  e.  is called au
6c40: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e  tomatically upon
6c50: 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69   entry to certai
6c60: 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73  n key interfaces
6c70: 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69   such as.  [sqli
6c80: 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71  te3_open()], [sq
6c90: 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
6ca0: 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69  er()], and [sqli
6cb0: 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a  te3_mprintf()]..
6cc0: 20 20 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f    The overhead o
6cd0: 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69  f invoking [sqli
6ce0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
6cf0: 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  ] automatically 
6d00: 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61  in this.  way ma
6d10: 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20  y be omitted by 
6d20: 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20  building SQLite 
6d30: 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f  with the SQLITE_
6d40: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20  OMIT_AUTOINIT.  
6d50: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
6d60: 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c  acro.  When buil
6d70: 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f  t using SQLITE_O
6d80: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51  MIT_AUTOINIT, SQ
6d90: 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20  Lite.  will not 
6da0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e  automatically in
6db0: 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20  itialize itself 
6dc0: 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74  and the applicat
6dd0: 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a  ion is required.
6de0: 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c    to invoke [sql
6df0: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
6e00: 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f  )] directly prio
6e10: 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75  r to beginning u
6e20: 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69  se of the.  SQLi
6e30: 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43  te library..}..C
6e40: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6e50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d  QLITE_OMIT_AUTOM
6e60: 41 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20  ATIC_INDEX} {.  
6e70: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
6e80: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
6e90: 0a 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e  .  [automatic in
6ea0: 64 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e  dexing] function
6eb0: 61 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ality..}..COMPIL
6ec0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6ed0: 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 7d  _OMIT_AUTORESET}
6ee0: 20 7b 0a 20 20 42 79 20 64 65 66 61 75 6c 74 2c   {.  By default,
6ef0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
6f00: 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ep()] interface 
6f10: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
6f20: 6c 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c  ly invoke.  [sql
6f30: 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74 6f  ite3_reset()] to
6f40: 20 72 65 73 65 74 20 74 68 65 20 5b 70 72 65 70   reset the [prep
6f50: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
6f60: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54  if necessary.  T
6f70: 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69  his.  compile-ti
6f80: 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65  me option change
6f90: 73 20 74 68 61 74 20 62 65 68 61 76 69 6f 72 20  s that behavior 
6fa0: 73 6f 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33  so that [sqlite3
6fb0: 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20 20  _step()] will.  
6fc0: 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d  return [SQLITE_M
6fd0: 49 53 55 53 45 5d 20 69 66 20 69 74 20 63 61 6c  ISUSE] if it cal
6fe0: 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20  led again after 
6ff0: 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69  returning anythi
7000: 6e 67 20 6f 74 68 65 72 0a 20 20 74 68 61 6e 20  ng other.  than 
7010: 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53  [SQLITE_ROW], [S
7020: 51 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72 20  QLITE_BUSY], or 
7030: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20  [SQLITE_LOCKED] 
7040: 75 6e 6c 65 73 73 20 74 68 65 72 65 20 77 61 73  unless there was
7050: 20 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69 6e   an.  intervenin
7060: 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  g call to [sqlit
7070: 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20 20  e3_reset()]...  
7080: 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  In SQLite versio
7090: 6e 20 33 2e 36 2e 32 33 2e 31 20 61 6e 64 20 65  n 3.6.23.1 and e
70a0: 61 72 6c 69 65 72 2c 20 5b 73 71 6c 69 74 65 33  arlier, [sqlite3
70b0: 5f 73 74 65 70 28 29 5d 20 75 73 65 64 20 74 6f  _step()] used to
70c0: 20 61 6c 77 61 79 73 0a 20 20 72 65 74 75 72 6e   always.  return
70d0: 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d   [SQLITE_MISUSE]
70e0: 20 69 66 20 69 74 20 77 61 73 20 69 6e 76 6f 6b   if it was invok
70f0: 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72  ed again after r
7100: 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e  eturning anythin
7110: 67 0a 20 20 6f 74 68 65 72 20 74 68 61 6e 20 5b  g.  other than [
7120: 53 51 4c 49 54 45 5f 52 4f 57 5d 20 77 69 74 68  SQLITE_ROW] with
7130: 6f 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69  out an interveni
7140: 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69  ng call to [sqli
7150: 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 20 20  te3_reset()]..  
7160: 54 68 69 73 20 63 61 75 73 65 64 20 70 72 6f 62  This caused prob
7170: 6c 65 6d 73 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f  lems on some poo
7180: 72 6c 79 20 77 72 69 74 74 65 6e 20 73 6d 61 72  rly written smar
7190: 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69  tphone applicati
71a0: 6f 6e 73 20 77 68 69 63 68 0a 20 20 64 69 64 20  ons which.  did 
71b0: 6e 6f 74 20 63 6f 72 72 65 63 74 6c 79 20 68 61  not correctly ha
71c0: 6e 64 6c 65 20 74 68 65 20 5b 53 51 4c 49 54 45  ndle the [SQLITE
71d0: 5f 4c 4f 43 4b 45 44 5d 20 61 6e 64 20 5b 53 51  _LOCKED] and [SQ
71e0: 4c 49 54 45 5f 42 55 53 59 5d 20 65 72 72 6f 72  LITE_BUSY] error
71f0: 20 0a 20 20 72 65 74 75 72 6e 73 2e 20 20 52 61   .  returns.  Ra
7200: 74 68 65 72 20 74 68 61 6e 20 66 69 78 20 74 68  ther than fix th
7210: 65 20 6d 61 6e 79 20 64 65 66 65 63 74 69 76 65  e many defective
7220: 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c   smartphone appl
7230: 69 63 61 74 69 6f 6e 73 2c 20 0a 20 20 74 68 65  ications, .  the
7240: 20 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c   behavior of SQL
7250: 69 74 65 20 77 61 73 20 63 68 61 6e 67 65 64 20  ite was changed 
7260: 69 6e 20 33 2e 36 2e 32 33 2e 32 20 74 6f 20 61  in 3.6.23.2 to a
7270: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 73  utomatically res
7280: 65 74 0a 20 20 74 68 65 20 70 72 65 70 61 72 65  et.  the prepare
7290: 64 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 42 75  d statement.  Bu
72a0: 74 20 74 68 61 74 20 63 68 61 6e 67 65 64 20 63  t that changed c
72b0: 61 75 73 65 64 20 69 73 73 75 65 73 20 69 6e 20  aused issues in 
72c0: 6f 74 68 65 72 20 0a 20 20 69 6d 70 72 6f 70 65  other .  imprope
72d0: 72 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  rly implemented 
72e0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61  applications tha
72f0: 74 20 77 65 72 65 20 61 63 74 75 61 6c 6c 79 20  t were actually 
7300: 6c 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72 20 61 6e  looking.  for an
7310: 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d   [SQLITE_MISUSE]
7320: 20 72 65 74 75 72 6e 20 74 6f 20 74 65 72 6d 69   return to termi
7330: 6e 61 74 65 20 74 68 65 69 72 20 71 75 65 72 79  nate their query
7340: 20 6c 6f 6f 70 73 2e 20 20 28 41 6e 79 74 69 6d   loops.  (Anytim
7350: 65 0a 20 20 61 6e 20 61 70 70 6c 69 63 61 74 69  e.  an applicati
7360: 6f 6e 20 67 65 74 73 20 61 6e 20 53 51 4c 49 54  on gets an SQLIT
7370: 45 5f 4d 49 53 55 53 45 20 65 72 72 6f 72 20 63  E_MISUSE error c
7380: 6f 64 65 20 66 72 6f 6d 20 53 51 4c 69 74 65 2c  ode from SQLite,
7390: 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 0a   that means the.
73a0: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73    application is
73b0: 20 6d 69 73 75 73 69 6e 67 20 74 68 65 20 53 51   misusing the SQ
73c0: 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 61  Lite interface a
73d0: 6e 64 20 69 73 20 74 68 75 73 20 69 6e 63 6f 72  nd is thus incor
73e0: 72 65 63 74 6c 79 0a 20 20 69 6d 70 6c 65 6d 65  rectly.  impleme
73f0: 6e 74 65 64 2e 29 20 20 54 68 65 20 53 51 4c 49  nted.)  The SQLI
7400: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45  TE_OMIT_AUTORESE
7410: 54 20 69 6e 74 65 72 66 61 63 65 20 77 61 73 20  T interface was 
7420: 61 64 64 65 64 20 74 6f 20 53 51 4c 69 74 65 0a  added to SQLite.
7430: 20 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 35 20    version 3.7.5 
7440: 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20  in an effort to 
7450: 67 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 28  get all of the (
7460: 62 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63  broken).  applic
7470: 61 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61  ations to work a
7480: 67 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61 76  gain without hav
7490: 69 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79 20  ing to actually 
74a0: 66 69 78 20 74 68 65 20 61 70 70 6c 69 63 61 74  fix the applicat
74b0: 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ions..}..COMPILE
74c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
74d0: 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d  OMIT_AUTOVACUUM}
74e0: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74   {.  If this opt
74f0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
7500: 74 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 6e  the library cann
7510: 6f 74 20 63 72 65 61 74 65 20 6f 72 20 77 72 69  ot create or wri
7520: 74 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61 73  te to .  databas
7530: 65 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20  es that support 
7540: 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20  [auto_vacuum].. 
7550: 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50 52   Executing a [PR
7560: 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d  AGMA auto_vacuum
7570: 5d 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e  ] statement is n
7580: 6f 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28 73  ot an error.  (s
7590: 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41  ince unknown PRA
75a0: 47 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74 6c  GMAs are silentl
75b0: 79 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74 20  y ignored), but 
75c0: 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20  does not return 
75d0: 61 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64  a value.  or mod
75e0: 69 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61 63  ify the auto-vac
75f0: 75 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65 20  uum flag in the 
7600: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49  database file. I
7610: 66 20 61 20 64 61 74 61 62 61 73 65 20 74 68 61  f a database tha
7620: 74 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75 74  t.  supports aut
7630: 6f 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65 6e  o-vacuum is open
7640: 65 64 20 62 79 20 61 20 6c 69 62 72 61 72 79 20  ed by a library 
7650: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68  compiled with th
7660: 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20  is option, it.  
7670: 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  is automatically
7680: 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d   opened in read-
7690: 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f  only mode..}..CO
76a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
76b0: 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45  LITE_OMIT_BETWEE
76c0: 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20  N_OPTIMIZATION} 
76d0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
76e0: 64 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65  disables the use
76f0: 20 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74 68   of indices with
7700: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 74 65   WHERE clause te
7710: 72 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f  rms.  that emplo
7720: 79 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70  y the BETWEEN op
7730: 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49  erator..}..COMPI
7740: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7750: 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45  E_OMIT_BLOB_LITE
7760: 52 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  RAL} {.  When th
7770: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
7780: 69 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74 20  ined, it is not 
7790: 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63  possible to spec
77a0: 69 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20  ify a blob in.  
77b0: 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  an SQL statement
77c0: 20 75 73 69 6e 67 20 74 68 65 20 58 27 41 42 43   using the X'ABC
77d0: 44 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f  D' syntax..}..CO
77e0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
77f0: 4c 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43  LITE_OMIT_BTREEC
7800: 4f 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74  OUNT} {.  When t
7810: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
7820: 66 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69  fined, an optimi
7830: 7a 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65  zation that acce
7840: 6c 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e 67  lerates counting
7850: 0a 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 69  .  all entries i
7860: 6e 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f 74  n a table (in ot
7870: 68 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70  her words, an op
7880: 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20  timization that 
7890: 68 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54 20  helps.  "SELECT 
78a0: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61  count(*) FROM ta
78b0: 62 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72 29  ble" run faster)
78c0: 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   is omitted..}..
78d0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
78e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c  SQLITE_OMIT_BUIL
78f0: 54 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41 20  TIN_TEST} {.  A 
7900: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
7910: 62 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20 61  build includes a
7920: 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66   small amount of
7930: 20 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c 65   logic controlle
7940: 64 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c 69  d.  by the [sqli
7950: 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c  te3_test_control
7960: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 68  ()] interface th
7970: 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 65 78  at is used to ex
7980: 65 72 63 69 73 65 0a 20 20 70 61 72 74 73 20 6f  ercise.  parts o
7990: 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  f the SQLite cor
79a0: 65 20 74 68 61 74 20 61 72 65 20 64 69 66 66 69  e that are diffi
79b0: 63 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c 20  cult to control 
79c0: 61 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69 6e  and measure usin
79d0: 67 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72 64  g.  the standard
79e0: 20 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74 69   API.  This opti
79f0: 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62 75  on omits that bu
7a00: 69 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67 69  ilt-in test logi
7a10: 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  c..}..COMPILE_OP
7a20: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
7a30: 54 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69 73  T_CAST} {.  This
7a40: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
7a50: 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75  QLite to omit su
7a60: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43 41  pport for the CA
7a70: 53 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a  ST operator..}..
7a80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7a90: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43  SQLITE_OMIT_CHEC
7aa0: 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  K} {.  This opti
7ab0: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
7ac0: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
7ad0: 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74   for CHECK const
7ae0: 72 61 69 6e 74 73 2e 0a 20 20 54 68 65 20 70 61  raints..  The pa
7af0: 72 73 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c 20  rser will still 
7b00: 61 63 63 65 70 74 20 43 48 45 43 4b 20 63 6f 6e  accept CHECK con
7b10: 73 74 72 61 69 6e 74 73 20 69 6e 20 53 51 4c 20  straints in SQL 
7b20: 73 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74 68  statements,.  th
7b30: 65 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f 74  ey will just not
7b40: 20 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a   be enforced..}.
7b50: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7b60: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d  {SQLITE_OMIT_COM
7b70: 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53  PILEOPTION_DIAGS
7b80: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
7b90: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
7ba0: 74 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  t the compile-ti
7bb0: 6d 65 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e 6f  me option diagno
7bc0: 73 74 69 63 73 20 61 76 61 69 6c 61 62 6c 65 0a  stics available.
7bd0: 20 20 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e 63    in SQLite, inc
7be0: 6c 75 64 69 6e 67 20 74 68 65 20 5b 73 71 6c 69  luding the [sqli
7bf0: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
7c00: 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 20 20  n_used()] and.  
7c10: 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65  [sqlite3_compile
7c20: 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f  option_get()] C/
7c30: 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74  C++ functions, t
7c40: 68 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f 6d  he.  [sqlite_com
7c50: 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
7c60: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 63  )] and [sqlite_c
7c70: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
7c80: 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ()] SQL function
7c90: 73 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 63 6f  s,.  and the [co
7ca0: 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72  mpile_options pr
7cb0: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
7cc0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7cd0: 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20  _OMIT_COMPLETE} 
7ce0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7cf0: 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69  causes the [sqli
7d00: 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20  te3_complete()] 
7d10: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  and [sqlite3_com
7d20: 70 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e 74  plete16()].  int
7d30: 65 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f 6d  erfaces to be om
7d40: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
7d50: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7d60: 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53  _OMIT_COMPOUND_S
7d70: 45 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73 20  ELECT} {.  This 
7d80: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
7d90: 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f  o omit the compo
7da0: 75 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e  und [SELECT] fun
7db0: 63 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b  ctionality. .  [
7dc0: 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e  SELECT] statemen
7dd0: 74 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20  ts that use the 
7de0: 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20  .  UNION, UNION 
7df0: 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20 6f  ALL, INTERSECT o
7e00: 72 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e  r EXCEPT compoun
7e10: 64 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74 6f  d SELECT operato
7e20: 72 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73 65  rs will .  cause
7e30: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
7e40: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7e50: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
7e60: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b  ATETIME_FUNCS} {
7e70: 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
7e80: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  n is defined, SQ
7e90: 4c 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e 20  Lite's built-in 
7ea0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d 61  date and time ma
7eb0: 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e  nipulation.  fun
7ec0: 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74  ctions are omitt
7ed0: 65 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ed. Specifically
7ee0: 2c 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  , the SQL functi
7ef0: 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c  ons julianday(),
7f00: 20 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65 28   date(),.  time(
7f10: 29 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61 6e  ), datetime() an
7f20: 64 20 73 74 72 66 74 69 6d 65 28 29 20 61 72 65  d strftime() are
7f30: 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20   not available. 
7f40: 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 75  The default colu
7f50: 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52 52  mn.  values CURR
7f60: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
7f70: 54 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52 45  T_DATE and CURRE
7f80: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 61 72 65  NT_TIMESTAMP are
7f90: 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65   still available
7fa0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7fb0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
7fc0: 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54  _DECLTYPE} {.  T
7fd0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
7fe0: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
7ff0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
8000: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
8010: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61  mn_decltype()] a
8020: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  nd [sqlite3_colu
8030: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d  mn_decltype16()]
8040: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  .  interfaces..}
8050: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8060: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45   {SQLITE_OMIT_DE
8070: 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68  PRECATED} {.  Th
8080: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
8090: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
80a0: 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65  support for inte
80b0: 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20  rfaces.  marked 
80c0: 61 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20  as deprecated.  
80d0: 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20  This includes . 
80e0: 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67   [sqlite3_aggreg
80f0: 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20  ate_count()],.  
8100: 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64  [sqlite3_expired
8110: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
8120: 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67  transfer_binding
8130: 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  s()],.  [sqlite3
8140: 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28  _global_recover(
8150: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  )],.  [sqlite3_t
8160: 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d  hread_cleanup()]
8170: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
8180: 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20  memory_alarm()] 
8190: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
81a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
81b0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49  QLITE_OMIT_DISKI
81c0: 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  O} {.  This opti
81d0: 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70  on omits all sup
81e0: 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67  port for writing
81f0: 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64   to the disk and
8200: 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61   forces.  databa
8210: 73 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20  ses to exist in 
8220: 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68  memory only.  Th
8230: 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f  is option has no
8240: 74 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61  t been .  mainta
8250: 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c  ined and probabl
8260: 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20  y does not work 
8270: 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73 69  with newer versi
8280: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d  ons of SQLite..}
8290: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
82a0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58   {SQLITE_OMIT_EX
82b0: 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  PLAIN} {.  Defin
82c0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
82d0: 63 61 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c  causes the [EXPL
82e0: 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  AIN] command to 
82f0: 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  be omitted from 
8300: 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41  the.  library. A
8310: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
8320: 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e  cute an [EXPLAIN
8330: 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  ] statement will
8340: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 0a 20   cause a parse. 
8350: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
8360: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8370: 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47  E_OMIT_FLAG_PRAG
8380: 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  MAS} {.  This op
8390: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
83a0: 72 74 20 66 6f 72 20 61 20 73 75 62 73 65 74 20  rt for a subset 
83b0: 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  of [PRAGMA] comm
83c0: 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65 72  ands that.  quer
83d0: 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61  y and set boolea
83e0: 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a  n properties..}.
83f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8400: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f  {SQLITE_OMIT_FLO
8410: 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20  ATING_POINT} {. 
8420: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
8430: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f  used to omit flo
8440: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62  ating-point numb
8450: 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20  er support from 
8460: 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62  the SQLite.  lib
8470: 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69  rary. When speci
8480: 66 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67  fied, specifying
8490: 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
84a0: 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69  t number as a li
84b0: 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22  teral .  (i.e. "
84c0: 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20 69  1.01") results i
84d0: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
84e0: 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75  ..  <p>In the fu
84f0: 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f  ture, this optio
8500: 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62  n may also disab
8510: 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e  le other floatin
8520: 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74  g point .  funct
8530: 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78  ionality, for ex
8540: 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74  ample the [sqlit
8550: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
8560: 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33  ()], .  [sqlite3
8570: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c  _bind_double()],
8580: 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
8590: 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20  double()] and.  
85a0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
85b0: 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75  double()] API fu
85c0: 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a  nctions..  </p>.
85d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
85e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  N {SQLITE_OMIT_F
85f0: 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20  OREIGN_KEY} {.  
8600: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
8610: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
8620: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
8630: 73 74 72 61 69 6e 74 5d 20 73 79 6e 74 61 78 20  straint] syntax 
8640: 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69  is.  not recogni
8650: 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  zed..}..COMPILE_
8660: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
8670: 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b  MIT_GET_TABLE} {
8680: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
8690: 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f  auses support fo
86a0: 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  r [sqlite3_get_t
86b0: 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  able()] and.  [s
86c0: 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
86d0: 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  e()] to be omitt
86e0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
86f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
8700: 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20  IT_INCRBLOB} {. 
8710: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
8720: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
8730: 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20  [sqlite3_blob | 
8740: 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42  incremental BLOB
8750: 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d   I/O].  to be om
8760: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
8770: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8780: 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f  _OMIT_INTEGRITY_
8790: 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  CHECK} {.  This 
87a0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
87b0: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e  port for the [in
87c0: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72  tegrity_check pr
87d0: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
87e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
87f0: 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d  _OMIT_LIKE_OPTIM
8800: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
8810: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
8820: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66  s the ability of
8830: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69   SQLite to use i
8840: 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20  ndices to help. 
8850: 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20   resolve [LIKE] 
8860: 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61  and [GLOB] opera
8870: 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45 20  tors in a WHERE 
8880: 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  clause..}..COMPI
8890: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
88a0: 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45  E_OMIT_LOAD_EXTE
88b0: 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  NSION} {.  This 
88c0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
88d0: 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f   entire extensio
88e0: 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e  n loading mechan
88f0: 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74  ism from.  SQLit
8900: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71  e, including [sq
8910: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
8920: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61  d_extension()] a
8930: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  nd.  [sqlite3_lo
8940: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
8950: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
8960: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8970: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c  QLITE_OMIT_LOCAL
8980: 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TIME} {.  This o
8990: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
89a0: 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69  "localtime" modi
89b0: 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61  fier from the da
89c0: 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75  te and time.  fu
89d0: 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f  nctions.  This o
89e0: 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d  ption is sometim
89f0: 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74  es useful when t
8a00: 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65  rying to compile
8a10: 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  .  the date and 
8a20: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f  time functions o
8a30: 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61  n a platform tha
8a40: 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
8a50: 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74  rt the.  concept
8a60: 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a   of local time..
8a70: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8a80: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
8a90: 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54 68  OOKASIDE} {.  Th
8aa0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
8ab0: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
8ac0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
8ad0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8ae0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8af0: 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57  _MEMORYDB} {.  W
8b00: 68 65 6e 20 74 68 69 73 20 69 73 20 64 65 66 69  hen this is defi
8b10: 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79  ned, the library
8b20: 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63   does not respec
8b30: 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61  t the special da
8b40: 74 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a  tabase.  name ":
8b50: 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c  memory:" (normal
8b60: 6c 79 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  ly used to creat
8b70: 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20  e an [in-memory 
8b80: 64 61 74 61 62 61 73 65 5d 29 2e 20 49 66 20 0a  database]). If .
8b90: 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20    ":memory:" is 
8ba0: 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
8bb0: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
8bc0: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
8bd0: 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70  or.  [sqlite3_op
8be0: 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c 65  en_v2()], a file
8bf0: 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20   with this name 
8c00: 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65  will be .  opene
8c10: 64 20 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a  d or created..}.
8c20: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8c30: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 52  {SQLITE_OMIT_MER
8c40: 47 45 5f 53 4f 52 54 7d 20 7b 0a 20 20 42 65 67  GE_SORT} {.  Beg
8c50: 69 6e 6e 69 6e 67 20 77 69 74 68 20 53 51 4c 69  inning with SQLi
8c60: 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e  te [version 3.7.
8c70: 38 5d 2c 20 6c 61 72 67 65 20 73 6f 72 74 20 6f  8], large sort o
8c80: 70 65 72 61 74 69 6f 6e 73 20 73 75 63 68 20 61  perations such a
8c90: 73 0a 20 20 75 73 65 64 20 62 79 20 5b 43 52 45  s.  used by [CRE
8ca0: 41 54 45 20 49 4e 44 45 58 5d 20 63 6f 6d 6d 61  ATE INDEX] comma
8cb0: 6e 64 73 20 61 72 65 20 69 6d 70 6c 65 6d 65 6e  nds are implemen
8cc0: 74 65 64 20 75 73 69 6e 67 20 61 6e 20 65 78 74  ted using an ext
8cd0: 65 72 6e 61 6c 0a 20 20 6d 65 72 67 65 20 73 6f  ernal.  merge so
8ce0: 72 74 20 72 61 74 68 65 72 20 74 68 61 6e 20 69  rt rather than i
8cf0: 6e 73 65 72 74 69 6f 6e 73 20 69 6e 74 6f 20 61  nsertions into a
8d00: 20 42 2d 54 72 65 65 2e 20 20 54 68 69 73 20 72   B-Tree.  This r
8d10: 65 73 75 6c 74 73 20 69 6e 20 62 65 74 74 65 72  esults in better
8d20: 0a 20 20 63 61 63 68 65 20 6c 6f 63 61 6c 69 74  .  cache localit
8d30: 79 20 61 6e 64 20 61 6e 20 6f 72 64 65 72 2d 6f  y and an order-o
8d40: 66 2d 6d 61 67 6e 69 74 75 64 65 20 73 70 65 65  f-magnitude spee
8d50: 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74 20 66 6f  d improvement fo
8d60: 72 20 73 6f 72 74 73 20 74 68 61 74 0a 20 20 61  r sorts that.  a
8d70: 72 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74  re larger than t
8d80: 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20 63 61  he filesystem ca
8d90: 63 68 65 2e 20 20 4f 6e 20 74 68 65 20 6f 74 68  che.  On the oth
8da0: 65 72 20 68 61 6e 64 2c 20 74 68 65 20 6d 65 72  er hand, the mer
8db0: 67 65 20 73 6f 72 74 0a 20 20 6c 6f 67 69 63 20  ge sort.  logic 
8dc0: 75 73 65 73 20 73 6f 6d 65 20 63 6f 64 65 20 73  uses some code s
8dd0: 70 61 63 65 20 61 6e 64 20 69 73 20 73 6c 69 67  pace and is slig
8de0: 68 74 6c 79 20 28 31 25 29 20 73 6c 6f 77 65 72  htly (1%) slower
8df0: 20 66 6f 72 20 5b 43 52 45 41 54 45 20 49 4e 44   for [CREATE IND
8e00: 45 58 5d 0a 20 20 6f 6e 20 73 6d 61 6c 6c 20 74  EX].  on small t
8e10: 61 62 6c 65 73 2e 20 20 54 68 65 20 65 78 74 65  ables.  The exte
8e20: 72 6e 61 6c 20 6d 65 72 67 65 20 73 6f 72 74 20  rnal merge sort 
8e30: 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20  can be disabled 
8e40: 75 73 69 6e 67 20 74 68 69 73 0a 20 20 63 6f 6d  using this.  com
8e50: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8e60: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8e70: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8e80: 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  _OR_OPTIMIZATION
8e90: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8ea0: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61  n disables the a
8eb0: 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65  bility of SQLite
8ec0: 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64 65 78   to use an index
8ed0: 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68   together.  with
8ee0: 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48 45 52   terms of a WHER
8ef0: 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74  E clause connect
8f00: 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f 70 65  ed by the OR ope
8f10: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
8f20: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8f30: 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47  _OMIT_PAGER_PRAG
8f40: 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
8f50: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
8f60: 69 74 73 20 70 72 61 67 6d 61 73 20 72 65 6c 61  its pragmas rela
8f70: 74 65 64 20 74 6f 20 74 68 65 20 70 61 67 65 72  ted to the pager
8f80: 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f 6d 20   subsystem from 
8f90: 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
8fa0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8fb0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41  {SQLITE_OMIT_PRA
8fc0: 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  GMA} {.  This op
8fd0: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
8fe0: 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47 4d 41  omit the [PRAGMA
8ff0: 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d  ] command.  from
9000: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f   the library. No
9010: 74 65 20 74 68 61 74 20 69 74 20 69 73 20 75 73  te that it is us
9020: 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 74  eful to define t
9030: 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74 20 6f  he macros that o
9040: 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63 20 70  mit.  specific p
9050: 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69 74 69  ragmas in additi
9060: 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73 20 74  on to this, as t
9070: 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d  hey may also rem
9080: 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67 20 63  ove supporting c
9090: 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72 20 73  ode.  in other s
90a0: 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68 69 73  ub-systems. This
90b0: 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73 20 74   macro removes t
90c0: 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  he [PRAGMA] comm
90d0: 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d  and only..}..COM
90e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
90f0: 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53  ITE_OMIT_PROGRES
9100: 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20  S_CALLBACK} {.  
9110: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20  This option may 
9120: 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d  be defined to om
9130: 69 74 20 74 68 65 20 63 61 70 61 62 69 6c 69 74  it the capabilit
9140: 79 20 74 6f 20 69 73 73 75 65 20 22 70 72 6f 67  y to issue "prog
9150: 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62 61 63  ress" .  callbac
9160: 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72  ks during long-r
9170: 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65  unning SQL state
9180: 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b 73  ments. The .  [s
9190: 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
91a0: 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50 49  handler()].  API
91b0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74   function is not
91c0: 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20   present in the 
91d0: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
91e0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
91f0: 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c  TE_OMIT_QUICKBAL
9200: 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ANCE} {.  This o
9210: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61  ption omits an a
9220: 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61 73 74  lternative, fast
9230: 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61 6e 63  er B-Tree balanc
9240: 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55  ing routine..  U
9250: 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  sing this option
9260: 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 73 6c   makes SQLite sl
9270: 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61  ightly smaller a
9280: 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
9290: 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e  .  making it run
92a0: 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72   slightly slower
92b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
92c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
92d0: 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68  _REINDEX} {.  Wh
92e0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
92f0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
9300: 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61  REINDEX].  comma
9310: 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
9320: 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  ed in the librar
9330: 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61  y..  Executing a
9340: 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61 74 65   [REINDEX] state
9350: 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61  ment causes .  a
9360: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a   parse error..}.
9370: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9380: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  {SQLITE_OMIT_SCH
9390: 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  EMA_PRAGMAS} {. 
93a0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
93b0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
93c0: 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67  mas for querying
93d0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
93e0: 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68 65  hema from .  the
93f0: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
9400: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9410: 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45  E_OMIT_SCHEMA_VE
9420: 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b  RSION_PRAGMAS} {
9430: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
9440: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
9450: 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
9460: 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67  ng and modifying
9470: 20 74 68 65 20 0a 20 20 64 61 74 61 62 61 73 65   the .  database
9480: 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f 6e 20   schema version 
9490: 61 6e 64 20 75 73 65 72 20 76 65 72 73 69 6f 6e  and user version
94a0: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
94b0: 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74   Specifically, t
94c0: 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65  he .  [schema_ve
94d0: 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72  rsion] and [user
94e0: 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41  _version] PRAGMA
94f0: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  s are omitted..}
9500: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9510: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48   {SQLITE_OMIT_SH
9520: 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20  ARED_CACHE} {.  
9530: 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c  This option buil
9540: 64 73 20 53 51 4c 69 74 65 20 77 69 74 68 6f 75  ds SQLite withou
9550: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 68  t support for sh
9560: 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e  ared-cache mode.
9570: 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  .  The [sqlite3_
9580: 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61  enable_shared_ca
9590: 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74 74 65  che()] is omitte
95a0: 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 66  d along with a f
95b0: 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20  air.  amount of 
95c0: 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74 68 65  logic within the
95d0: 20 42 2d 54 72 65 65 20 73 75 62 73 79 73 74 65   B-Tree subsyste
95e0: 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  m associated wit
95f0: 68 20 73 68 61 72 65 64 0a 20 20 63 61 63 68 65  h shared.  cache
9600: 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a   management..}..
9610: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9620: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51  SQLITE_OMIT_SUBQ
9630: 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64 65 66  UERY} {.  If def
9640: 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20 66 6f  ined, support fo
9650: 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20 61 6e  r sub-selects an
9660: 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65 72 61  d the IN() opera
9670: 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  tor are omitted.
9680: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9690: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
96a0: 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a  TCL_VARIABLE} {.
96b0: 20 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20    If this macro 
96c0: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
96d0: 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 24 3c   the special "$<
96e0: 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20  variable-name>" 
96f0: 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20 74 6f  syntax.  used to
9700: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
9710: 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c 65  ind SQL variable
9720: 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61 62 6c  s to TCL variabl
9730: 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d  es is omitted..}
9740: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9750: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45   {SQLITE_OMIT_TE
9760: 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MPDB} {.  This o
9770: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
9780: 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f 72 20  ort for TEMP or 
9790: 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c 65 73  TEMPORARY tables
97a0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
97b0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
97c0: 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73  _TRACE} {.  This
97d0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
97e0: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73  pport for the [s
97f0: 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
9800: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
9810: 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65 72 66  _trace()] interf
9820: 61 63 65 73 20 61 6e 64 20 74 68 65 69 72 20 61  aces and their a
9830: 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69 63 2e  ssociated logic.
9840: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9850: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9860: 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44 65 66  TRIGGER} {.  Def
9870: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
9880: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
9890: 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62 6a 65  for TRIGGER obje
98a0: 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65  cts. Neither the
98b0: 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52 49 47   .  [CREATE TRIG
98c0: 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52  GER] or [DROP TR
98d0: 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64  IGGER].  command
98e0: 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20  s are available 
98f0: 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e  in this case, an
9900: 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  d attempting to 
9910: 65 78 65 63 75 74 65 0a 20 20 65 69 74 68 65 72  execute.  either
9920: 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20   will result in 
9930: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 20  a parse error.. 
9940: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73   This option als
9950: 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66 6f 72  o disables enfor
9960: 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72 65 69  cement of [forei
9970: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
9980: 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74 68 65  ts],.  since the
9990: 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70 6c 65   code that imple
99a0: 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73 20 61  ments triggers a
99b0: 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d 69 74  nd which is omit
99c0: 74 65 64 20 62 79 20 74 68 69 73 0a 20 20 6f 70  ted by this.  op
99d0: 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75 73 65  tion is also use
99e0: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 5b  d to implement [
99f0: 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
9a00: 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ons]..}..COMPILE
9a10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9a20: 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50  OMIT_TRUNCATE_OP
9a30: 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  TIMIZATION} {.  
9a40: 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c 64 20  A default build 
9a50: 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20 61 20  of SQLite, if a 
9a60: 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
9a70: 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52 45 20  nt has no WHERE 
9a80: 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f 70 65  clause.  and ope
9a90: 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62 6c 65  rates on a table
9aa0: 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67 65 72   with no trigger
9ab0: 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  s, an optimizati
9ac0: 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74 0a 20  on occurs that. 
9ad0: 20 63 61 75 73 65 73 20 74 68 65 20 44 45 4c 45   causes the DELE
9ae0: 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79 20 64  TE to occur by d
9af0: 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72  ropping and recr
9b00: 65 61 74 69 6e 67 20 74 68 65 20 74 61 62 6c 65  eating the table
9b10: 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67 20 61  .  .  Dropping a
9b20: 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 61 20  nd recreating a 
9b30: 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c 6c 79  table is usually
9b40: 20 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61   much faster tha
9b50: 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74 68 65  n deleting.  the
9b60: 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 20 72   table content r
9b70: 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68 69 73  ow by row.  This
9b80: 20 69 73 20 74 68 65 20 22 74 72 75 6e 63 61 74   is the "truncat
9b90: 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 2e  e optimization".
9ba0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9bb0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9bc0: 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69 73 20  UTF16} {.  This 
9bd0: 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f  macro is used to
9be0: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
9bf0: 72 20 55 54 46 31 36 20 74 65 78 74 20 65 6e 63  r UTF16 text enc
9c00: 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68 69 73  oding. When this
9c10: 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20 61 6c   is.  defined al
9c20: 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20  l API functions 
9c30: 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72 20 61  that return or a
9c40: 63 63 65 70 74 20 55 54 46 31 36 20 65 6e 63 6f  ccept UTF16 enco
9c50: 64 65 64 20 74 65 78 74 20 61 72 65 0a 20 20 75  ded text are.  u
9c60: 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 73  navailable. Thes
9c70: 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20  e functions can 
9c80: 62 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79  be identified by
9c90: 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 74   the fact that t
9ca0: 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68 20 27  hey end.  with '
9cb0: 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  16', for example
9cc0: 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
9cd0: 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  e16()], [sqlite3
9ce0: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29  _column_text16()
9cf0: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
9d00: 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e  _bind_text16()].
9d10: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9d20: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9d30: 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e  VACUUM} {.  When
9d40: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
9d50: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 56 41  defined, the [VA
9d60: 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20  CUUM].  command 
9d70: 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20  is not included 
9d80: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
9d90: 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 56    Executing a [V
9da0: 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74  ACUUM] statement
9db0: 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72   causes .  a par
9dc0: 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
9dd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9de0: 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b  ITE_OMIT_VIEW} {
9df0: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
9e00: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
9e10: 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57 20 6f  pport for VIEW o
9e20: 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20  bjects. Neither 
9e30: 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 56  the .  [CREATE V
9e40: 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52  IEW] nor the [DR
9e50: 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61  OP VIEW].  comma
9e60: 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c  nds are availabl
9e70: 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20  e in this case, 
9e80: 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69 6e 67  and.  attempting
9e90: 20 74 6f 20 65 78 65 63 75 74 65 20 65 69 74 68   to execute eith
9ea0: 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  er will result i
9eb0: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
9ec0: 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49 66 20  ..  WARNING: If 
9ed0: 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65  this macro is de
9ee0: 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e  fined, it will n
9ef0: 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74  ot be possible t
9f00: 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73  o open a databas
9f10: 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20 74 68  e.  for which th
9f20: 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e  e schema contain
9f30: 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20  s VIEW objects. 
9f40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9f50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9f60: 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a  VIRTUALTABLE} {.
9f70: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
9f80: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
9f90: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61  the [sqlite3_vta
9fa0: 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61 62 6c  b | Virtual Tabl
9fb0: 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20 69  e].  mechanism i
9fc0: 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d  n SQLite..}..COM
9fd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9fe0: 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a  ITE_OMIT_WAL} {.
9ff0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
a000: 69 74 73 20 74 68 65 20 22 5b 77 72 69 74 65 2d  its the "[write-
a010: 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61 2e 6b  ahead log]" (a.k
a020: 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63 61 70  .a. "[WAL]") cap
a030: 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50  ability..}..COMP
a040: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a050: 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b 0a 20  TE_OMIT_WSD} {. 
a060: 20 54 68 69 73 20 6f 70 74 69 6f 6e 73 20 62 75   This options bu
a070: 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20 6f  ilds a version o
a080: 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  f the SQLite lib
a090: 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69  rary that contai
a0a0: 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c 65  ns no.  Writable
a0b0: 20 53 74 61 74 69 63 20 44 61 74 61 20 28 57 53   Static Data (WS
a0c0: 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f 62  D).  WSD is glob
a0d0: 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64  al variables and
a0e0: 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61 72  /or static.  var
a0f0: 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70 6c  iables.  Some pl
a100: 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20 73  atforms do not s
a110: 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64 20  upport WSD, and 
a120: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e  this option is n
a130: 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f 72  ecessary.  in or
a140: 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20 74  der for SQLite t
a150: 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c 61  o work those pla
a160: 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e 6c  tforms.  ..  Unl
a170: 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20 6f  ike other OMIT o
a180: 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61 6b  ptions which mak
a190: 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  e the SQLite lib
a1a0: 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20 20  rary smaller,.  
a1b0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 75  this option actu
a1c0: 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20 74  ally increases t
a1d0: 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69 74  he size of SQLit
a1e0: 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 72  e and makes it r
a1f0: 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73 6c  un.  a little sl
a200: 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65 20  ower.  Only use 
a210: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20 53  this option if S
a220: 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20 62  QLite is being b
a230: 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65 6d  uilt for an.  em
a240: 62 65 64 64 65 64 20 74 61 72 67 65 74 20 74 68  bedded target th
a250: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
a260: 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d 50  ort WSD..}..COMP
a270: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a280: 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54  TE_OMIT_XFER_OPT
a290: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a2a0: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
a2b0: 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  for optimization
a2c0: 73 20 74 68 61 74 20 68 65 6c 70 20 73 74 61 74  s that help stat
a2d0: 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20  ements.  of the 
a2e0: 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54  form "INSERT INT
a2f0: 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e  O ... SELECT ...
a300: 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a  " run faster..}.
a310: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a320: 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c  {SQLITE_ZERO_MAL
a330: 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  LOC} {.  This op
a340: 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68 20  tion omits both 
a350: 74 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65 6d  the [default mem
a360: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 61  ory allocator] a
a370: 6e 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67 67  nd the.  [debugg
a380: 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ing memory alloc
a390: 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20 62  ator] from the b
a3a0: 75 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69 74  uild and substit
a3b0: 75 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d 65  utes a stub.  me
a3c0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74  mory allocator t
a3d0: 68 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c 73  hat always fails
a3e0: 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e  .  SQLite will n
a3f0: 6f 74 20 72 75 6e 20 77 69 74 68 20 74 68 69 73  ot run with this
a400: 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20 61  .  stub memory a
a410: 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20 69  llocator since i
a420: 74 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65  t will be unable
a430: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d   to allocate mem
a440: 6f 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69 73  ory.  But.  this
a450: 20 73 74 75 62 20 63 61 6e 20 62 65 20 72 65 70   stub can be rep
a460: 6c 61 63 65 64 20 61 74 20 73 74 61 72 74 2d 74  laced at start-t
a470: 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71 6c  ime using.  [sql
a480: 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51  ite3_config]([SQ
a490: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
a4a0: 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b 73  OC],...) or.  [s
a4b0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b  qlite3_config]([
a4c0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
a4d0: 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20 74  AP],...)..  So t
a4e0: 68 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f 66  he net effect of
a4f0: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
a500: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68 61  me option is tha
a510: 74 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69  t it allows SQLi
a520: 74 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70 69  te.  to be compi
a530: 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20 61  led and linked a
a540: 67 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d 20  gainst a system 
a550: 6c 69 62 72 61 72 79 20 74 68 61 74 20 64 6f 65  library that doe
a560: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20  s not support.  
a570: 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28 29  malloc(), free()
a580: 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f 63  , and/or realloc
a590: 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61  ()..}..</tcl>.<a
a5a0: 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74 69   name="debugopti
a5b0: 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  ons"></a>.<h2>1.
a5c0: 37 20 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 44  7 Analysis and D
a5d0: 65 62 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e 73  ebugging Options
a5e0: 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d  </h2>.<tcl>..COM
a5f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a600: 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20 54  ITE_DEBUG} {.  T
a610: 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  he SQLite source
a620: 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20 6c   code contains l
a630: 69 74 65 72 61 6c 6c 79 20 74 68 6f 75 73 61 6e  iterally thousan
a640: 64 73 20 6f 66 20 61 73 73 65 72 74 28 29 20 73  ds of assert() s
a650: 74 61 74 65 6d 65 6e 74 73 0a 20 20 75 73 65 64  tatements.  used
a660: 20 74 6f 20 76 65 72 69 66 79 20 69 6e 74 65 72   to verify inter
a670: 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20  nal assumptions 
a680: 61 6e 64 20 73 75 62 72 6f 75 74 69 6e 65 20 70  and subroutine p
a690: 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64  reconditions and
a6a0: 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f 6e  .  postcondition
a6b0: 73 2e 20 20 54 68 65 73 65 20 61 73 73 65 72 74  s.  These assert
a6c0: 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72  () statements ar
a6d0: 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e 65  e normally turne
a6e0: 64 20 6f 66 66 0a 20 20 28 74 68 65 79 20 67 65  d off.  (they ge
a6f0: 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64 65 29 20  nerate no code) 
a700: 73 69 6e 63 65 20 74 75 72 6e 69 6e 67 20 74 68  since turning th
a710: 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69  em on makes SQLi
a720: 74 65 20 72 75 6e 20 61 70 70 72 6f 78 69 6d 61  te run approxima
a730: 74 65 6c 79 0a 20 20 74 68 72 65 65 20 74 69 6d  tely.  three tim
a740: 65 73 20 73 6c 6f 77 65 72 2e 20 20 42 75 74 20  es slower.  But 
a750: 66 6f 72 20 74 65 73 74 69 6e 67 20 61 6e 64 20  for testing and 
a760: 61 6e 61 6c 79 73 69 73 2c 20 69 74 20 69 73 20  analysis, it is 
a770: 75 73 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a 20  useful to turn. 
a780: 20 74 68 65 20 61 73 73 65 72 74 28 29 20 73 74   the assert() st
a790: 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54 68  atements on.  Th
a7a0: 65 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20 63  e SQLITE_DEBUG c
a7b0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
a7c0: 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e 0a 20 20  on does this..  
a7d0: 53 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73  SQLITE_DEBUG als
a7e0: 6f 20 74 75 72 6e 73 20 6f 6e 20 73 6f 6d 65 20  o turns on some 
a7f0: 6f 74 68 65 72 20 64 65 62 75 67 67 69 6e 67 20  other debugging 
a800: 66 65 61 74 75 72 65 73 2e 0a 7d 0a 0a 43 4f 4d  features..}..COM
a810: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a820: 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a  ITE_MEMDEBUG} {.
a830: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d    The SQLITE_MEM
a840: 44 45 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75  DEBUG option cau
a850: 73 65 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e  ses an instrumen
a860: 74 65 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e  ted .  [debuggin
a870: 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  g memory allocat
a880: 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64  or].  to be used
a890: 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   as the default 
a8a0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
a8b0: 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20   within SQLite. 
a8c0: 20 54 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e   The.  instrumen
a8d0: 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ted memory alloc
a8e0: 61 74 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20  ator checks for 
a8f0: 6d 69 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69  misuse of dynami
a900: 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a  cally allocated.
a910: 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70    memory.  Examp
a920: 6c 65 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e  les of misuse in
a930: 63 6c 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f  clude using memo
a940: 72 79 20 61 66 74 65 72 20 69 74 20 69 73 20 66  ry after it is f
a950: 72 65 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20  reed,.  writing 
a960: 6f 66 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20  off the ends of 
a970: 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
a980: 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d  ion, freeing mem
a990: 6f 72 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73  ory not previous
a9a0: 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72  ly.  obtained fr
a9b0: 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  om the memory al
a9c0: 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c  locator, or fail
a9d0: 69 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  ing to initializ
a9e0: 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61  e newly.  alloca
a9f0: 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c  ted memory..}..<
aa00: 2f 74 63 6c 3e 0a                                /tcl>.