Documentation Source Text

Hex Artifact Content
Login

Artifact 90b60fc2406e6ba9c0cfa2f7894a12edf7ac3816:


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 65 20  ode | exclusive 
0f70: 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 5d 20 61 6e  locking mode] an
0f80: 64 20 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66  d on the size of
0f90: 20 74 68 65 0a 20 20 77 72 69 74 65 2d 61 68 65   the.  write-ahe
0fa0: 61 64 20 6c 6f 67 20 66 69 6c 65 20 69 6e 20 5b  ad log file in [
0fb0: 57 41 4c 20 6d 6f 64 65 5d 2e 20 57 68 65 6e 20  WAL mode]. When 
0fc0: 74 68 69 73 20 0a 20 20 63 6f 6d 70 69 6c 65 2d  this .  compile-
0fd0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f  time option is o
0fe0: 6d 69 74 74 65 64 20 74 68 65 72 65 20 69 73 20  mitted there is 
0ff0: 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  no upper bound o
1000: 6e 20 74 68 65 0a 20 20 73 69 7a 65 20 6f 66 20  n the.  size of 
1010: 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75  the rollback jou
1020: 72 6e 61 6c 73 20 6f 72 20 77 72 69 74 65 2d 61  rnals or write-a
1030: 68 65 61 64 20 6c 6f 67 73 2e 20 20 0a 20 20 54  head logs.  .  T
1040: 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
1050: 73 69 7a 65 20 6c 69 6d 69 74 0a 20 20 63 61 6e  size limit.  can
1060: 20 62 65 20 63 68 61 6e 67 65 64 20 61 74 20 72   be changed at r
1070: 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  un-time using th
1080: 65 20 5b 6a 6f 75 72 6e 61 6c 5f 73 69 7a 65 5f  e [journal_size_
1090: 6c 69 6d 69 74 20 70 72 61 67 6d 61 5d 2e 0a 7d  limit pragma]..}
10a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
10b0: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
10c0: 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d 3c 69  _LOCKING_MODE=<i
10d0: 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c  >&lt;1 or 0&gt;<
10e0: 2f 69 3e 7d 20 7b 0a 20 20 49 66 20 73 65 74 20  /i>} {.  If set 
10f0: 74 6f 20 31 2c 20 74 68 65 6e 20 74 68 65 20 64  to 1, then the d
1100: 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f  efault [locking_
1110: 6d 6f 64 65 5d 20 69 73 20 73 65 74 20 74 6f 20  mode] is set to 
1120: 45 58 43 4c 55 53 49 56 45 2e 0a 20 20 49 66 20  EXCLUSIVE..  If 
1130: 6f 6d 69 74 74 65 64 20 6f 72 20 73 65 74 20 74  omitted or set t
1140: 6f 20 30 20 74 68 65 6e 20 74 68 65 20 64 65 66  o 0 then the def
1150: 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e 67 5f 6d 6f  ault [locking_mo
1160: 64 65 5d 20 69 73 20 4e 4f 52 4d 41 4c 2e 0a 7d  de] is NORMAL..}
1170: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1180: 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   {SQLITE_DEFAULT
1190: 5f 4d 45 4d 53 54 41 54 55 53 3d 3c 69 3e 26 6c  _MEMSTATUS=<i>&l
11a0: 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c 2f 69 3e  t;1 or 0&gt;</i>
11b0: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
11c0: 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65   is used to dete
11d0: 72 6d 69 6e 65 20 77 68 65 74 68 65 72 20 6f 72  rmine whether or
11e0: 20 6e 6f 74 20 74 68 65 20 66 65 61 74 75 72 65   not the feature
11f0: 73 20 65 6e 61 62 6c 65 64 20 61 6e 64 0a 20 20  s enabled and.  
1200: 64 69 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74  disabled using t
1210: 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1220: 5f 4d 45 4d 53 54 41 54 55 53 20 61 72 67 75 6d  _MEMSTATUS argum
1230: 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ent to [sqlite3_
1240: 63 6f 6e 66 69 67 28 29 5d 0a 20 20 61 72 65 20  config()].  are 
1250: 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
1260: 61 75 6c 74 2e 20 54 68 65 20 64 65 66 61 75 6c  ault. The defaul
1270: 74 20 76 61 6c 75 65 20 69 73 20 31 20 28 5b 53  t value is 1 ([S
1280: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1290: 53 54 41 54 55 53 5d 0a 20 20 72 65 6c 61 74 65  STATUS].  relate
12a0: 64 20 66 65 61 74 75 72 65 73 20 65 6e 61 62 6c  d features enabl
12b0: 65 64 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ed)..}..COMPILE_
12c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
12d0: 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45  EFAULT_PAGE_SIZE
12e0: 3d 3c 69 3e 26 6c 74 3b 62 79 74 65 73 26 67 74  =<i>&lt;bytes&gt
12f0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
1300: 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f  macro is used to
1310: 20 73 65 74 20 74 68 65 20 64 65 66 61 75 6c 74   set the default
1320: 20 70 61 67 65 2d 73 69 7a 65 20 75 73 65 64 20   page-size used 
1330: 77 68 65 6e 20 61 0a 20 20 64 61 74 61 62 61 73  when a.  databas
1340: 65 20 69 73 20 63 72 65 61 74 65 64 2e 20 54 68  e is created. Th
1350: 65 20 76 61 6c 75 65 20 61 73 73 69 67 6e 65 64  e value assigned
1360: 20 6d 75 73 74 20 62 65 20 61 20 70 6f 77 65 72   must be a power
1370: 20 6f 66 20 32 2e 20 54 68 65 0a 20 20 64 65 66   of 2. The.  def
1380: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31 30  ault value is 10
1390: 32 34 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d  24. The compile-
13a0: 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d 61 79  time default may
13b0: 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 61   be overridden a
13c0: 74 20 0a 20 20 72 75 6e 74 69 6d 65 20 62 79 20  t .  runtime by 
13d0: 74 68 65 20 5b 50 52 41 47 4d 41 20 70 61 67 65  the [PRAGMA page
13e0: 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 0a  _size] command..
13f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
1400: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
1410: 54 5f 54 45 4d 50 5f 43 41 43 48 45 5f 53 49 5a  T_TEMP_CACHE_SIZ
1420: 45 3d 3c 69 3e 26 6c 74 3b 70 61 67 65 73 26 67  E=<i>&lt;pages&g
1430: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
1440: 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68 65 20   macro sets the 
1450: 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20  default size of 
1460: 74 68 65 20 70 61 67 65 2d 63 61 63 68 65 20 66  the page-cache f
1470: 6f 72 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  or temporary fil
1480: 65 73 0a 20 20 63 72 65 61 74 65 64 20 62 79 20  es.  created by 
1490: 53 51 4c 69 74 65 20 74 6f 20 73 74 6f 72 65 20  SQLite to store 
14a0: 69 6e 74 65 72 6d 65 64 69 61 74 65 20 72 65 73  intermediate res
14b0: 75 6c 74 73 2c 20 69 6e 20 70 61 67 65 73 2e 20  ults, in pages. 
14c0: 49 74 20 64 6f 65 73 0a 20 20 6e 6f 74 20 61 66  It does.  not af
14d0: 66 65 63 74 20 74 68 65 20 70 61 67 65 2d 63 61  fect the page-ca
14e0: 63 68 65 20 66 6f 72 20 74 68 65 20 74 65 6d 70  che for the temp
14f0: 20 64 61 74 61 62 61 73 65 2c 20 77 68 65 72 65   database, where
1500: 20 74 61 62 6c 65 73 20 63 72 65 61 74 65 64 0a   tables created.
1510: 20 20 75 73 69 6e 67 20 5b 43 52 45 41 54 45 20    using [CREATE 
1520: 54 41 42 4c 45 20 7c 20 43 52 45 41 54 45 20 54  TABLE | CREATE T
1530: 45 4d 50 20 54 41 42 4c 45 5d 20 61 72 65 20 73  EMP TABLE] are s
1540: 74 6f 72 65 64 2e 20 54 68 65 20 64 65 66 61 75  tored. The defau
1550: 6c 74 20 76 61 6c 75 65 0a 20 20 69 73 20 35 30  lt value.  is 50
1560: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
1570: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1580: 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45  AULT_WAL_AUTOCHE
1590: 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26 6c 74 3b 70  CKPOINT=<i>&lt;p
15a0: 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ages&gt;</i>} {.
15b0: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
15c0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61  s the default pa
15d0: 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65  ge count for the
15e0: 20 5b 57 41 4c 5d 0a 20 20 5b 63 68 65 63 6b 70   [WAL].  [checkp
15f0: 6f 69 6e 74 69 6e 67 20 7c 20 61 75 74 6f 6d 61  ointing | automa
1600: 74 69 63 20 63 68 65 63 6b 70 6f 69 6e 74 69 6e  tic checkpointin
1610: 67 5d 20 66 65 61 74 75 72 65 2e 20 20 49 66 20  g] feature.  If 
1620: 75 6e 73 70 65 63 69 66 69 65 64 2c 0a 20 20 74  unspecified,.  t
1630: 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20  he default page 
1640: 63 6f 75 6e 74 20 69 73 20 31 30 30 30 2e 0a 7d  count is 1000..}
1650: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1660: 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48   {SQLITE_MAX_SCH
1670: 45 4d 41 5f 52 45 54 52 59 3d 3c 69 3e 4e 3c 2f  EMA_RETRY=<i>N</
1680: 69 3e 7d 20 7b 0a 20 20 57 68 65 6e 65 76 65 72  i>} {.  Whenever
1690: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
16a0: 68 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 70 72  hema changes, pr
16b0: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
16c0: 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  s are automatica
16d0: 6c 6c 79 0a 20 20 72 65 70 72 65 70 61 72 65 64  lly.  reprepared
16e0: 20 74 6f 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20   to accommodate 
16f0: 74 68 65 20 6e 65 77 20 73 63 68 65 6d 61 2e 20  the new schema. 
1700: 20 54 68 65 72 65 20 69 73 20 61 20 72 61 63 65   There is a race
1710: 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65 0a   condition here.
1720: 20 20 69 6e 20 74 68 61 74 20 69 66 20 6f 6e 65    in that if one
1730: 20 74 68 72 65 61 64 20 69 73 20 63 6f 6e 73 74   thread is const
1740: 61 6e 74 6c 79 20 63 68 61 6e 67 69 6e 67 20 74  antly changing t
1750: 68 65 20 73 63 68 65 6d 61 2c 20 61 6e 6f 74 68  he schema, anoth
1760: 65 72 20 74 68 72 65 61 64 0a 20 20 6d 69 67 68  er thread.  migh
1770: 74 20 73 70 69 6e 20 6f 6e 20 72 65 70 61 72 73  t spin on repars
1780: 65 73 20 61 6e 64 20 72 65 70 72 65 70 61 72 61  es and reprepara
1790: 74 69 6f 6e 73 20 6f 66 20 61 20 70 72 65 70 61  tions of a prepa
17a0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  red statement an
17b0: 64 0a 20 20 6e 65 76 65 72 20 67 65 74 20 61 6e  d.  never get an
17c0: 79 20 72 65 61 6c 20 77 6f 72 6b 20 64 6f 6e 65  y real work done
17d0: 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
17e0: 72 20 70 72 65 76 65 6e 74 73 20 61 6e 20 69 6e  r prevents an in
17f0: 66 69 6e 69 74 65 20 6c 6f 6f 70 0a 20 20 62 79  finite loop.  by
1800: 20 66 6f 72 63 69 6e 67 20 74 68 65 20 73 70 69   forcing the spi
1810: 6e 6e 69 6e 67 20 74 68 72 65 61 64 20 74 6f 20  nning thread to 
1820: 67 69 76 65 20 75 70 20 61 66 74 65 72 20 61 20  give up after a 
1830: 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  fixed number of 
1840: 61 74 74 65 6d 70 74 73 0a 20 20 61 74 20 72 65  attempts.  at re
1850: 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 70 72  compiling the pr
1860: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
1870: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73  .  The default s
1880: 65 74 74 69 6e 67 20 69 73 20 35 20 77 68 69 63  etting is 5 whic
1890: 68 20 69 73 0a 20 20 6d 6f 72 65 20 74 68 61 6e  h is.  more than
18a0: 20 61 64 65 71 75 61 74 65 20 66 6f 72 20 6d 6f   adequate for mo
18b0: 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  st applications.
18c0: 20 20 42 75 74 20 69 6e 20 73 6f 6d 65 20 6f 62    But in some ob
18d0: 73 63 75 72 65 20 63 61 73 65 73 2c 20 69 74 0a  scure cases, it.
18e0: 20 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 72    is useful to r
18f0: 61 69 73 65 20 74 68 69 73 20 70 61 72 61 6d 65  aise this parame
1900: 74 65 72 20 74 6f 20 31 30 30 20 6f 72 20 6d 6f  ter to 100 or mo
1910: 72 65 20 74 6f 20 70 72 65 76 65 6e 74 20 73 70  re to prevent sp
1920: 75 72 69 6f 75 73 0a 20 20 5b 53 51 4c 49 54 45  urious.  [SQLITE
1930: 5f 53 43 48 45 4d 41 5d 20 65 72 72 6f 72 73 20  _SCHEMA] errors 
1940: 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 5b 73 71  when running [sq
1950: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 0a 7d  lite3_step()]..}
1960: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1970: 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52 53 41   {SQLITE_POWERSA
1980: 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c 69 3e  FE_OVERWRITE=<i>
1990: 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f  &lt;0 or 1&gt;</
19a0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  i>} {.  This opt
19b0: 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20  ion changes the 
19c0: 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70 74 69  default assumpti
19d0: 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65 72 73  on about [powers
19e0: 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d 0a 20  afe overwrite]. 
19f0: 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72 6c 79   for the underly
1a00: 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d 73 20  ing filesystems 
1a10: 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61 6e 64  for the unix and
1a20: 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65 73 5d   windows [VFSes]
1a30: 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51 4c 49  ..  Setting SQLI
1a40: 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45  TE_POWERSAFE_OVE
1a50: 52 57 52 49 54 45 20 74 6f 20 31 20 63 61 75 73  RWRITE to 1 caus
1a60: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61 73 73  es SQLite to ass
1a70: 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70 6c 69  ume that.  appli
1a80: 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77 72 69  cation-level wri
1a90: 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67  tes cannot chang
1aa0: 65 73 20 62 79 74 65 73 20 6f 75 74 73 69 64 65  es bytes outside
1ab0: 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a 20 20   the range of.  
1ac0: 62 79 74 65 73 20 77 72 69 74 74 65 6e 20 65 76  bytes written ev
1ad0: 65 6e 20 69 66 20 74 68 65 20 77 72 69 74 65 20  en if the write 
1ae0: 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65 66 6f  occurs just befo
1af0: 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 2e  re a power loss.
1b00: 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45 5f 50  .  With SQLITE_P
1b10: 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
1b20: 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53 51 4c  TE set to 0, SQL
1b30: 69 74 65 20 61 73 73 75 6d 65 73 20 74 68 61 74  ite assumes that
1b40: 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73 20 69   other.  bytes i
1b50: 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63 74 6f  n the same secto
1b60: 72 20 77 69 74 68 20 61 20 77 72 69 74 74 65 6e  r with a written
1b70: 20 62 79 74 65 20 6d 69 67 68 74 20 62 65 20 63   byte might be c
1b80: 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64 61 6d  hanged or .  dam
1b90: 61 67 65 64 20 62 79 20 61 20 70 6f 77 65 72 20  aged by a power 
1ba0: 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  loss..}..COMPILE
1bb0: 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41 43 4b  _OPTION {YYSTACK
1bc0: 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78  DEPTH=<i>&lt;max
1bd0: 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e 7d 20  _depth&gt;</i>} 
1be0: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73  {.  This macro s
1bf0: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
1c00: 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c 41 4c  depth of the LAL
1c10: 52 28 31 29 20 73 74 61 63 6b 20 75 73 65 64 20  R(1) stack used 
1c20: 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70 61 72  by.  the SQL par
1c30: 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74  ser within SQLit
1c40: 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  e.  The default 
1c50: 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20 20 41  value is 100.  A
1c60: 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70 6c 69   typical.  appli
1c70: 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73 65 20  cation will use 
1c80: 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75 74 20  less than about 
1c90: 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74 68 65  20 levels of the
1ca0: 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65 6c 6f   stack..  Develo
1cb0: 70 65 72 73 20 77 68 6f 73 65 20 61 70 70 6c 69  pers whose appli
1cc0: 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69 6e 20  cations contain 
1cd0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74  SQL statements t
1ce0: 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f 72 65  hat .  need more
1cf0: 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52 28 31   than 100 LALR(1
1d00: 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65 73 20  ) stack entries 
1d10: 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73 6c 79  should seriously
1d20: 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65 66 61  .  consider refa
1d30: 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20 53 51  ctoring their SQ
1d40: 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b 65 6c  L as it is likel
1d50: 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62 65 79  y to be well bey
1d60: 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c 69 74  ond.  the abilit
1d70: 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e 20 74  y of any human t
1d80: 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a  o comprehend..}.
1d90: 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e 32 20  </tcl>..<h2>1.2 
1da0: 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 53  Options To Set S
1db0: 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a  ize Limits</h2>.
1dc0: 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 63 6f  .<p>There are co
1dd0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1de0: 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73 65 74  ns that will set
1df0: 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a 6f 6e   upper bounds.on
1e00: 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20 76 61   the sizes of va
1e10: 72 69 6f 75 73 20 73 74 72 75 63 74 75 72 65 73  rious structures
1e20: 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65   in SQLite.  The
1e30: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70   compile-time.op
1e40: 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79 20 73  tions normally s
1e50: 65 74 20 61 20 68 61 72 64 20 75 70 70 65 72 20  et a hard upper 
1e60: 62 6f 75 6e 64 20 74 68 61 74 20 63 61 6e 20 62  bound that can b
1e70: 65 20 63 68 61 6e 67 65 64 0a 61 74 20 72 75 6e  e changed.at run
1e80: 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76 69 64  -time on individ
1e90: 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f  ual [database co
1ea0: 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69 6e 67  nnections] using
1eb0: 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c 69   the.[sqlite3_li
1ec0: 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65  mit()] interface
1ed0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f  .</p>..<p>The co
1ee0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1ef0: 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75  ns for setting u
1f00: 70 70 65 72 20 62 6f 75 6e 64 73 20 61 72 65 0a  pper bounds are.
1f10: 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75 6d 65  [limits | docume
1f20: 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c 79 5d  nted separately]
1f30: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
1f40: 20 69 73 20 61 20 6c 69 73 74 20 6f 66 0a 74 68   is a list of.th
1f50: 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74 74  e available sett
1f60: 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a  ings:</p>..<ul>.
1f70: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
1f80: 5f 41 54 54 41 43 48 45 44 5d 20 20 3c 2f 6c 69  _ATTACHED]  </li
1f90: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
1fa0: 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69  AX_COLUMN]  </li
1fb0: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
1fc0: 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45  AX_COMPOUND_SELE
1fd0: 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  CT]  </li>.<li> 
1fe0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52  [SQLITE_MAX_EXPR
1ff0: 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c  _DEPTH]  </li>.<
2000: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
2010: 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20 20 3c  FUNCTION_ARG]  <
2020: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
2030: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 20 3c  E_MAX_LENGTH]  <
2040: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
2050: 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45  E_MAX_LIKE_PATTE
2060: 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69  RN_LENGTH]  </li
2070: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
2080: 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d 20 20  AX_PAGE_COUNT]  
2090: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
20a0: 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54  TE_MAX_SQL_LENGT
20b0: 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  H]  </li>.<li> [
20c0: 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41  SQLITE_MAX_VARIA
20d0: 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c  BLE_NUMBER]  </l
20e0: 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d  i>.</ul>..<a nam
20f0: 65 3d 22 63 6f 6e 74 72 6f 6c 66 65 61 74 75 72  e="controlfeatur
2100: 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 33  es"></a>.<h2>1.3
2110: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43 6f 6e 74   Options To Cont
2120: 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67 20 43 68  rol Operating Ch
2130: 61 72 61 63 74 65 72 69 73 74 69 63 73 3c 2f 68  aracteristics</h
2140: 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  2>..<tcl>.COMPIL
2150: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2160: 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f  _4_BYTE_ALIGNED_
2170: 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d  MALLOC} {.  On m
2180: 6f 73 74 20 73 79 73 74 65 6d 73 2c 20 74 68 65  ost systems, the
2190: 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73 74 65 6d   malloc() system
21a0: 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 61 20   call returns a 
21b0: 62 75 66 66 65 72 20 74 68 61 74 20 69 73 0a 20  buffer that is. 
21c0: 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38   aligned to an 8
21d0: 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e 20  -byte boundary. 
21e0: 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20 73 79 73   But on some sys
21f0: 74 65 6d 73 20 28 65 78 3a 20 77 69 6e 64 6f 77  tems (ex: window
2200: 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20 20 72 65  s) malloc().  re
2210: 74 75 72 6e 73 20 34 2d 62 79 74 65 20 61 6c 69  turns 4-byte ali
2220: 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 20 54  gned pointer.  T
2230: 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  his compile-time
2240: 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65 20   option must be 
2250: 75 73 65 64 0a 20 20 6f 6e 20 73 79 73 74 65 6d  used.  on system
2260: 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 34 2d  s that return 4-
2270: 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f 69  byte aligned poi
2280: 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f  nters from mallo
2290: 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  c()..}..COMPILE_
22a0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 43  OPTION {SQLITE_C
22b0: 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c 49  ASE_SENSITIVE_LI
22c0: 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  KE} {.  If this 
22d0: 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e  option is presen
22e0: 74 2c 20 74 68 65 6e 20 74 68 65 20 62 75 69 6c  t, then the buil
22f0: 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65 72  t-in [LIKE] oper
2300: 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20 63  ator will be.  c
2310: 61 73 65 20 73 65 6e 73 69 74 69 76 65 2e 20 20  ase sensitive.  
2320: 54 68 69 73 20 73 61 6d 65 20 65 66 66 65 63 74  This same effect
2330: 20 63 61 6e 20 62 65 20 61 63 68 69 65 76 65 64   can be achieved
2340: 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69   at run-time usi
2350: 6e 67 0a 20 20 74 68 65 20 5b 63 61 73 65 5f 73  ng.  the [case_s
2360: 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70 72  ensitive_like pr
2370: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
2380: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2390: 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f 57  _DIRECT_OVERFLOW
23a0: 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68 65 6e 20  _READ} {.  When 
23b0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
23c0: 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65 6e 74 20  resent, content 
23d0: 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a 20 20 5b  contained in.  [
23e0: 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73 5d 20  overflow pages] 
23f0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
2400: 66 69 6c 65 20 69 73 20 72 65 61 64 20 64 69 72  file is read dir
2410: 65 63 74 6c 79 20 66 72 6f 6d 20 64 69 73 6b 2c  ectly from disk,
2420: 0a 20 20 62 79 70 61 73 73 69 6e 67 20 74 68 65  .  bypassing the
2430: 20 5b 70 61 67 65 20 63 61 63 68 65 5d 2c 20 64   [page cache], d
2440: 75 72 69 6e 67 20 72 65 61 64 20 74 72 61 6e 73  uring read trans
2450: 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20 61 70 70  actions.  In app
2460: 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74 68 61 74  lications.  that
2470: 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 72 65 61   do a lot of rea
2480: 64 73 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f 42  ds of large BLOB
2490: 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d  s, this option m
24a0: 69 67 68 74 20 69 6d 70 72 6f 76 65 20 72 65 61  ight improve rea
24b0: 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  d.  performance.
24c0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
24d0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56 45 5f  ON {SQLITE_HAVE_
24e0: 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74 68  ISNAN} {.  If th
24f0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
2500: 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69 74  sent, then SQLit
2510: 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 69  e will use the i
2520: 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20  snan() function 
2530: 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73 74 65  from.  the syste
2540: 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79 2e 20  m math library. 
2550: 20 57 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70   Without this op
2560: 74 69 6f 6e 20 28 74 68 65 20 64 65 66 61 75 6c  tion (the defaul
2570: 74 20 62 65 68 61 76 69 6f 72 29 0a 20 20 53 51  t behavior).  SQ
2580: 4c 69 74 65 20 75 73 65 73 20 69 74 73 20 6f 77  Lite uses its ow
2590: 6e 20 69 6e 74 65 72 6e 61 6c 20 69 6d 70 6c 65  n internal imple
25a0: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69 73 6e  mentation of isn
25b0: 61 6e 28 29 2e 20 20 53 51 4c 69 74 65 20 75 73  an().  SQLite us
25c0: 65 73 0a 20 20 69 74 73 20 6f 77 6e 20 69 6e 74  es.  its own int
25d0: 65 72 6e 61 6c 20 69 73 6e 61 6e 28 29 20 69 6d  ernal isnan() im
25e0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 62 79 20  plementation by 
25f0: 64 65 66 61 75 6c 74 20 62 65 63 61 75 73 65 20  default because 
2600: 6f 66 20 70 61 73 74 0a 20 20 70 72 6f 62 6c 65  of past.  proble
2610: 6d 73 20 77 69 74 68 20 73 79 73 74 65 6d 20 69  ms with system i
2620: 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e 73  snan() functions
2630: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2640: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f  ION {SQLITE_OS_O
2650: 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72  THER=<i>&lt;0 or
2660: 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   1&gt;</i>} {.  
2670: 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  The option cause
2680: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
2690: 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f 70   its built-in op
26a0: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69  erating system i
26b0: 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f 72 20  nterfaces.  for 
26c0: 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20 61  Unix, Windows, a
26d0: 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20 72 65  nd OS/2.  The re
26e0: 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72 79 20  sulting library 
26f0: 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65 66  will have no def
2700: 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ault.  [sqlite3_
2710: 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e 67 20  vfs | operating 
2720: 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65  system interface
2730: 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  ].  Applications
2740: 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73 71 6c   must use.  [sql
2750: 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65  ite3_vfs_registe
2760: 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74 65 72  r()] to register
2770: 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
2780: 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f 72 65  interface before
2790: 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74 65 2e  .  using SQLite.
27a0: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d    Applications m
27b0: 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c 79 20  ust also supply 
27c0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
27d0: 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74  for the.  [sqlit
27e0: 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61 6e  e3_os_init()] an
27f0: 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  d [sqlite3_os_en
2800: 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  d()] interfaces.
2810: 20 20 54 68 65 20 75 73 75 61 6c 20 70 72 61 63    The usual prac
2820: 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20 74 68  tice.  is for th
2830: 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71 6c 69  e supplied [sqli
2840: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 74  te3_os_init()] t
2850: 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  o invoke [sqlite
2860: 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29  3_vfs_register()
2870: 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69 6c 6c  ]..  SQLite will
2880: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
2890: 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 6f  nvoke [sqlite3_o
28a0: 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e 20 69  s_init()] when i
28b0: 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a 0a  t initializes...
28c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
28d0: 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 64 20   typically used 
28e0: 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 53 51  when building SQ
28f0: 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d 62 65  Lite for an embe
2900: 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d 20  dded.  platform 
2910: 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20 6f 70  with a custom op
2920: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a  erating system..
2930: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2940: 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55 52 45  N {SQLITE_SECURE
2950: 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69  _DELETE} {.  Thi
2960: 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  s compile-time o
2970: 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ption changes th
2980: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
2990: 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65 63 75  g of the.  [secu
29a0: 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d 61  re_delete pragma
29b0: 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  ].  When this op
29c0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
29d0: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
29e0: 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f 66  defaults.  to of
29f0: 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  f.  When this op
2a00: 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c  tion is present,
2a10: 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 64   secure_delete d
2a20: 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a  efaults to on...
2a30: 20 20 54 68 65 20 73 65 63 75 72 65 5f 64 65 6c    The secure_del
2a40: 65 74 65 20 73 65 74 74 69 6e 67 20 63 61 75 73  ete setting caus
2a50: 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e 74 65  es deleted conte
2a60: 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77 72 69  nt to be overwri
2a70: 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65 72 6f  tten with.  zero
2a80: 73 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 73  s.  There is a s
2a90: 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65  mall performance
2aa0: 20 70 65 6e 61 6c 74 79 20 66 6f 72 20 74 68 69   penalty for thi
2ab0: 73 20 73 69 6e 63 65 20 61 64 64 69 74 69 6f 6e  s since addition
2ac0: 61 6c 20 49 2f 4f 0a 20 20 6d 75 73 74 20 6f 63  al I/O.  must oc
2ad0: 63 75 72 2e 20 20 4f 6e 20 74 68 65 20 6f 74 68  cur.  On the oth
2ae0: 65 72 20 68 61 6e 64 2c 20 73 65 63 75 72 65 5f  er hand, secure_
2af0: 64 65 6c 65 74 65 20 63 61 6e 20 70 72 65 76 65  delete can preve
2b00: 6e 74 20 73 65 6e 73 69 74 69 76 65 20 0a 20 20  nt sensitive .  
2b10: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d  information from
2b20: 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20 75 6e   lingering in un
2b30: 75 73 65 64 20 70 61 72 74 73 20 6f 66 20 74 68  used parts of th
2b40: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2b50: 61 66 74 65 72 20 69 74 0a 20 20 68 61 73 20 61  after it.  has a
2b60: 6c 6c 65 67 65 64 6c 79 20 62 65 65 6e 20 64 65  llegedly been de
2b70: 6c 65 74 65 64 2e 20 20 53 65 65 20 74 68 65 20  leted.  See the 
2b80: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e  documentation on
2b90: 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64   the.  [secure_d
2ba0: 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 20 66 6f  elete pragma] fo
2bb0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
2bc0: 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d  ormation..}..COM
2bd0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
2be0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 3c  ITE_THREADSAFE=<
2bf0: 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72 20  i>&lt;0 or 1 or 
2c00: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  2&gt;</i>} {.  T
2c10: 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72  his option contr
2c20: 6f 6c 73 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ols whether or n
2c30: 6f 74 20 63 6f 64 65 20 69 73 20 69 6e 63 6c 75  ot code is inclu
2c40: 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20 74 6f  ded in SQLite to
2c50: 0a 20 20 65 6e 61 62 6c 65 20 69 74 20 74 6f 20  .  enable it to 
2c60: 6f 70 65 72 61 74 65 20 73 61 66 65 6c 79 20 69  operate safely i
2c70: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
2c80: 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20  d environment.  
2c90: 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20 69 73  The.  default is
2ca0: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2cb0: 46 45 3d 31 20 77 68 69 63 68 20 69 73 20 73 61  FE=1 which is sa
2cc0: 66 65 20 66 6f 72 20 75 73 65 20 69 6e 20 61 20  fe for use in a 
2cd0: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20 20  multithreaded.  
2ce0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 57 68  environment.  Wh
2cf0: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
2d00: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
2d10: 46 45 3d 30 20 61 6c 6c 20 6d 75 74 65 78 69 6e  FE=0 all mutexin
2d20: 67 20 63 6f 64 65 0a 20 20 69 73 20 6f 6d 69 74  g code.  is omit
2d30: 74 65 64 20 61 6e 64 20 69 74 20 69 73 20 75 6e  ted and it is un
2d40: 73 61 66 65 20 74 6f 20 75 73 65 20 53 51 4c 69  safe to use SQLi
2d50: 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  te in a multithr
2d60: 65 61 64 65 64 20 70 72 6f 67 72 61 6d 2e 0a 20  eaded program.. 
2d70: 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77   When compiled w
2d80: 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41  ith SQLITE_THREA
2d90: 44 53 41 46 45 3d 32 2c 20 53 51 4c 69 74 65 20  DSAFE=2, SQLite 
2da0: 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
2db0: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20   multithreaded. 
2dc0: 20 70 72 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e 67   program so long
2dd0: 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72 65 61   as no two threa
2de0: 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  ds attempt to us
2df0: 65 20 74 68 65 20 73 61 6d 65 0a 20 20 5b 64 61  e the same.  [da
2e00: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e10: 6e 5d 20 28 6f 72 20 61 6e 79 20 5b 70 72 65 70  n] (or any [prep
2e20: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d  ared statements]
2e30: 20 64 65 72 69 76 65 64 20 66 72 6f 6d 0a 20 20   derived from.  
2e40: 74 68 61 74 20 64 61 74 61 62 61 73 65 20 63 6f  that database co
2e50: 6e 6e 65 63 74 69 6f 6e 29 20 61 74 20 74 68 65  nnection) at the
2e60: 20 73 61 6d 65 20 74 69 6d 65 2e 0a 0a 20 20 54   same time...  T
2e70: 6f 20 70 75 74 20 69 74 20 61 6e 6f 74 68 65 72  o put it another
2e80: 20 77 61 79 2c 20 53 51 4c 49 54 45 5f 54 48 52   way, SQLITE_THR
2e90: 45 41 44 53 41 46 45 3d 31 20 73 65 74 73 20 74  EADSAFE=1 sets t
2ea0: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74 68  he default.  [th
2eb0: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f  reading mode] to
2ec0: 20 53 65 72 69 61 6c 69 7a 65 64 2e 20 20 53 51   Serialized.  SQ
2ed0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
2ee0: 32 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75  2 sets the defau
2ef0: 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67 20  lt.  [threading 
2f00: 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74  mode] to Multi-t
2f10: 68 72 65 61 64 65 64 2e 20 20 41 6e 64 20 53 51  hreaded.  And SQ
2f20: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
2f30: 30 20 73 65 74 73 20 74 68 65 0a 20 20 5b 74 68  0 sets the.  [th
2f40: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f  reading mode] to
2f50: 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 65 64   Single-threaded
2f60: 2e 0a 0a 20 20 54 68 65 20 76 61 6c 75 65 20 6f  ...  The value o
2f70: 66 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  f SQLITE_THREADS
2f80: 41 46 45 20 63 61 6e 20 62 65 20 64 65 74 65 72  AFE can be deter
2f90: 6d 69 6e 65 64 20 61 74 20 72 75 6e 2d 74 69 6d  mined at run-tim
2fa0: 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b 73  e.  using the [s
2fb0: 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61 66  qlite3_threadsaf
2fc0: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a  e()] interface..
2fd0: 0a 20 20 57 68 65 6e 20 53 51 4c 69 74 65 20 68  .  When SQLite h
2fe0: 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64  as been compiled
2ff0: 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52   with SQLITE_THR
3000: 45 41 44 53 41 46 45 3d 31 20 6f 72 0a 20 20 53  EADSAFE=1 or.  S
3010: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
3020: 3d 32 20 74 68 65 6e 20 74 68 65 20 5b 74 68 72  =2 then the [thr
3030: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 0a 20 20 63  eading mode].  c
3040: 61 6e 20 62 65 20 61 6c 74 65 72 65 64 20 61 74  an be altered at
3050: 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20   run-time using 
3060: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  the [sqlite3_con
3070: 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65  fig()] interface
3080: 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68   together.  with
3090: 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 76 65   one of these ve
30a0: 72 62 73 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c  rbs:..  <ul>.  <
30b0: 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  li>[SQLITE_CONFI
30c0: 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 0a  G_SINGLETHREAD].
30d0: 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f    <li>[SQLITE_CO
30e0: 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44  NFIG_MULTITHREAD
30f0: 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f  ].  <li>[SQLITE_
3100: 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45  CONFIG_SERIALIZE
3110: 44 5d 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68  D].  </ul>..  Th
3120: 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e  e [SQLITE_OPEN_N
3130: 4f 4d 55 54 45 58 5d 20 61 6e 64 0a 20 20 5b 53  OMUTEX] and.  [S
3140: 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d  QLITE_OPEN_FULLM
3150: 55 54 45 58 5d 20 66 6c 61 67 73 20 74 6f 20 5b  UTEX] flags to [
3160: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
3170: 29 5d 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75  )] can also be u
3180: 73 65 64 0a 20 20 74 6f 20 61 64 6a 75 73 74 20  sed.  to adjust 
3190: 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  the [threading m
31a0: 6f 64 65 5d 20 6f 66 20 69 6e 64 69 76 69 64 75  ode] of individu
31b0: 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  al [database con
31c0: 6e 65 63 74 69 6f 6e 73 5d 0a 20 20 61 74 20 72  nections].  at r
31d0: 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65  un-time...  Note
31e0: 20 74 68 61 74 20 77 68 65 6e 20 53 51 4c 69 74   that when SQLit
31f0: 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
3200: 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  th SQLITE_THREAD
3210: 53 41 46 45 3d 30 2c 20 74 68 65 20 63 6f 64 65  SAFE=0, the code
3220: 0a 20 20 74 6f 20 6d 61 6b 65 20 53 51 4c 69 74  .  to make SQLit
3230: 65 20 74 68 72 65 61 64 73 61 66 65 20 69 73 20  e threadsafe is 
3240: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
3250: 20 62 75 69 6c 64 2e 20 20 57 68 65 6e 20 74 68   build.  When th
3260: 69 73 20 6f 63 63 75 72 73 2c 0a 20 20 69 74 20  is occurs,.  it 
3270: 69 73 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f  is impossible to
3280: 20 63 68 61 6e 67 65 20 74 68 65 20 5b 74 68 72   change the [thr
3290: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 74 20  eading mode] at 
32a0: 73 74 61 72 74 2d 74 69 6d 65 20 6f 72 20 72 75  start-time or ru
32b0: 6e 2d 74 69 6d 65 2e 0a 0a 20 20 53 65 65 20 74  n-time...  See t
32c0: 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
32d0: 64 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  de] documentatio
32e0: 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  n for additional
32f0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f   information.  o
3300: 6e 20 61 73 70 65 63 74 73 20 6f 66 20 75 73 69  n aspects of usi
3310: 6e 67 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d  ng SQLite in a m
3320: 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e 76  ultithreaded env
3330: 69 72 6f 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d  ironment..}..COM
3340: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3350: 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 3c  ITE_TEMP_STORE=<
3360: 69 3e 26 6c 74 3b 30 20 74 68 72 6f 75 67 68 20  i>&lt;0 through 
3370: 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  3&gt;</i>} {.  T
3380: 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72  his option contr
3390: 6f 6c 73 20 77 68 65 74 68 65 72 20 74 65 6d 70  ols whether temp
33a0: 6f 72 61 72 79 20 66 69 6c 65 73 20 61 72 65 20  orary files are 
33b0: 73 74 6f 72 65 64 20 6f 6e 20 64 69 73 6b 20 6f  stored on disk o
33c0: 72 0a 20 20 69 6e 20 6d 65 6d 6f 72 79 2e 20 20  r.  in memory.  
33d0: 54 68 65 20 6d 65 61 6e 69 6e 67 73 20 66 6f 72  The meanings for
33e0: 20 76 61 72 69 6f 75 73 20 73 65 74 74 69 6e 67   various setting
33f0: 73 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c  s of this compil
3400: 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20  e-time.  option 
3410: 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a  are as follows:.
3420: 0a 20 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61  .  <table cellpa
3430: 64 64 69 6e 67 3d 22 32 22 20 62 6f 72 64 65 72  dding="2" border
3440: 3d 22 31 22 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e  ="1">.  <tr><th>
3450: 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52  SQLITE_TEMP_STOR
3460: 45 3c 2f 74 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e  E</th><th>Meanin
3470: 67 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74  g</th></tr>.  <t
3480: 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  r><td align="cen
3490: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41  ter">0</td><td>A
34a0: 6c 77 61 79 73 20 75 73 65 20 74 65 6d 70 6f 72  lways use tempor
34b0: 61 72 79 20 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f  ary files</td></
34c0: 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c  tr>.  <tr><td al
34d0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f  ign="center">1</
34e0: 74 64 3e 3c 74 64 3e 55 73 65 20 66 69 6c 65 73  td><td>Use files
34f0: 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 20   by default but 
3500: 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41  allow the.  [PRA
3510: 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20  GMA temp_store] 
3520: 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72  command to overr
3530: 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20  ide</td></tr>.  
3540: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  <tr><td align="c
3550: 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64  enter">2</td><td
3560: 3e 55 73 65 20 6d 65 6d 6f 72 79 20 62 79 20 64  >Use memory by d
3570: 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77  efault but allow
3580: 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74   the.  [PRAGMA t
3590: 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61  emp_store] comma
35a0: 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f  nd to override</
35b0: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  td></tr>.  <tr><
35c0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
35d0: 22 3e 33 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61  ">3</td><td>Alwa
35e0: 79 73 20 75 73 65 20 6d 65 6d 6f 72 79 3c 2f 74  ys use memory</t
35f0: 64 3e 3c 2f 74 72 3e 0a 20 20 3c 2f 74 61 62 6c  d></tr>.  </tabl
3600: 65 3e 0a 0a 20 20 54 68 65 20 64 65 66 61 75 6c  e>..  The defaul
3610: 74 20 73 65 74 74 69 6e 67 20 69 73 20 31 2e 20  t setting is 1. 
3620: 20 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 69   .  Additional i
3630: 6e 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62  nformation can b
3640: 65 20 66 6f 75 6e 64 20 69 6e 20 5b 74 65 6d 70  e found in [temp
3650: 73 74 6f 72 65 20 7c 20 74 65 6d 70 66 69 6c 65  store | tempfile
3660: 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50  s.html]..}..COMP
3670: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3680: 54 45 5f 55 53 45 5f 55 52 49 7d 20 7b 0a 20 20  TE_USE_URI} {.  
3690: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
36a0: 65 73 20 74 68 65 20 5b 55 52 49 20 66 69 6c 65  es the [URI file
36b0: 6e 61 6d 65 5d 20 70 72 6f 63 65 73 73 20 6c 6f  name] process lo
36c0: 67 69 63 20 74 6f 20 62 65 20 65 6e 61 62 6c 65  gic to be enable
36d0: 64 20 62 79 20 0a 20 20 64 65 66 61 75 6c 74 2e  d by .  default.
36e0: 20 20 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61    .}..</tcl>..<a
36f0: 20 6e 61 6d 65 3d 22 65 6e 61 62 6c 65 66 65 61   name="enablefea
3700: 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  tures"></a>.<h2>
3710: 31 2e 34 20 4f 70 74 69 6f 6e 73 20 54 6f 20 45  1.4 Options To E
3720: 6e 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e  nable Features N
3730: 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f  ormally Turned O
3740: 66 66 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43  ff</h2>..<tcl>.C
3750: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3760: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45  QLITE_ALLOW_COVE
3770: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 3d  RING_INDEX_SCAN=
3780: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74  <i>&lt;0 or 1&gt
3790: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
37a0: 43 2d 70 72 65 70 72 6f 63 65 73 73 20 6d 61 63  C-preprocess mac
37b0: 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68  ro determines th
37c0: 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
37d0: 67 20 6f 66 20 74 68 65 0a 20 20 5b 53 51 4c 49  g of the.  [SQLI
37e0: 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
37f0: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63  NG_INDEX_SCAN] c
3800: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
3810: 74 69 6e 67 2e 20 20 49 74 20 64 65 66 61 75 6c  ting.  It defaul
3820: 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e 29 20 77  ts.  to 1 (on) w
3830: 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20  hich means that 
3840: 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73  covering indices
3850: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 66 75   are used for fu
3860: 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63 61 6e 73  ll table.  scans
3870: 20 77 68 65 72 65 20 70 6f 73 73 69 62 6c 65 2c   where possible,
3880: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 64   in order to red
3890: 75 63 65 20 49 2f 4f 20 61 6e 64 20 69 6d 70 72  uce I/O and impr
38a0: 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  ove performance.
38b0: 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  .  However, the 
38c0: 75 73 65 20 6f 66 20 61 20 63 6f 76 65 72 69 6e  use of a coverin
38d0: 67 20 69 6e 64 69 63 65 20 66 6f 72 20 61 20 66  g indice for a f
38e0: 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20 63 61  ull scan will ca
38f0: 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20 74 6f  use results.  to
3900: 20 61 70 70 65 61 72 20 69 6e 20 61 20 64 69 66   appear in a dif
3910: 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66 72 6f  ferent order fro
3920: 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63 68 20  m legacy, which 
3930: 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f 6d 65  could cause some
3940: 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 2d  .  (incorrectly-
3950: 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20 61 70  coded) legacy ap
3960: 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 62 72  plications to br
3970: 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74 68 65  eak.  Hence, the
3980: 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e 64 65   covering.  inde
3990: 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20 63 61  x scan option ca
39a0: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61 74  n be disabled at
39b0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 6e   compile-time on
39c0: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 77 68   systems that wh
39d0: 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69 7a 65  at.  to minimize
39e0: 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66 20 65   their risk of e
39f0: 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73 20 69  xposing errors i
3a00: 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61  n legacy applica
3a10: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
3a20: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3a30: 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45  _ENABLE_8_3_NAME
3a40: 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 32 26  S=<i>&lt;1 or 2&
3a50: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
3a60: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
3a70: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
3a80: 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74 72 61  ined, then extra
3a90: 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63 6c 75   code is.  inclu
3aa0: 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ded that allows 
3ab0: 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63 74 69  SQLite to functi
3ac0: 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74  on on a filesyst
3ad0: 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79 20 73  em that.  only s
3ae0: 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c 65 6e  upport 8+3 filen
3af0: 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20 76 61  ames.  If the va
3b00: 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61 63 72  lue of this macr
3b10: 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e 20 74  o is 1,.  then t
3b20: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
3b30: 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74 69 6e  ior is to contin
3b40: 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67 20 66  ue to use long f
3b50: 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20 20 74  ilenames and.  t
3b60: 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33 20 66  o only use 8+3 f
3b70: 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68 65 20  ilenames if the 
3b80: 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  .  database conn
3b90: 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
3ba0: 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65   using [URI file
3bb0: 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20 74 68  names] with.  th
3bc0: 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  e "<tt>8_3_names
3bd0: 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70  =1</tt>" query p
3be0: 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20 74 68  arameter.  If th
3bf0: 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74 68 69  e value of.  thi
3c00: 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20 74 68  s macro is 2, th
3c10: 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20 38 2b  en the use of 8+
3c20: 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 63 6f  3 filenames beco
3c30: 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  mes the default.
3c40: 20 20 62 75 74 20 6d 61 79 20 62 65 20 64 69 73    but may be dis
3c50: 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67 20 74  abled on using t
3c60: 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73  he <tt>8_3_names
3c70: 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20 70 61  =0</tt> query pa
3c80: 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65 20 0a  rameter..  See .
3c90: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3ca0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
3cb0: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b  _ATOMIC_WRITE} {
3cc0: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
3cd0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
3ce0: 69 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69  is defined and i
3cf0: 66 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43  f the.  xDeviceC
3d00: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d  haracteristics m
3d10: 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65  ethod of [sqlite
3d20: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
3d30: 6a 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74  ject for.  a dat
3d40: 61 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72  abase file repor
3d50: 74 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74  ts (via one of t
3d60: 68 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  he [SQLITE_IOCAP
3d70: 5f 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20  _ATOMIC] bits). 
3d80: 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79   that the filesy
3d90: 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74  stem supports at
3da0: 6f 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20  omic writes and 
3db0: 69 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  if a transaction
3dc0: 0a 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68  .  involves a ch
3dd0: 61 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73  ange to only a s
3de0: 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68  ingle page of th
3df0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c  e database file,
3e00: 0a 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e  .  then the tran
3e10: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20  saction commits 
3e20: 77 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67  with just a sing
3e30: 6c 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74  le write request
3e40: 20 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70   of.  a single p
3e50: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
3e60: 61 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62  ase and no rollb
3e70: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63  ack journal is c
3e80: 72 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74  reated.  or writ
3e90: 74 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73  ten.  On filesys
3ea0: 74 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72  tems that suppor
3eb0: 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  t atomic writes,
3ec0: 20 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61   this.  optimiza
3ed0: 74 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20  tion can result 
3ee0: 69 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73  in significant s
3ef0: 70 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74  peed improvement
3f00: 73 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70  s for.  small up
3f10: 64 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c  dates.  However,
3f20: 20 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73   few filesystems
3f30: 20 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61   support this ca
3f40: 70 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74  pability.  and t
3f50: 68 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68  he code paths th
3f60: 61 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69  at check for thi
3f70: 73 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f  s capability slo
3f80: 77 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70  w down write.  p
3f90: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79  erformance on sy
3fa0: 73 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20  stems that lack 
3fb0: 61 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70  atomic write cap
3fc0: 61 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73  ability, so this
3fd0: 0a 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69  .  feature is di
3fe0: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
3ff0: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
4000: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
4010: 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44  BLE_COLUMN_METAD
4020: 41 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ATA} {.  When th
4030: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
4040: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
4050: 65 64 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75  ed, SQLite inclu
4060: 64 65 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74  des some.  addit
4070: 69 6f 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20  ional APIs that 
4080: 70 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65  provide convenie
4090: 6e 74 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74  nt access to met
40a0: 61 2d 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74  a-data about.  t
40b0: 61 62 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65  ables and querie
40c0: 73 2e 20 20 54 68 65 20 41 50 49 73 20 74 68 61  s.  The APIs tha
40d0: 74 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79  t are enabled by
40e0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65   this option are
40f0: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
4100: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
4110: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29  _database_name()
4120: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
4130: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
4140: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29  atabase_name16()
4150: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
4160: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
4170: 61 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  able_name()] </l
4180: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
4190: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
41a0: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
41b0: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
41c0: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
41d0: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
41e0: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
41f0: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
4200: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
4210: 20 5b 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f   [sqlite3_table_
4220: 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28  column_metadata(
4230: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e  )] </li>.  </ul>
4240: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
4250: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
4260: 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e  E_FTS3} {.  When
4270: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
4280: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
4290: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76  amalgamation], v
42a0: 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68  ersion 3.  of th
42b0: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
42c0: 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64  ch engine is add
42d0: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
42e0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
42f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4300: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
4310: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
4320: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
4330: 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 71  n modifies the q
4340: 75 65 72 79 20 70 61 74 74 65 72 6e 20 70 61 72  uery pattern par
4350: 73 65 72 20 69 6e 20 46 54 53 33 20 73 75 63 68  ser in FTS3 such
4360: 20 74 68 61 74 20 69 74 0a 20 20 73 75 70 70 6f   that it.  suppo
4370: 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20 41 4e  rts operators AN
4380: 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20 61 64  D and NOT (in ad
4390: 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73  dition to the us
43a0: 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41 52 29  ual OR and NEAR)
43b0: 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f  .  and also allo
43c0: 77 73 20 71 75 65 72 79 20 65 78 70 72 65 73 73  ws query express
43d0: 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69 6e 20  ions to contain 
43e0: 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68 65 73  nested parenthes
43f0: 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  is..}..COMPILE_O
4400: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
4410: 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20 20 57  ABLE_FTS4} {.  W
4420: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
4430: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  is defined in th
4440: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
4450: 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61 6e 64  , versions 3 and
4460: 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   4.  of the full
4470: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
4480: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
4490: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
44a0: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
44b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
44c0: 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 7d 20 7b  TE_ENABLE_ICU} {
44d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
44e0: 61 75 73 65 73 20 74 68 65 20 0a 20 20 5b 68 74  auses the .  [ht
44f0: 74 70 3a 2f 2f 77 77 77 2e 69 63 75 2d 70 72 6f  tp://www.icu-pro
4500: 6a 65 63 74 2e 6f 72 67 2f 20 7c 20 49 6e 74 65  ject.org/ | Inte
4510: 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e  rnational Compon
4520: 65 6e 74 73 20 66 6f 72 20 55 6e 69 63 6f 64 65  ents for Unicode
4530: 5d 0a 20 20 6f 72 20 22 49 43 55 22 20 65 78 74  ].  or "ICU" ext
4540: 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69 74 65  ension to SQLite
4550: 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20   to be added to 
4560: 74 68 65 20 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a  the build.  .}..
4570: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4580: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f  SQLITE_ENABLE_IO
4590: 54 52 41 43 45 7d 20 7b 0a 20 20 57 68 65 6e 20  TRACE} {.  When 
45a0: 62 6f 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  both the SQLite 
45b0: 63 6f 72 65 20 61 6e 64 20 74 68 65 20 5b 43 6f  core and the [Co
45c0: 6d 6d 61 6e 64 20 4c 69 6e 65 20 49 6e 74 65 72  mmand Line Inter
45d0: 66 61 63 65 5d 20 28 43 4c 49 29 20 61 72 65 20  face] (CLI) are 
45e0: 62 6f 74 68 20 0a 20 20 63 6f 6d 70 69 6c 65 64  both .  compiled
45f0: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
4600: 6e 2c 20 74 68 65 6e 20 74 68 65 20 43 4c 49 20  n, then the CLI 
4610: 70 72 6f 76 69 64 65 73 20 61 6e 20 65 78 74 72  provides an extr
4620: 61 20 63 6f 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65  a command.  name
4630: 64 20 22 2e 69 6f 74 72 61 63 65 22 20 74 68 61  d ".iotrace" tha
4640: 74 20 70 72 6f 76 69 64 65 73 20 61 20 6c 6f 77  t provides a low
4650: 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f 66 20 49 2f  -level log of I/
4660: 4f 20 61 63 74 69 76 69 74 79 2e 0a 20 20 54 68  O activity..  Th
4670: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 78 70  is option is exp
4680: 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 6d 61  erimental and ma
4690: 79 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65  y be discontinue
46a0: 64 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65  d in a future re
46b0: 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lease..}..COMPIL
46c0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
46d0: 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f  _ENABLE_LOCKING_
46e0: 53 54 59 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20  STYLE} {.  This 
46f0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61  option enables a
4700: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
4710: 69 6e 20 74 68 65 20 4f 53 20 69 6e 74 65 72 66  in the OS interf
4720: 61 63 65 20 6c 61 79 65 72 20 66 6f 72 0a 20 20  ace layer for.  
4730: 4d 61 63 20 4f 53 20 58 2e 20 54 68 65 20 61 64  Mac OS X. The ad
4740: 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 61  ditional logic a
4750: 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72  ttempts to deter
4760: 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f 66  mine the type of
4770: 20 74 68 65 0a 20 20 75 6e 64 65 72 6c 79 69 6e   the.  underlyin
4780: 67 20 66 69 6c 65 73 79 73 74 65 6d 20 61 6e 64  g filesystem and
4790: 20 63 68 6f 6f 73 65 20 61 6e 64 20 61 6c 74 65   choose and alte
47a0: 72 6e 61 74 69 76 65 20 6c 6f 63 6b 69 6e 67 20  rnative locking 
47b0: 73 74 72 61 74 65 67 79 0a 20 20 74 68 61 74 20  strategy.  that 
47c0: 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c 79 20  works correctly 
47d0: 66 6f 72 20 74 68 61 74 20 66 69 6c 65 73 79 73  for that filesys
47e0: 74 65 6d 20 74 79 70 65 2e 20 46 69 76 65 20 6c  tem type. Five l
47f0: 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 69 65  ocking strategie
4800: 73 20 0a 20 20 61 72 65 20 61 76 61 69 6c 61 62  s .  are availab
4810: 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 20 20  le:..  <ul>.    
4820: 3c 6c 69 3e 20 50 4f 53 49 58 20 6c 6f 63 6b 69  <li> POSIX locki
4830: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 69  ng style. This i
4840: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f  s the default lo
4850: 63 6b 69 6e 67 20 73 74 79 6c 65 20 61 6e 64 20  cking style and 
4860: 74 68 65 0a 20 20 20 20 20 20 20 20 20 73 74 79  the.         sty
4870: 6c 65 20 75 73 65 64 20 62 79 20 6f 74 68 65 72  le used by other
4880: 20 28 6e 6f 6e 20 4d 61 63 20 4f 53 20 58 29 20   (non Mac OS X) 
4890: 55 6e 69 78 65 73 2e 20 4c 6f 63 6b 73 20 61 72  Unixes. Locks ar
48a0: 65 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 0a  e obtained and .
48b0: 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65           release
48c0: 64 20 75 73 69 6e 67 20 74 68 65 20 66 63 6e 74  d using the fcnt
48d0: 6c 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e  l() system call.
48e0: 0a 0a 20 20 20 20 3c 6c 69 3e 20 41 46 50 20 6c  ..    <li> AFP l
48f0: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68  ocking style. Th
4900: 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  is locking style
4910: 20 69 73 20 75 73 65 64 20 66 6f 72 20 6e 65 74   is used for net
4920: 77 6f 72 6b 20 66 69 6c 65 20 0a 20 20 20 20 20  work file .     
4930: 20 20 20 20 73 79 73 74 65 6d 73 20 74 68 61 74      systems that
4940: 20 75 73 65 20 74 68 65 20 41 46 50 20 28 41 70   use the AFP (Ap
4950: 70 6c 65 20 46 69 6c 69 6e 67 20 50 72 6f 74 6f  ple Filing Proto
4960: 63 6f 6c 29 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c  col) protocol. L
4970: 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 61 72  ocks.         ar
4980: 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63 61  e obtained by ca
4990: 6c 6c 69 6e 67 20 74 68 65 20 6c 69 62 72 61 72  lling the librar
49a0: 79 20 66 75 6e 63 74 69 6f 6e 20 5f 41 46 50 46  y function _AFPF
49b0: 53 53 65 74 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20  SSetLock()...   
49c0: 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b   <li> Flock lock
49d0: 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20  ing style. This 
49e0: 69 73 20 75 73 65 64 20 66 6f 72 20 66 69 6c 65  is used for file
49f0: 2d 73 79 73 74 65 6d 73 20 74 68 61 74 20 64 6f  -systems that do
4a00: 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 73 75   not.         su
4a10: 70 70 6f 72 74 20 50 4f 53 49 58 20 6c 6f 63 6b  pport POSIX lock
4a20: 69 6e 67 20 73 74 79 6c 65 2e 20 4c 6f 63 6b 73  ing style. Locks
4a30: 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61 6e   are obtained an
4a40: 64 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67  d released using
4a50: 0a 20 20 20 20 20 20 20 20 20 74 68 65 20 66 6c  .         the fl
4a60: 6f 63 6b 28 29 20 73 79 73 74 65 6d 20 63 61 6c  ock() system cal
4a70: 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 44 6f 74  l...    <li> Dot
4a80: 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 73 74  -file locking st
4a90: 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e  yle. This lockin
4aa0: 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64 20  g style is used 
4ab0: 77 68 65 6e 20 6e 65 69 74 68 65 72 0a 20 20 20  when neither.   
4ac0: 20 20 20 20 20 20 66 6c 6f 63 6b 20 6e 6f 72 20        flock nor 
4ad0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
4ae0: 79 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72 74  yles are support
4af0: 65 64 20 62 79 20 74 68 65 20 66 69 6c 65 20 73  ed by the file s
4b00: 79 73 74 65 6d 2e 0a 20 20 20 20 20 20 20 20 20  ystem..         
4b10: 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 73 20 61  Database locks a
4b20: 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63  re obtained by c
4b30: 72 65 61 74 69 6e 67 20 61 6e 64 20 65 6e 74 72  reating and entr
4b40: 79 20 69 6e 20 74 68 65 20 66 69 6c 65 2d 73 79  y in the file-sy
4b50: 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 61 74  stem.         at
4b60: 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f   a well-known lo
4b70: 63 61 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20  cation relative 
4b80: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
4b90: 66 69 6c 65 20 28 61 20 22 64 6f 74 2d 66 69 6c  file (a "dot-fil
4ba0: 65 22 29 0a 20 20 20 20 20 20 20 20 20 61 6e 64  e").         and
4bb0: 20 72 65 6c 69 6e 71 75 69 73 68 65 64 20 62 79   relinquished by
4bc0: 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 73 61   deleting the sa
4bd0: 6d 65 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c  me file...    <l
4be0: 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e 67 20 73 74  i> No locking st
4bf0: 79 6c 65 2e 20 49 66 20 6e 6f 6e 65 20 6f 66 20  yle. If none of 
4c00: 74 68 65 20 61 62 6f 76 65 20 63 61 6e 20 62 65  the above can be
4c10: 20 73 75 70 70 6f 72 74 65 64 2c 20 74 68 69 73   supported, this
4c20: 20 0a 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 69   .         locki
4c30: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
4c40: 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 20 6c 6f  . No database lo
4c50: 63 6b 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20  cking mechanism 
4c60: 69 73 20 75 73 65 64 2e 20 57 68 65 6e 0a 20 20  is used. When.  
4c70: 20 20 20 20 20 20 20 74 68 69 73 20 73 79 73 74         this syst
4c80: 65 6d 20 69 73 20 75 73 65 64 20 69 74 20 69 73  em is used it is
4c90: 20 6e 6f 74 20 73 61 66 65 20 66 6f 72 20 61 20   not safe for a 
4ca0: 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20  single database 
4cb0: 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20 61  to be.         a
4cc0: 63 63 65 73 73 65 64 20 62 79 20 6d 75 6c 74 69  ccessed by multi
4cd0: 70 6c 65 20 63 6c 69 65 6e 74 73 2e 0a 20 20 3c  ple clients..  <
4ce0: 2f 75 6c 3e 0a 0a 20 20 41 64 64 69 74 69 6f 6e  /ul>..  Addition
4cf0: 61 6c 6c 79 2c 20 66 69 76 65 20 65 78 74 72 61  ally, five extra
4d00: 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74   [VFS] implement
4d10: 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 76 69  ations are provi
4d20: 64 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ded as well as t
4d30: 68 65 0a 20 20 64 65 66 61 75 6c 74 2e 20 42 79  he.  default. By
4d40: 20 73 70 65 63 69 66 79 69 6e 67 20 6f 6e 65 20   specifying one 
4d50: 6f 66 20 74 68 65 20 65 78 74 72 61 20 56 46 53  of the extra VFS
4d60: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
4d70: 20 0a 20 20 77 68 65 6e 20 63 61 6c 6c 69 6e 67   .  when calling
4d80: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
4d90: 32 28 29 5d 2c 20 61 6e 20 61 70 70 6c 69 63 61  2()], an applica
4da0: 74 69 6f 6e 20 6d 61 79 20 62 79 70 61 73 73 20  tion may bypass 
4db0: 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a  the file-system.
4dc0: 20 20 64 65 74 65 63 74 69 6f 6e 20 6c 6f 67 69    detection logi
4dd0: 63 20 61 6e 64 20 65 78 70 6c 69 63 69 74 6c 79  c and explicitly
4de0: 20 73 65 6c 65 63 74 20 6f 6e 65 20 6f 66 20 74   select one of t
4df0: 68 65 20 61 62 6f 76 65 20 6c 6f 63 6b 69 6e 67  he above locking
4e00: 20 73 74 79 6c 65 73 2e 20 54 68 65 0a 20 20 66   styles. The.  f
4e10: 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d 20  ive extra [VFS] 
4e20: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
4e30: 61 72 65 20 63 61 6c 6c 65 64 20 22 75 6e 69 78  are called "unix
4e40: 2d 70 6f 73 69 78 22 2c 20 22 75 6e 69 78 2d 61  -posix", "unix-a
4e50: 66 70 22 2c 0a 20 20 22 75 6e 69 78 2d 66 6c 6f  fp",.  "unix-flo
4e60: 63 6b 22 2c 20 22 75 6e 69 78 2d 64 6f 74 66 69  ck", "unix-dotfi
4e70: 6c 65 22 20 61 6e 64 20 22 75 6e 69 78 2d 6e 6f  le" and "unix-no
4e80: 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ne"..}..COMPILE_
4e90: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
4ea0: 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e  NABLE_MEMORY_MAN
4eb0: 41 47 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69  AGEMENT} {.  Thi
4ec0: 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 65 78  s option adds ex
4ed0: 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53 51 4c  tra logic to SQL
4ee0: 69 74 65 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  ite that allows 
4ef0: 69 74 20 74 6f 20 72 65 6c 65 61 73 65 20 75 6e  it to release un
4f00: 75 73 65 64 0a 20 20 6d 65 6d 6f 72 79 20 75 70  used.  memory up
4f10: 6f 6e 20 72 65 71 75 65 73 74 2e 20 20 54 68 69  on request.  Thi
4f20: 73 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65  s option must be
4f30: 20 65 6e 61 62 6c 65 64 20 69 6e 20 6f 72 64 65   enabled in orde
4f40: 72 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  r for the.  [sql
4f50: 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
4f60: 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ory()] interface
4f70: 20 74 6f 20 77 6f 72 6b 2e 20 20 49 66 20 74 68   to work.  If th
4f80: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  is compile-time.
4f90: 20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20    option is not 
4fa0: 75 73 65 64 2c 20 74 68 65 20 5b 73 71 6c 69 74  used, the [sqlit
4fb0: 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
4fc0: 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 69  y()] interface i
4fd0: 73 20 61 20 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a  s a .  no-op..}.
4fe0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4ff0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d  {SQLITE_ENABLE_M
5000: 45 4d 53 59 53 33 7d 20 7b 0a 20 20 54 68 69 73  EMSYS3} {.  This
5010: 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73   option includes
5020: 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20   code in SQLite 
5030: 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20  that implements 
5040: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20  an alternative. 
5050: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
5060: 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61  r.  This alterna
5070: 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  tive memory allo
5080: 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e  cator is only en
5090: 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65  gaged.  when the
50a0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
50b0: 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20  HEAP] option to 
50c0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
50d0: 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20  )] is used to.  
50e0: 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63  supply a large c
50f0: 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66  hunk of memory f
5100: 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65  rom which all me
5110: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mory allocations
5120: 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20   are.  taken..  
5130: 54 68 65 20 4d 45 4d 53 59 53 33 20 6d 65 6d 6f  The MEMSYS3 memo
5140: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 75 73 65  ry allocator use
5150: 73 20 61 20 68 79 62 72 69 64 20 61 6c 6c 6f 63  s a hybrid alloc
5160: 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ation algorithm 
5170: 0a 20 20 70 61 74 74 65 72 6e 65 64 20 61 66 74  .  patterned aft
5180: 65 72 20 64 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20  er dlmalloc().  
5190: 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20 53 51 4c   Only one of SQL
51a0: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
51b0: 53 33 20 61 6e 64 20 0a 20 20 53 51 4c 49 54 45  S3 and .  SQLITE
51c0: 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 20  _ENABLE_MEMSYS5 
51d0: 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64 20 61  may be enabled a
51e0: 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  t once..}..COMPI
51f0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5200: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35  E_ENABLE_MEMSYS5
5210: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
5220: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
5230: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
5240: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
5250: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
5260: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
5270: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
5280: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
5290: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
52a0: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
52b0: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
52c0: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
52d0: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
52e0: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
52f0: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
5300: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
5310: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
5320: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
5330: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
5340: 4d 53 59 53 35 20 6d 6f 64 75 6c 65 20 72 6f 75  MSYS5 module rou
5350: 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 69  nds all allocati
5360: 6f 6e 73 20 75 70 20 74 6f 20 74 68 65 20 6e 65  ons up to the ne
5370: 78 74 20 70 6f 77 65 72 0a 20 20 6f 66 20 74 77  xt power.  of tw
5380: 6f 20 61 6e 64 20 75 73 65 73 20 61 20 66 69 72  o and uses a fir
5390: 73 74 2d 66 69 74 2c 20 62 75 64 64 79 2d 61 6c  st-fit, buddy-al
53a0: 6c 6f 63 61 74 6f 72 20 61 6c 67 6f 72 69 74 68  locator algorith
53b0: 6d 0a 20 20 74 68 61 74 20 70 72 6f 76 69 64 65  m.  that provide
53c0: 73 20 73 74 72 6f 6e 67 20 67 75 61 72 61 6e 74  s strong guarant
53d0: 65 65 73 20 61 67 61 69 6e 73 74 20 66 72 61 67  ees against frag
53e0: 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 62 72  mentation and br
53f0: 65 61 6b 64 6f 77 6e 0a 20 20 73 75 62 6a 65 63  eakdown.  subjec
5400: 74 20 74 6f 20 63 65 72 74 61 69 6e 20 6f 70 65  t to certain ope
5410: 72 61 74 69 6e 67 20 63 6f 6e 73 74 72 61 69 6e  rating constrain
5420: 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ts..}..COMPILE_O
5430: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
5440: 41 42 4c 45 5f 52 54 52 45 45 7d 20 7b 0a 20 20  ABLE_RTREE} {.  
5450: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
5460: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69 6e 63  es SQLite to inc
5470: 6c 75 64 65 20 73 75 70 70 6f 72 74 20 66 6f 72  lude support for
5480: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
5490: 52 2a 54 72 65 65 20 69 6e 64 65 78 20 65 78 74  R*Tree index ext
54a0: 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50  ension]..}..COMP
54b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
54c0: 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c  TE_RTREE_INT_ONL
54d0: 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  Y} {.  If this o
54e0: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
54f0: 67 65 74 68 65 72 20 77 69 74 68 20 5b 53 51 4c  gether with [SQL
5500: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
5510: 5d 20 74 68 65 6e 20 74 68 65 0a 20 20 5b 72 74  ] then the.  [rt
5520: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 65 78 74  ree | R*Tree ext
5530: 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f 6e 6c  ension] will onl
5540: 79 20 73 74 6f 72 65 20 33 32 2d 62 69 74 20 73  y store 32-bit s
5550: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a 20 20  igned integer.  
5560: 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 6e 64 20  coordinates and 
5570: 61 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d  all internal com
5580: 70 75 74 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62  putations will b
5590: 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 69 6e 74  e done using int
55a0: 65 67 65 72 73 0a 20 20 69 6e 73 74 65 61 64 20  egers.  instead 
55b0: 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  of floating poin
55c0: 74 20 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a 43 4f  t numbers..}..CO
55d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
55e0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
55f0: 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  2} {.  This opti
5600: 6f 6e 20 75 73 65 64 20 74 6f 20 63 61 75 73 65  on used to cause
5610: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
5620: 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63  ommand to collec
5630: 74 0a 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67  t.  index histog
5640: 72 61 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20  ram data in the 
5650: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c  <b>sqlite_stat2<
5660: 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20  /b> table.  But 
5670: 74 68 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61  that.  functiona
5680: 6c 69 74 79 20 77 61 73 20 73 75 70 65 72 63 65  lity was superce
5690: 64 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45  ded by [SQLITE_E
56a0: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20  NABLE_STAT3] as 
56b0: 6f 66 0a 20 20 53 51 4c 69 74 65 20 76 65 72 73  of.  SQLite vers
56c0: 69 6f 6e 20 33 2e 37 2e 39 2e 20 20 54 68 65 20  ion 3.7.9.  The 
56d0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
56e0: 41 54 32 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  AT2 compile-time
56f0: 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 6e 6f 77   option.  is now
5700: 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d   a no-op..}..COM
5710: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
5720: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
5730: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
5740: 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61  n adds additiona
5750: 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b  l logic to the [
5760: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
5770: 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71   and to.  the [q
5780: 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68  uery planner] th
5790: 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69  at can help SQLi
57a0: 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65  te to chose a be
57b0: 74 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a  tter query plan.
57c0: 20 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20    under certain 
57d0: 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65  situations.  The
57e0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
57f0: 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74  nd is enhanced t
5800: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74  o collect.  hist
5810: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
5820: 65 61 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73  each index and s
5830: 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20  tore that data. 
5840: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
5850: 65 5f 73 74 61 74 33 3c 2f 62 3e 20 74 61 62 6c  e_stat3</b> tabl
5860: 65 2e 20 20 54 68 65 20 71 75 65 72 79 20 70 6c  e.  The query pl
5870: 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e 20  anner will then 
5880: 75 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f 67  use the.  histog
5890: 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c 70  ram data to help
58a0: 20 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72 20   it make better 
58b0: 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 0a 7d  index choices..}
58c0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
58d0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
58e0: 54 52 45 45 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a  TREE_EXPLAIN} {.
58f0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
5900: 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ds support for t
5910: 68 65 20 5b 53 51 4c 49 54 45 5f 54 45 53 54 43  he [SQLITE_TESTC
5920: 54 52 4c 5f 45 58 50 4c 41 49 4e 5f 53 54 4d 54  TRL_EXPLAIN_STMT
5930: 5d 20 74 65 73 74 2d 63 6f 6e 74 72 6f 6c 0a 20  ] test-control. 
5940: 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 63   in the SQLite c
5950: 6f 72 65 2e 20 20 57 68 65 6e 20 74 68 65 20 5b  ore.  When the [
5960: 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65  command-line she
5970: 6c 6c 5d 20 69 73 20 61 6c 73 6f 20 63 6f 6d 70  ll] is also comp
5980: 69 6c 65 64 20 77 69 74 68 0a 20 20 74 68 69 73  iled with.  this
5990: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 20 22 2e 65   option, the ".e
59a0: 78 70 6c 61 69 6e 22 20 64 6f 74 2d 63 6f 6d 6d  xplain" dot-comm
59b0: 61 6e 64 20 65 6e 61 62 6c 65 73 20 61 20 6d 6f  and enables a mo
59c0: 64 65 20 74 68 61 74 20 75 73 65 73 20 74 68 65  de that uses the
59d0: 0a 20 20 5b 53 51 4c 49 54 45 5f 54 45 53 54 43  .  [SQLITE_TESTC
59e0: 54 52 4c 5f 45 58 50 4c 41 49 4e 5f 53 54 4d 54  TRL_EXPLAIN_STMT
59f0: 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 64  ] interface to d
5a00: 69 73 70 6c 61 79 20 61 6e 20 41 53 43 49 49 2d  isplay an ASCII-
5a10: 61 72 74 20 64 69 61 67 72 61 6d 0a 20 20 6f 66  art diagram.  of
5a20: 20 74 68 65 20 70 61 72 73 65 20 74 72 65 65 20   the parse tree 
5a30: 66 6f 72 20 65 61 63 68 20 53 51 4c 20 71 75 65  for each SQL que
5a40: 72 79 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  ry statement tha
5a50: 74 20 69 73 20 72 75 6e 20 69 6e 20 74 68 65 20  t is run in the 
5a60: 73 68 65 6c 6c 2e 0a 20 20 54 68 69 73 20 6d 65  shell..  This me
5a70: 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65 66 75  chanism is usefu
5a80: 6c 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 20  l for debugging 
5a90: 74 68 65 20 53 51 4c 69 74 65 20 70 61 72 73 65  the SQLite parse
5aa0: 72 20 61 6e 64 20 63 6f 64 65 0a 20 20 67 65 6e  r and code.  gen
5ab0: 65 72 61 74 6f 72 2e 20 20 54 68 69 73 20 77 68  erator.  This wh
5ac0: 6f 6c 65 20 6d 65 63 68 61 6e 69 73 6d 20 69 73  ole mechanism is
5ad0: 20 68 69 67 68 6c 79 20 65 78 70 65 72 69 6d 65   highly experime
5ae0: 6e 74 61 6c 20 61 6e 64 20 63 6f 75 6c 64 20 63  ntal and could c
5af0: 68 61 6e 67 65 0a 20 20 64 72 61 73 74 69 63 61  hange.  drastica
5b00: 6c 6c 79 20 6f 72 20 62 65 20 65 6c 69 6d 69 6e  lly or be elimin
5b10: 61 74 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  ated in future r
5b20: 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
5b30: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
5b40: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
5b50: 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54  BLE_UPDATE_DELET
5b60: 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69  E_LIMIT} {.  Thi
5b70: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
5b80: 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44   an optional ORD
5b90: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
5ba0: 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50  clause on .  [UP
5bb0: 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54  DATE] and [DELET
5bc0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a  E] statements...
5bd0: 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70 74    <p>If this opt
5be0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
5bf0: 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c 73  then it must als
5c00: 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64 20  o be .  defined 
5c10: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27  when using the '
5c20: 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67  lemon' tool to g
5c30: 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65 2e  enerate a parse.
5c40: 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73  c.  file. Becaus
5c50: 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20  e of this, this 
5c60: 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20  option may only 
5c70: 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  be used when the
5c80: 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c   library is buil
5c90: 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c  t.  from source,
5ca0: 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61   not from the [a
5cb0: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20  malgamation] or 
5cc0: 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74  from the collect
5cd0: 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63  ion of.  pre-pac
5ce0: 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72  kaged C files pr
5cf0: 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55  ovided for non-U
5d00: 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72  nix like platfor
5d10: 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74  ms on the websit
5d20: 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d  e..  </p>.}..COM
5d30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
5d40: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43  ITE_ENABLE_UNLOC
5d50: 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20 20 54 68  K_NOTIFY} {.  Th
5d60: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
5d70: 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 75  s the [sqlite3_u
5d80: 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28 29 5d 20  nlock_notify()] 
5d90: 69 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 20 20  interface and.  
5da0: 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 66  its associated f
5db0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 20 53  unctionality.  S
5dc0: 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61  ee the documenta
5dd0: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20 20 5b 55  tion titled.  [U
5de0: 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
5df0: 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69 63 61 74  Unlock Notificat
5e00: 69 6f 6e 20 46 65 61 74 75 72 65 5d 20 66 6f 72  ion Feature] for
5e10: 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 69 6e   additional.  in
5e20: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  formation..}..CO
5e30: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5e40: 4c 49 54 45 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a  LITE_SOUNDEX} {.
5e50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
5e60: 61 62 6c 65 73 20 74 68 65 20 5b 73 6f 75 6e 64  ables the [sound
5e70: 65 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ex() SQL functio
5e80: 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  n]..}..COMPILE_O
5e90: 50 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41  PTION {YYTRACKMA
5ea0: 58 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20  XSTACKDEPTH} {. 
5eb0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
5ec0: 73 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20  ses the LALR(1) 
5ed0: 70 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70  parser stack dep
5ee0: 74 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64  th to be tracked
5ef0: 0a 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20  .  and reported 
5f00: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
5f10: 65 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49  e3_status]([SQLI
5f20: 54 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52  TE_STATUS_PARSER
5f30: 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69  _STACK],...).  i
5f40: 6e 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74  nterface.  SQLit
5f50: 65 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73  e's LALR(1) pars
5f60: 65 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73  er has a fixed s
5f70: 74 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65  tack depth.  (de
5f80: 74 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70  termined at comp
5f90: 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74  ile-time using t
5fa0: 68 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48  he [YYSTACKDEPTH
5fb0: 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68  ] options)..  Th
5fc0: 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65  is option can be
5fd0: 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65   used to help de
5fe0: 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70  termine if an ap
5ff0: 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67  plication is.  g
6000: 65 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20  etting close to 
6010: 65 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61  exceeding the ma
6020: 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74  ximum LALR(1) st
6030: 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74  ack depth..}.</t
6040: 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69  cl>..<a name="di
6050: 73 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c  sablefeatures"><
6060: 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69  /a>.<h2>1.5 Opti
6070: 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46  ons To Disable F
6080: 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79  eatures Normally
6090: 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a   Turned On</h2>.
60a0: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
60b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49  PTION {SQLITE_DI
60c0: 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49  SABLE_LFS} {.  I
60d0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
60e0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
60f0: 65 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69  efined, large fi
6100: 6c 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20  le support.  is 
6110: 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d  disabled..}..COM
6120: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6130: 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53  ITE_DISABLE_DIRS
6140: 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  YNC} {.  If this
6150: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
6160: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
6170: 2c 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63  , directory sync
6180: 73 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65 64  s.  are disabled
6190: 2e 20 20 53 51 4c 69 74 65 20 74 79 70 69 63 61  .  SQLite typica
61a0: 6c 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20  lly attempts to 
61b0: 73 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a  sync the parent.
61c0: 20 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e    directory when
61d0: 20 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74   a file is delet
61e0: 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65  ed to ensure the
61f0: 20 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74   directory.  ent
6200: 72 69 65 73 20 61 72 65 20 75 70 64 61 74 65 64  ries are updated
6210: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20   immediately on 
6220: 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  disk..}..COMPILE
6230: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6240: 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49  DISABLE_FTS3_UNI
6250: 43 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  CODE} {.  If thi
6260: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
6270: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
6280: 64 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36  d, the [unicode6
6290: 31 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69  1] tokenizer.  i
62a0: 6e 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74  n [FTS3] is omit
62b0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
62c0: 6c 64 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69  ld and is unavai
62d0: 6c 61 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c  lable to .  appl
62e0: 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d  ications..}..COM
62f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6300: 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34  ITE_DISABLE_FTS4
6310: 5f 44 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49  _DEFERRED} {.  I
6320: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
6330: 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61  essor macro disa
6340: 62 6c 65 73 20 74 68 65 20 22 64 65 66 65 72 72  bles the "deferr
6350: 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69  ed token" optimi
6360: 7a 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53  zation.  in [FTS
6370: 34 5d 2e 20 20 54 68 65 20 22 64 65 66 65 72 72  4].  The "deferr
6380: 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69  ed token" optimi
6390: 7a 61 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f  zation avoids lo
63a0: 61 64 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20  ading massive.  
63b0: 70 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f  posting lists fo
63c0: 72 20 74 65 72 6d 73 20 74 68 61 74 20 61 72 65  r terms that are
63d0: 20 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e   in most documen
63e0: 74 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63  ts of the collec
63f0: 74 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65  tion.  and inste
6400: 61 64 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20  ad simply scans 
6410: 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73  for those tokens
6420: 20 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74   in the document
6430: 20 73 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d   source.  [FTS4]
6440: 0a 20 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78  .  should get ex
6450: 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61  actly the same a
6460: 6e 73 77 65 72 20 62 6f 74 68 20 77 69 74 68 20  nswer both with 
6470: 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68 69 73  and without this
6480: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d   optimization..}
6490: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20  .</tcl>..<tcl>. 
64a0: 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d   hd_fragment "om
64b0: 69 74 66 65 61 74 75 72 65 73 22 0a 20 20 68 64  itfeatures".  hd
64c0: 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66  _keywords "omitf
64d0: 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a  eatures".</tcl>.
64e0: 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73 20  <h2>1.6 Options 
64f0: 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73  To Omit Features
6500: 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f  </h2>..<p>The fo
6510: 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20  llowing options 
6520: 63 61 6e 20 75 73 65 64 20 74 6f 20 0a 5b 72 65  can used to .[re
6530: 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72 65 64  lfootprint | red
6540: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
6550: 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62  the compiled lib
6560: 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74 69 6e  rary].by omittin
6570: 67 20 75 6e 75 73 65 64 20 66 65 61 74 75 72 65  g unused feature
6580: 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62 61  s. This is proba
6590: 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a  bly only useful.
65a0: 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73 74  in embedded syst
65b0: 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65 20  ems where space 
65c0: 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74 69  is especially ti
65d0: 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69 74  ght, as even wit
65e0: 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20 69  h all.features i
65f0: 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c 69  ncluded the SQLi
6600: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72 65  te library is re
6610: 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20  latively small. 
6620: 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f 20  Don't forget.to 
6630: 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c  tell your compil
6640: 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66  er to optimize f
6650: 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21 20  or binary size! 
6660: 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20  (the -Os option 
6670: 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20 20  if.using GCC).  
6680: 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d  Telling your com
6690: 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a  piler to optimiz
66a0: 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61 6c  e for size usual
66b0: 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c 61  ly has.a much la
66c0: 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e 20 6c  rger impact on l
66d0: 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74  ibrary footprint
66e0: 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20   than employing 
66f0: 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d  any of these.com
6700: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
6710: 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61  s.  You should a
6720: 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61 74 20  lso verify that 
6730: 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62 75 67  .<a href="#debug
6740: 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67 67 69  options">debuggi
6750: 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e 20 61  ng options</a> a
6760: 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f 70 3e  re disabled.</p>
6770: 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f 73 20  ..<p>The macros 
6780: 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20  in this section 
6790: 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65 20 76  do not require v
67a0: 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c 6c 6f  alues. The follo
67b0: 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74 69 6f  wing .compilatio
67c0: 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c 20 68  n switches all h
67d0: 61 76 65 20 74 68 65 20 73 61 6d 65 20 65 66 66  ave the same eff
67e0: 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c 49 54  ect:<br>.-DSQLIT
67f0: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
6800: 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f  E<br>.-DSQLITE_O
6810: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 31  MIT_ALTERTABLE=1
6820: 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d  <br>.-DSQLITE_OM
6830: 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d 30 0a  IT_ALTERTABLE=0.
6840: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e 79 20  </p>..<p>If any 
6850: 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  of these options
6860: 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20 74 68   are defined, th
6870: 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65 74 20  en the same set 
6880: 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  of SQLITE_OMIT_*
6890: 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c  .options must al
68a0: 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20 77 68  so be defined wh
68b0: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65  en using the 'le
68c0: 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e  mon' tool to gen
68d0: 65 72 61 74 65 20 74 68 65 0a 70 61 72 73 65 2e  erate the.parse.
68e0: 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65 6e 20  c file and when 
68f0: 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 27 6d  compiling the 'm
6900: 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20 74 6f  kkeywordhash' to
6910: 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72 61 74  ol which generat
6920: 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72 64 68  es .the keywordh
6930: 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65 63 61  ash.h file..Beca
6940: 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68 65  use of this, the
6950: 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 6f  se options may o
6960: 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e  nly be used when
6970: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
6980: 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e 6f 6e  built.from canon
6990: 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e 6f 74  ical source, not
69a0: 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67   from the [amalg
69b0: 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d  amation] or from
69c0: 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20   the collection 
69d0: 6f 66 0a 70 72 65 2d 70 61 63 6b 61 67 65 64 20  of.pre-packaged 
69e0: 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64  C files provided
69f0: 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69   for non-Unix li
6a00: 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20  ke platforms on 
6a10: 74 68 65 20 77 65 62 73 69 74 65 2e 0a 41 6e 79  the website..Any
6a20: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
6a30: 70 74 69 6f 6e 73 20 77 68 69 63 68 20 63 61 6e  ptions which can
6a40: 20 62 65 20 75 73 65 64 20 64 69 72 65 63 74 6c   be used directl
6a50: 79 20 77 69 74 68 20 74 68 65 20 5b 61 6d 61 6c  y with the [amal
6a60: 67 61 6d 61 74 69 6f 6e 5d 20 0a 61 72 65 20 6c  gamation] .are l
6a70: 69 73 74 65 64 20 62 65 6c 6f 77 2c 20 68 6f 77  isted below, how
6a80: 65 76 65 72 2c 20 74 68 65 20 77 61 72 6e 69 6e  ever, the warnin
6a90: 67 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77  gs in the follow
6aa0: 69 6e 67 20 70 61 72 61 67 72 61 70 68 20 73 68  ing paragraph sh
6ab0: 6f 75 6c 64 20 62 65 20 6e 6f 74 65 64 2e 0a 3c  ould be noted..<
6ac0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
6ad0: 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e  >.<i><b>Importan
6ae0: 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68 65 20  t Note:</b> The 
6af0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70  SQLITE_OMIT_* op
6b00: 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 77 6f 72  tions do not wor
6b10: 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d 61 6c  k with the.[amal
6b20: 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 77 69 74  gamation] or wit
6b30: 68 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43  h pre-packaged C
6b40: 20 63 6f 64 65 20 66 69 6c 65 73 2e 20 20 53 51   code files.  SQ
6b50: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70  LITE_OMIT_* comp
6b60: 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e 73  ile-time.options
6b70: 20 6f 6e 6c 79 20 77 6f 72 6b 20 63 6f 72 72 65   only work corre
6b80: 63 74 6c 79 20 77 68 65 6e 20 53 51 4c 69 74 65  ctly when SQLite
6b90: 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d 20 63   is built from c
6ba0: 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 20  anonical source 
6bb0: 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f 62 6c  files..</i>.</bl
6bc0: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70 3e 53  ockquote>...<p>S
6bd0: 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e 73 20  pecial versions 
6be0: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 61 6d  of the SQLite am
6bf0: 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61 74 20  algamation that 
6c00: 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61 0a 70  do work with a.p
6c10: 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73 65 74  redetermined set
6c20: 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f   of SQLITE_OMIT_
6c30: 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65  * options can be
6c40: 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54 6f 20   generated.  To 
6c50: 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20 63 6f  do so,.make a co
6c60: 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65 66 69  py of the Makefi
6c70: 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d 61 6b  le.linux-gcc mak
6c80: 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65 20 69  efile template i
6c90: 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c 0a  n the canonical.
6ca0: 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69 73 74  source code dist
6cb0: 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61 6e 67  ribution.  Chang
6cc0: 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79 6f  e the name of yo
6cd0: 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d 70 6c  ur copy to simpl
6ce0: 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a 54 68  y "Makefile"..Th
6cf0: 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66 69 6c  en edit "Makefil
6d00: 65 22 20 74 6f 20 73 65 74 20 75 70 20 61 70 70  e" to set up app
6d10: 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69 6c 65  ropriate compile
6d20: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20 20  -time options.  
6d30: 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62 6c 6f 63  Then.type:.<bloc
6d40: 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61 6b 65 20  kquote><tt>make 
6d50: 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71 6c 69  clean; make sqli
6d60: 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62 6c 6f 63  te3.c</tt></bloc
6d70: 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72 65 73 75  kquote>.The resu
6d80: 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33 2e 63  lting "sqlite3.c
6d90: 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 63  " amalgamation c
6da0: 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20 69 74  ode file (and it
6db0: 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68 65 61  s associated.hea
6dc0: 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69 74 65  der file "sqlite
6dd0: 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e 20 62  3.h") can then b
6de0: 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 6f 6e  e moved to a non
6df0: 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d 0a 66  -unix platform.f
6e00: 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69 6c 61  or final compila
6e10: 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e 61 74  tion using a nat
6e20: 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c 2f 70  ive compiler.</p
6e30: 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f 66 20 74 68 65  >..<p>All of the
6e40: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f   SQLITE_OMIT_* o
6e50: 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70  ptions are unsup
6e60: 70 6f 72 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 62 6c  ported.</p>..<bl
6e70: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e  ockquote>.<i><b>
6e80: 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c  Important Note:<
6e90: 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f  /b>.The SQLITE_O
6ea0: 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  MIT_* compile-ti
6eb0: 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75  me options are u
6ec0: 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f 69 3e  nsupported..</i>
6ed0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
6ee0: 70 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d  p>.The SQLITE_OM
6ef0: 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  IT_* compile-tim
6f00: 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75 73  e options are us
6f10: 75 61 6c 6c 79 20 75 6e 74 65 73 74 65 64 20 61  ually untested a
6f20: 6e 64 0a 61 72 65 20 61 6c 6d 6f 73 74 20 63 65  nd.are almost ce
6f30: 72 74 61 69 6e 6c 79 20 75 6e 74 65 73 74 65 64  rtainly untested
6f40: 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 2e   in combination.
6f50: 0a 41 6e 79 20 6f 72 20 61 6c 6c 20 6f 66 20 74  .Any or all of t
6f60: 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79  hese options may
6f70: 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   be removed from
6f80: 20 74 68 65 20 63 6f 64 65 20 69 6e 20 66 75 74   the code in fut
6f90: 75 72 65 20 72 65 6c 65 61 73 65 73 0a 61 6e 64  ure releases.and
6fa0: 20 77 69 74 68 6f 75 74 20 77 61 72 6e 69 6e 67   without warning
6fb0: 2e 20 20 46 6f 72 20 61 6e 79 20 70 61 72 74 69  .  For any parti
6fc0: 63 75 6c 61 72 20 72 65 6c 65 61 73 65 2c 20 73  cular release, s
6fd0: 6f 6d 65 20 6f 66 20 74 68 65 73 65 0a 6f 70 74  ome of these.opt
6fe0: 69 6f 6e 73 20 6d 61 79 20 63 61 75 73 65 20 63  ions may cause c
6ff0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20 72  ompile-time or r
7000: 75 6e 2d 74 69 6d 65 20 66 61 69 6c 75 72 65 73  un-time failures
7010: 2c 20 70 61 72 74 69 63 75 6c 61 72 6c 79 0a 77  , particularly.w
7020: 68 65 6e 20 75 73 65 64 20 69 6e 20 63 6f 6d 62  hen used in comb
7030: 69 6e 61 74 69 6f 6e 20 77 69 74 68 20 6f 74 68  ination with oth
7040: 65 72 20 6f 70 74 69 6f 6e 73 2e 3c 2f 70 3e 0a  er options.</p>.
7050: 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f  .<tcl>.COMPILE_O
7060: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
7070: 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b  IT_ALTERTABLE} {
7080: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
7090: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
70a0: 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41  the .  [ALTER TA
70b0: 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  BLE] command is 
70c0: 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20  not included in 
70d0: 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20  the .  library. 
70e0: 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c  Executing an [AL
70f0: 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65  TER TABLE] state
7100: 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20 70 61  ment causes a pa
7110: 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f  rse error..}..CO
7120: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7130: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a  LITE_OMIT_ANALYZ
7140: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  E} {.  When this
7150: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
7160: 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45  ed, the [ANALYZE
7170: 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69  ] command is omi
7180: 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20  tted from.  the 
7190: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
71a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
71b0: 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a  _OMIT_ATTACH} {.
71c0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
71d0: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
71e0: 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20  he [ATTACH] and 
71f0: 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64  [DETACH] command
7200: 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20  s are.  omitted 
7210: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a  from the build..
7220: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7230: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
7240: 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a  UTHORIZATION} {.
7250: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
7260: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
7270: 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63   authorization c
7280: 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20  allback feature 
7290: 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61  from the.  libra
72a0: 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33  ry. The [sqlite3
72b0: 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28  _set_authorizer(
72c0: 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20  )] API function 
72d0: 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20  is not present. 
72e0: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
72f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7300: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
7310: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b  AUTOINCREMENT} {
7320: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
7330: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
7340: 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52 45  he .  [AUTOINCRE
7350: 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c  MENT] functional
7360: 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73 20 0a  ity. When this .
7370: 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65    is macro is de
7380: 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64  fined, columns d
7390: 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b  eclared as .  "[
73a0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
73b0: 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45  KEY] AUTOINCREME
73c0: 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20  NT".  behave in 
73d0: 74 68 65 20 73 61 6d 65 20 77 61 79 20 61 73 20  the same way as 
73e0: 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64  columns declared
73f0: 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52   as "[INTEGER PR
7400: 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e  IMARY KEY]" when
7410: 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e   a .  NULL is in
7420: 73 65 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69  serted. The sqli
7430: 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74  te_sequence syst
7440: 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74  em table is neit
7450: 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72  her created, nor
7460: 0a 20 20 72 65 73 70 65 63 74 65 64 20 69 66 20  .  respected if 
7470: 69 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74  it already exist
7480: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
7490: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
74a0: 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20  T_AUTOINIT} {.  
74b0: 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f  For backwards co
74c0: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
74d0: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
74e0: 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c  of SQLite that l
74f0: 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74  ack.  the [sqlit
7500: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
7510: 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20   interface, the 
7520: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
7530: 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ize()] interface
7540: 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74  .  is called aut
7550: 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20  omatically upon 
7560: 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e  entry to certain
7570: 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65 73 20   key interfaces 
7580: 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74  such as.  [sqlit
7590: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
75a0: 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65  ite3_vfs_registe
75b0: 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74  r()], and [sqlit
75c0: 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20  e3_mprintf()].. 
75d0: 20 54 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66   The overhead of
75e0: 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74   invoking [sqlit
75f0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
7600: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
7610: 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79  n this.  way may
7620: 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62   be omitted by b
7630: 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77  uilding SQLite w
7640: 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f  ith the SQLITE_O
7650: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43  MIT_AUTOINIT.  C
7660: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
7670: 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74  cro.  When built
7680: 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d   using SQLITE_OM
7690: 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c  IT_AUTOINIT, SQL
76a0: 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61  ite.  will not a
76b0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69  utomatically ini
76c0: 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61  tialize itself a
76d0: 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  nd the applicati
76e0: 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64 0a 20  on is required. 
76f0: 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69   to invoke [sqli
7700: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
7710: 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72  ] directly prior
7720: 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73   to beginning us
7730: 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74  e of the.  SQLit
7740: 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
7750: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7760: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41  LITE_OMIT_AUTOMA
7770: 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20 20 54  TIC_INDEX} {.  T
7780: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
7790: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a  ed to omit the .
77a0: 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64    [automatic ind
77b0: 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f 6e 61  exing] functiona
77c0: 6c 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  lity..}..COMPILE
77d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
77e0: 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 7d 20  OMIT_AUTORESET} 
77f0: 7b 0a 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  {.  By default, 
7800: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  the [sqlite3_ste
7810: 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77  p()] interface w
7820: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
7830: 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69  y invoke.  [sqli
7840: 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74 6f 20  te3_reset()] to 
7850: 72 65 73 65 74 20 74 68 65 20 5b 70 72 65 70 61  reset the [prepa
7860: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69  red statement] i
7870: 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  f necessary.  Th
7880: 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is.  compile-tim
7890: 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73  e option changes
78a0: 20 74 68 61 74 20 62 65 68 61 76 69 6f 72 20 73   that behavior s
78b0: 6f 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f  o that [sqlite3_
78c0: 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72  step()] will.  r
78d0: 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49  eturn [SQLITE_MI
78e0: 53 55 53 45 5d 20 69 66 20 69 74 20 63 61 6c 6c  SUSE] if it call
78f0: 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72  ed again after r
7900: 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e  eturning anythin
7910: 67 20 6f 74 68 65 72 0a 20 20 74 68 61 6e 20 5b  g other.  than [
7920: 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51  SQLITE_ROW], [SQ
7930: 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b  LITE_BUSY], or [
7940: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75  SQLITE_LOCKED] u
7950: 6e 6c 65 73 73 20 74 68 65 72 65 20 77 61 73 20  nless there was 
7960: 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69 6e 67  an.  intervening
7970: 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65   call to [sqlite
7980: 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49  3_reset()]...  I
7990: 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  n SQLite version
79a0: 20 33 2e 36 2e 32 33 2e 31 20 61 6e 64 20 65 61   3.6.23.1 and ea
79b0: 72 6c 69 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f  rlier, [sqlite3_
79c0: 73 74 65 70 28 29 5d 20 75 73 65 64 20 74 6f 20  step()] used to 
79d0: 61 6c 77 61 79 73 0a 20 20 72 65 74 75 72 6e 20  always.  return 
79e0: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
79f0: 69 66 20 69 74 20 77 61 73 20 69 6e 76 6f 6b 65  if it was invoke
7a00: 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72 65  d again after re
7a10: 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67  turning anything
7a20: 0a 20 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53  .  other than [S
7a30: 51 4c 49 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f  QLITE_ROW] witho
7a40: 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e  ut an intervenin
7a50: 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  g call to [sqlit
7a60: 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 20 20 54  e3_reset()]..  T
7a70: 68 69 73 20 63 61 75 73 65 64 20 70 72 6f 62 6c  his caused probl
7a80: 65 6d 73 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72  ems on some poor
7a90: 6c 79 20 77 72 69 74 74 65 6e 20 73 6d 61 72 74  ly written smart
7aa0: 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f  phone applicatio
7ab0: 6e 73 20 77 68 69 63 68 0a 20 20 64 69 64 20 6e  ns which.  did n
7ac0: 6f 74 20 63 6f 72 72 65 63 74 6c 79 20 68 61 6e  ot correctly han
7ad0: 64 6c 65 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  dle the [SQLITE_
7ae0: 4c 4f 43 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c  LOCKED] and [SQL
7af0: 49 54 45 5f 42 55 53 59 5d 20 65 72 72 6f 72 20  ITE_BUSY] error 
7b00: 0a 20 20 72 65 74 75 72 6e 73 2e 20 20 52 61 74  .  returns.  Rat
7b10: 68 65 72 20 74 68 61 6e 20 66 69 78 20 74 68 65  her than fix the
7b20: 20 6d 61 6e 79 20 64 65 66 65 63 74 69 76 65 20   many defective 
7b30: 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69  smartphone appli
7b40: 63 61 74 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20  cations, .  the 
7b50: 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69  behavior of SQLi
7b60: 74 65 20 77 61 73 20 63 68 61 6e 67 65 64 20 69  te was changed i
7b70: 6e 20 33 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75  n 3.6.23.2 to au
7b80: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 73 65  tomatically rese
7b90: 74 0a 20 20 74 68 65 20 70 72 65 70 61 72 65 64  t.  the prepared
7ba0: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 42 75 74   statement.  But
7bb0: 20 74 68 61 74 20 63 68 61 6e 67 65 64 20 63 61   that changed ca
7bc0: 75 73 65 64 20 69 73 73 75 65 73 20 69 6e 20 6f  used issues in o
7bd0: 74 68 65 72 20 0a 20 20 69 6d 70 72 6f 70 65 72  ther .  improper
7be0: 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61  ly implemented a
7bf0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
7c00: 20 77 65 72 65 20 61 63 74 75 61 6c 6c 79 20 6c   were actually l
7c10: 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20  ooking.  for an 
7c20: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
7c30: 72 65 74 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e  return to termin
7c40: 61 74 65 20 74 68 65 69 72 20 71 75 65 72 79 20  ate their query 
7c50: 6c 6f 6f 70 73 2e 20 20 28 41 6e 79 74 69 6d 65  loops.  (Anytime
7c60: 0a 20 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  .  an applicatio
7c70: 6e 20 67 65 74 73 20 61 6e 20 53 51 4c 49 54 45  n gets an SQLITE
7c80: 5f 4d 49 53 55 53 45 20 65 72 72 6f 72 20 63 6f  _MISUSE error co
7c90: 64 65 20 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20  de from SQLite, 
7ca0: 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 0a 20  that means the. 
7cb0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
7cc0: 6d 69 73 75 73 69 6e 67 20 74 68 65 20 53 51 4c  misusing the SQL
7cd0: 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ite interface an
7ce0: 64 20 69 73 20 74 68 75 73 20 69 6e 63 6f 72 72  d is thus incorr
7cf0: 65 63 74 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e  ectly.  implemen
7d00: 74 65 64 2e 29 20 20 54 68 65 20 53 51 4c 49 54  ted.)  The SQLIT
7d10: 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54  E_OMIT_AUTORESET
7d20: 20 69 6e 74 65 72 66 61 63 65 20 77 61 73 20 61   interface was a
7d30: 64 64 65 64 20 74 6f 20 53 51 4c 69 74 65 0a 20  dded to SQLite. 
7d40: 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 35 20 69   version 3.7.5 i
7d50: 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67  n an effort to g
7d60: 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62  et all of the (b
7d70: 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61  roken).  applica
7d80: 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67  tions to work ag
7d90: 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69  ain without havi
7da0: 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66  ng to actually f
7db0: 69 78 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ix the applicati
7dc0: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
7dd0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
7de0: 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20  MIT_AUTOVACUUM} 
7df0: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
7e00: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
7e10: 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f  he library canno
7e20: 74 20 63 72 65 61 74 65 20 6f 72 20 77 72 69 74  t create or writ
7e30: 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65  e to .  database
7e40: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b  s that support [
7e50: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20  auto_vacuum]..  
7e60: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41  Executing a [PRA
7e70: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
7e80: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
7e90: 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69  t an error.  (si
7ea0: 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47  nce unknown PRAG
7eb0: 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79  MAs are silently
7ec0: 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64   ignored), but d
7ed0: 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61  oes not return a
7ee0: 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69   value.  or modi
7ef0: 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75  fy the auto-vacu
7f00: 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64  um flag in the d
7f10: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66  atabase file. If
7f20: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 61 74   a database that
7f30: 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f  .  supports auto
7f40: 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65  -vacuum is opene
7f50: 64 20 62 79 20 61 20 6c 69 62 72 61 72 79 20 63  d by a library c
7f60: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
7f70: 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69  s option, it.  i
7f80: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
7f90: 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f  opened in read-o
7fa0: 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d  nly mode..}..COM
7fb0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7fc0: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
7fd0: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
7fe0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
7ff0: 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  isables the use 
8000: 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74 68 20  of indices with 
8010: 57 48 45 52 45 20 63 6c 61 75 73 65 20 74 65 72  WHERE clause ter
8020: 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79  ms.  that employ
8030: 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65   the BETWEEN ope
8040: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
8050: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8060: 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52  _OMIT_BLOB_LITER
8070: 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  AL} {.  When thi
8080: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
8090: 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70  ned, it is not p
80a0: 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69  ossible to speci
80b0: 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61  fy a blob in.  a
80c0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
80d0: 75 73 69 6e 67 20 74 68 65 20 58 27 41 42 43 44  using the X'ABCD
80e0: 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d  ' syntax..}..COM
80f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8100: 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f  ITE_OMIT_BTREECO
8110: 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  UNT} {.  When th
8120: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
8130: 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  ined, an optimiz
8140: 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c  ation that accel
8150: 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a  erates counting.
8160: 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e    all entries in
8170: 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68   a table (in oth
8180: 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74  er words, an opt
8190: 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68  imization that h
81a0: 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63  elps.  "SELECT c
81b0: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62  ount(*) FROM tab
81c0: 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72 29 20  le" run faster) 
81d0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  is omitted..}..C
81e0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
81f0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54  QLITE_OMIT_BUILT
8200: 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41 20 73  IN_TEST} {.  A s
8210: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 62  tandard SQLite b
8220: 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20 61 20  uild includes a 
8230: 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20  small amount of 
8240: 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c 65 64  logic controlled
8250: 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74  .  by the [sqlit
8260: 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28  e3_test_control(
8270: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 68 61  )] interface tha
8280: 74 20 69 73 20 75 73 65 64 20 74 6f 20 65 78 65  t is used to exe
8290: 72 63 69 73 65 0a 20 20 70 61 72 74 73 20 6f 66  rcise.  parts of
82a0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
82b0: 20 74 68 61 74 20 61 72 65 20 64 69 66 66 69 63   that are diffic
82c0: 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 61  ult to control a
82d0: 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69 6e 67  nd measure using
82e0: 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  .  the standard 
82f0: 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  API.  This optio
8300: 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62 75 69  n omits that bui
8310: 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67 69 63  lt-in test logic
8320: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8330: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8340: 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69 73 20  _CAST} {.  This 
8350: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
8360: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
8370: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43 41 53  port for the CAS
8380: 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43  T operator..}..C
8390: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
83a0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b  QLITE_OMIT_CHECK
83b0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
83c0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
83d0: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
83e0: 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  for CHECK constr
83f0: 61 69 6e 74 73 2e 0a 20 20 54 68 65 20 70 61 72  aints..  The par
8400: 73 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61  ser will still a
8410: 63 63 65 70 74 20 43 48 45 43 4b 20 63 6f 6e 73  ccept CHECK cons
8420: 74 72 61 69 6e 74 73 20 69 6e 20 53 51 4c 20 73  traints in SQL s
8430: 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65  tatements,.  the
8440: 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20  y will just not 
8450: 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a  be enforced..}..
8460: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8470: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
8480: 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d  ILEOPTION_DIAGS}
8490: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
84a0: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
84b0: 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   the compile-tim
84c0: 65 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73  e option diagnos
84d0: 74 69 63 73 20 61 76 61 69 6c 61 62 6c 65 0a 20  tics available. 
84e0: 20 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c   in SQLite, incl
84f0: 75 64 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  uding the [sqlit
8500: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
8510: 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b  _used()] and.  [
8520: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8530: 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43  ption_get()] C/C
8540: 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68  ++ functions, th
8550: 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70  e.  [sqlite_comp
8560: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
8570: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f  ] and [sqlite_co
8580: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
8590: 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  )] SQL functions
85a0: 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d  ,.  and the [com
85b0: 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61  pile_options pra
85c0: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
85d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
85e0: 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b  OMIT_COMPLETE} {
85f0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
8600: 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74  auses the [sqlit
8610: 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61  e3_complete()] a
8620: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  nd [sqlite3_comp
8630: 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e 74 65  lete16()].  inte
8640: 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f 6d 69  rfaces to be omi
8650: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
8660: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8670: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
8680: 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LECT} {.  This o
8690: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
86a0: 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f 75   omit the compou
86b0: 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63  nd [SELECT] func
86c0: 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53  tionality. .  [S
86d0: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
86e0: 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20 0a  s that use the .
86f0: 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41    UNION, UNION A
8700: 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20 6f 72  LL, INTERSECT or
8710: 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64   EXCEPT compound
8720: 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74 6f 72   SELECT operator
8730: 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73 65 20  s will .  cause 
8740: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
8750: 20 20 41 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74    An [INSERT] st
8760: 61 74 65 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c  atement with mul
8770: 74 69 70 6c 65 20 76 61 6c 75 65 73 20 69 6e 20  tiple values in 
8780: 74 68 65 20 56 41 4c 55 45 53 20 63 6c 61 75 73  the VALUES claus
8790: 65 20 69 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74  e is.  implement
87a0: 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73  ed internally as
87b0: 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45   a compound SELE
87c0: 43 54 2e 20 20 48 65 6e 63 65 2c 20 74 68 69 73  CT.  Hence, this
87d0: 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64   option also.  d
87e0: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
87f0: 69 74 79 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f  ity to insert mo
8800: 72 65 20 74 68 61 6e 20 61 20 73 69 6e 67 6c 65  re than a single
8810: 20 72 6f 77 20 75 73 69 6e 67 20 61 6e 0a 20 20   row using an.  
8820: 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20  INSERT INTO ... 
8830: 56 41 4c 55 45 53 20 2e 2e 2e 20 73 74 61 74 65  VALUES ... state
8840: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
8850: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8860: 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55  OMIT_DATETIME_FU
8870: 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NCS} {.  If this
8880: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
8890: 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69  ed, SQLite's bui
88a0: 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74  lt-in date and t
88b0: 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e  ime manipulation
88c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  .  functions are
88d0: 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66   omitted. Specif
88e0: 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20  ically, the SQL 
88f0: 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e  functions julian
8900: 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20  day(), date(),. 
8910: 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d   time(), datetim
8920: 65 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65  e() and strftime
8930: 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  () are not avail
8940: 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c  able. The defaul
8950: 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65  t column.  value
8960: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
8970: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64  CURRENT_DATE and
8980: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
8990: 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61  MP are still ava
89a0: 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  ilable..}..COMPI
89b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
89c0: 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d  E_OMIT_DECLTYPE}
89d0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
89e0: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
89f0: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
8a00: 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  or the.  [sqlite
8a10: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
8a20: 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
8a30: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
8a40: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
8a50: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
8a60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
8a70: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20  MIT_DEPRECATED} 
8a80: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
8a90: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
8aa0: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
8ab0: 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d  r interfaces.  m
8ac0: 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63 61  arked as depreca
8ad0: 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75  ted.  This inclu
8ae0: 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  des .  [sqlite3_
8af0: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
8b00: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65  )],.  [sqlite3_e
8b10: 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71  xpired()],.  [sq
8b20: 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62  lite3_transfer_b
8b30: 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73  indings()],.  [s
8b40: 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65  qlite3_global_re
8b50: 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c  cover()],.  [sql
8b60: 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61  ite3_thread_clea
8b70: 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  nup()] and.  [sq
8b80: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61  lite3_memory_ala
8b90: 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  rm()] interfaces
8ba0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8bb0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8bc0: 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69  _DISKIO} {.  Thi
8bd0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
8be0: 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77  ll support for w
8bf0: 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69  riting to the di
8c00: 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20  sk and forces.  
8c10: 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78 69  databases to exi
8c20: 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c  st in memory onl
8c30: 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  y.  This option 
8c40: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20  has not been .  
8c50: 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70  maintained and p
8c60: 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74  robably does not
8c70: 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72   work with newer
8c80: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
8c90: 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ite..}..COMPILE_
8ca0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
8cb0: 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20  MIT_EXPLAIN} {. 
8cc0: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
8cd0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
8ce0: 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61   [EXPLAIN] comma
8cf0: 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  nd to be omitted
8d00: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
8d10: 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20  ary. Attempting 
8d20: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45  to execute an [E
8d30: 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e  XPLAIN] statemen
8d40: 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70  t will cause a p
8d50: 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a  arse.  error..}.
8d60: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8d70: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  {SQLITE_OMIT_FLA
8d80: 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54  G_PRAGMAS} {.  T
8d90: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
8da0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73   support for a s
8db0: 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41  ubset of [PRAGMA
8dc0: 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a  ] commands that.
8dd0: 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74 20    query and set 
8de0: 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69  boolean properti
8df0: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
8e00: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
8e10: 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
8e20: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
8e30: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
8e40: 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  it floating-poin
8e50: 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74  t number support
8e60: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
8e70: 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e  .  library. When
8e80: 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65 63   specified, spec
8e90: 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e  ifying a floatin
8ea0: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61  g point number a
8eb0: 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28  s a literal .  (
8ec0: 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73  i.e. "1.01") res
8ed0: 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65 20  ults in a parse 
8ee0: 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20  error...  <p>In 
8ef0: 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73  the future, this
8f00: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f   option may also
8f10: 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66   disable other f
8f20: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20  loating point . 
8f30: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20   functionality, 
8f40: 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20  for example the 
8f50: 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
8f60: 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73  double()], .  [s
8f70: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
8f80: 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  le()], [sqlite3_
8f90: 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20  value_double()] 
8fa0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
8fb0: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20  olumn_double()] 
8fc0: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20  API functions.. 
8fd0: 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   </p>.}..COMPILE
8fe0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8ff0: 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59  OMIT_FOREIGN_KEY
9000: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
9010: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
9020: 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b   then [foreign k
9030: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73  ey constraint] s
9040: 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72  yntax is.  not r
9050: 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f  ecognized..}..CO
9060: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9070: 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41  LITE_OMIT_GET_TA
9080: 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
9090: 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
90a0: 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33  ort for [sqlite3
90b0: 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e  _get_table()] an
90c0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  d.  [sqlite3_fre
90d0: 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65  e_table()] to be
90e0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
90f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9100: 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f  ITE_OMIT_INCRBLO
9110: 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  B} {.  This opti
9120: 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72  on causes suppor
9130: 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62  t for [sqlite3_b
9140: 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  lob | incrementa
9150: 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f  l BLOB I/O].  to
9160: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
9170: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9180: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45  SQLITE_OMIT_INTE
9190: 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20  GRITY_CHECK} {. 
91a0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
91b0: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
91c0: 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68  he [integrity_ch
91d0: 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  eck pragma]..}..
91e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
91f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45  SQLITE_OMIT_LIKE
9200: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
9210: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
9220: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
9230: 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f  ity of SQLite to
9240: 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20   use indices to 
9250: 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b  help.  resolve [
9260: 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d  LIKE] and [GLOB]
9270: 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20   operators in a 
9280: 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a  WHERE clause..}.
9290: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
92a0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41  {SQLITE_OMIT_LOA
92b0: 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20  D_EXTENSION} {. 
92c0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
92d0: 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65 78  ts the entire ex
92e0: 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
92f0: 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20  mechanism from. 
9300: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
9310: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  ng [sqlite3_enab
9320: 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
9330: 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  n()] and.  [sqli
9340: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
9350: 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  on()] interfaces
9360: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9370: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
9380: 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20  _LOCALTIME} {.  
9390: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
93a0: 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65  s the "localtime
93b0: 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20  " modifier from 
93c0: 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
93d0: 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  e.  functions.  
93e0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73  This option is s
93f0: 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20  ometimes useful 
9400: 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63  when trying to c
9410: 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74  ompile.  the dat
9420: 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
9430: 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f  ions on a platfo
9440: 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  rm that does not
9450: 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63   support the.  c
9460: 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20  oncept of local 
9470: 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
9480: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9490: 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20  OMIT_LOOKASIDE} 
94a0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
94b0: 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61  omits the [looka
94c0: 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  side memory allo
94d0: 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  cator]..}..COMPI
94e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
94f0: 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d  E_OMIT_MEMORYDB}
9500: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69   {.  When this i
9510: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
9520: 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20  ibrary does not 
9530: 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63  respect the spec
9540: 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e  ial database.  n
9550: 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28  ame ":memory:" (
9560: 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f  normally used to
9570: 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d   create an [in-m
9580: 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29  emory database])
9590: 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79  . If .  ":memory
95a0: 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f 20  :" is passed to 
95b0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
95c0: 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  , [sqlite3_open1
95d0: 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69  6()], or.  [sqli
95e0: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
95f0: 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69 73  a file with this
9600: 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20   name will be . 
9610: 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74   opened or creat
9620: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
9630: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
9640: 49 54 5f 4d 45 52 47 45 5f 53 4f 52 54 7d 20 7b  IT_MERGE_SORT} {
9650: 0a 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  .  Beginning wit
9660: 68 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f  h SQLite [versio
9670: 6e 20 33 2e 37 2e 38 5d 2c 20 6c 61 72 67 65 20  n 3.7.8], large 
9680: 73 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73 20  sort operations 
9690: 73 75 63 68 20 61 73 0a 20 20 75 73 65 64 20 62  such as.  used b
96a0: 79 20 5b 43 52 45 41 54 45 20 49 4e 44 45 58 5d  y [CREATE INDEX]
96b0: 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 69 6d   commands are im
96c0: 70 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 20  plemented using 
96d0: 61 6e 20 65 78 74 65 72 6e 61 6c 0a 20 20 6d 65  an external.  me
96e0: 72 67 65 20 73 6f 72 74 20 72 61 74 68 65 72 20  rge sort rather 
96f0: 74 68 61 6e 20 69 6e 73 65 72 74 69 6f 6e 73 20  than insertions 
9700: 69 6e 74 6f 20 61 20 42 2d 54 72 65 65 2e 20 20  into a B-Tree.  
9710: 54 68 69 73 20 72 65 73 75 6c 74 73 20 69 6e 20  This results in 
9720: 62 65 74 74 65 72 0a 20 20 63 61 63 68 65 20 6c  better.  cache l
9730: 6f 63 61 6c 69 74 79 20 61 6e 64 20 61 6e 20 6f  ocality and an o
9740: 72 64 65 72 2d 6f 66 2d 6d 61 67 6e 69 74 75 64  rder-of-magnitud
9750: 65 20 73 70 65 65 64 20 69 6d 70 72 6f 76 65 6d  e speed improvem
9760: 65 6e 74 20 66 6f 72 20 73 6f 72 74 73 20 74 68  ent for sorts th
9770: 61 74 0a 20 20 61 72 65 20 6c 61 72 67 65 72 20  at.  are larger 
9780: 74 68 61 6e 20 74 68 65 20 66 69 6c 65 73 79 73  than the filesys
9790: 74 65 6d 20 63 61 63 68 65 2e 20 20 4f 6e 20 74  tem cache.  On t
97a0: 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 74  he other hand, t
97b0: 68 65 20 6d 65 72 67 65 20 73 6f 72 74 0a 20 20  he merge sort.  
97c0: 6c 6f 67 69 63 20 75 73 65 73 20 73 6f 6d 65 20  logic uses some 
97d0: 63 6f 64 65 20 73 70 61 63 65 20 61 6e 64 20 69  code space and i
97e0: 73 20 73 6c 69 67 68 74 6c 79 20 28 31 25 29 20  s slightly (1%) 
97f0: 73 6c 6f 77 65 72 20 66 6f 72 20 5b 43 52 45 41  slower for [CREA
9800: 54 45 20 49 4e 44 45 58 5d 0a 20 20 6f 6e 20 73  TE INDEX].  on s
9810: 6d 61 6c 6c 20 74 61 62 6c 65 73 2e 20 20 54 68  mall tables.  Th
9820: 65 20 65 78 74 65 72 6e 61 6c 20 6d 65 72 67 65  e external merge
9830: 20 73 6f 72 74 20 63 61 6e 20 62 65 20 64 69 73   sort can be dis
9840: 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 69 73  abled using this
9850: 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  .  compile-time 
9860: 6f 70 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49  option..}..COMPI
9870: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9880: 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49  E_OMIT_OR_OPTIMI
9890: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ZATION} {.  This
98a0: 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73   option disables
98b0: 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20   the ability of 
98c0: 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 61 6e  SQLite to use an
98d0: 20 69 6e 64 65 78 20 74 6f 67 65 74 68 65 72 0a   index together.
98e0: 20 20 77 69 74 68 20 74 65 72 6d 73 20 6f 66 20    with terms of 
98f0: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  a WHERE clause c
9900: 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68 65 20  onnected by the 
9910: 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a  OR operator..}..
9920: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9930: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45  SQLITE_OMIT_PAGE
9940: 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44  R_PRAGMAS} {.  D
9950: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
9960: 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61  ion omits pragma
9970: 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65  s related to the
9980: 20 70 61 67 65 72 20 73 75 62 73 79 73 74 65 6d   pager subsystem
9990: 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69   from .  the bui
99a0: 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ld..}..COMPILE_O
99b0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
99c0: 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20 20 54  IT_PRAGMA} {.  T
99d0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
99e0: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 5b  ed to omit the [
99f0: 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a  PRAGMA] command.
9a00: 20 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61    from the libra
9a10: 72 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 69 74  ry. Note that it
9a20: 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65   is useful to de
9a30: 66 69 6e 65 20 74 68 65 20 6d 61 63 72 6f 73 20  fine the macros 
9a40: 74 68 61 74 20 6f 6d 69 74 0a 20 20 73 70 65 63  that omit.  spec
9a50: 69 66 69 63 20 70 72 61 67 6d 61 73 20 69 6e 20  ific pragmas in 
9a60: 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 69 73  addition to this
9a70: 2c 20 61 73 20 74 68 65 79 20 6d 61 79 20 61 6c  , as they may al
9a80: 73 6f 20 72 65 6d 6f 76 65 20 73 75 70 70 6f 72  so remove suppor
9a90: 74 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e 20 6f  ting code.  in o
9aa0: 74 68 65 72 20 73 75 62 2d 73 79 73 74 65 6d 73  ther sub-systems
9ab0: 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 72 65 6d  . This macro rem
9ac0: 6f 76 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41  oves the [PRAGMA
9ad0: 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a  ] command only..
9ae0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9af0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
9b00: 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b  ROGRESS_CALLBACK
9b10: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9b20: 6e 20 6d 61 79 20 62 65 20 64 65 66 69 6e 65 64  n may be defined
9b30: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 61 70   to omit the cap
9b40: 61 62 69 6c 69 74 79 20 74 6f 20 69 73 73 75 65  ability to issue
9b50: 20 22 70 72 6f 67 72 65 73 73 22 20 0a 20 20 63   "progress" .  c
9b60: 61 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e 67 20  allbacks during 
9b70: 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53 51 4c  long-running SQL
9b80: 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65   statements. The
9b90: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f   .  [sqlite3_pro
9ba0: 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 29 5d  gress_handler()]
9bb0: 0a 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20  .  API function 
9bc0: 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 69  is not present i
9bd0: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d  n the library..}
9be0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9bf0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55   {SQLITE_OMIT_QU
9c00: 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a 20 20  ICKBALANCE} {.  
9c10: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
9c20: 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  s an alternative
9c30: 2c 20 66 61 73 74 65 72 20 42 2d 54 72 65 65 20  , faster B-Tree 
9c40: 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74 69 6e  balancing routin
9c50: 65 2e 0a 20 20 55 73 69 6e 67 20 74 68 69 73 20  e..  Using this 
9c60: 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c  option makes SQL
9c70: 69 74 65 20 73 6c 69 67 68 74 6c 79 20 73 6d 61  ite slightly sma
9c80: 6c 6c 65 72 20 61 74 20 74 68 65 20 65 78 70 65  ller at the expe
9c90: 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e 67 20  nse of.  making 
9ca0: 69 74 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20  it run slightly 
9cb0: 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49  slower..}..COMPI
9cc0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9cd0: 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58 7d 20  E_OMIT_REINDEX} 
9ce0: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
9cf0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
9d00: 20 74 68 65 20 5b 52 45 49 4e 44 45 58 5d 0a 20   the [REINDEX]. 
9d10: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20   command is not 
9d20: 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20  included in the 
9d30: 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75  library..  Execu
9d40: 74 69 6e 67 20 61 20 5b 52 45 49 4e 44 45 58 5d  ting a [REINDEX]
9d50: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65   statement cause
9d60: 73 20 0a 20 20 61 20 70 61 72 73 65 20 65 72 72  s .  a parse err
9d70: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
9d80: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
9d90: 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41  IT_SCHEMA_PRAGMA
9da0: 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  S} {.  Defining 
9db0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
9dc0: 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75  s pragmas for qu
9dd0: 65 72 79 69 6e 67 20 74 68 65 20 64 61 74 61 62  erying the datab
9de0: 61 73 65 20 73 63 68 65 6d 61 20 66 72 6f 6d 20  ase schema from 
9df0: 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
9e00: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9e10: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  {SQLITE_OMIT_SCH
9e20: 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47  EMA_VERSION_PRAG
9e30: 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
9e40: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
9e50: 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20  its pragmas for 
9e60: 71 75 65 72 79 69 6e 67 20 61 6e 64 20 6d 6f 64  querying and mod
9e70: 69 66 79 69 6e 67 20 74 68 65 20 0a 20 20 64 61  ifying the .  da
9e80: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 76 65  tabase schema ve
9e90: 72 73 69 6f 6e 20 61 6e 64 20 75 73 65 72 20 76  rsion and user v
9ea0: 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20  ersion from the 
9eb0: 62 75 69 6c 64 2e 20 53 70 65 63 69 66 69 63 61  build. Specifica
9ec0: 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73 63 68  lly, the .  [sch
9ed0: 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61 6e 64  ema_version] and
9ee0: 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e 5d 20   [user_version] 
9ef0: 50 52 41 47 4d 41 73 20 61 72 65 20 6f 6d 69 74  PRAGMAs are omit
9f00: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
9f10: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
9f20: 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45  MIT_SHARED_CACHE
9f30: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9f40: 6e 20 62 75 69 6c 64 73 20 53 51 4c 69 74 65 20  n builds SQLite 
9f50: 77 69 74 68 6f 75 74 20 73 75 70 70 6f 72 74 20  without support 
9f60: 66 6f 72 20 73 68 61 72 65 64 2d 63 61 63 68 65  for shared-cache
9f70: 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b 73 71   mode..  The [sq
9f80: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61  lite3_enable_sha
9f90: 72 65 64 5f 63 61 63 68 65 28 29 5d 20 69 73 20  red_cache()] is 
9fa0: 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20 77 69  omitted along wi
9fb0: 74 68 20 61 20 66 61 69 72 0a 20 20 61 6d 6f 75  th a fair.  amou
9fc0: 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77 69 74 68  nt of logic with
9fd0: 69 6e 20 74 68 65 20 42 2d 54 72 65 65 20 73 75  in the B-Tree su
9fe0: 62 73 79 73 74 65 6d 20 61 73 73 6f 63 69 61 74  bsystem associat
9ff0: 65 64 20 77 69 74 68 20 73 68 61 72 65 64 0a 20  ed with shared. 
a000: 20 63 61 63 68 65 20 6d 61 6e 61 67 65 6d 65 6e   cache managemen
a010: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
a020: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
a030: 54 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a 20 20  T_SUBQUERY} {.  
a040: 49 66 20 64 65 66 69 6e 65 64 2c 20 73 75 70 70  If defined, supp
a050: 6f 72 74 20 66 6f 72 20 73 75 62 2d 73 65 6c 65  ort for sub-sele
a060: 63 74 73 20 61 6e 64 20 74 68 65 20 49 4e 28 29  cts and the IN()
a070: 20 6f 70 65 72 61 74 6f 72 20 61 72 65 20 6f 6d   operator are om
a080: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
a090: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a0a0: 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41 42  _OMIT_TCL_VARIAB
a0b0: 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  LE} {.  If this 
a0c0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
a0d0: 2c 20 74 68 65 6e 20 74 68 65 20 73 70 65 63 69  , then the speci
a0e0: 61 6c 20 22 24 3c 76 61 72 69 61 62 6c 65 2d 6e  al "$<variable-n
a0f0: 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20 20 75  ame>" syntax.  u
a100: 73 65 64 20 74 6f 20 61 75 74 6f 6d 61 74 69 63  sed to automatic
a110: 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20 76 61  ally bind SQL va
a120: 72 69 61 62 6c 65 73 20 74 6f 20 54 43 4c 20 76  riables to TCL v
a130: 61 72 69 61 62 6c 65 73 20 69 73 20 6f 6d 69 74  ariables is omit
a140: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
a150: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a160: 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a 20 20  MIT_TEMPDB} {.  
a170: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
a180: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54 45  s support for TE
a190: 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41 52 59 20  MP or TEMPORARY 
a1a0: 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  tables..}..COMPI
a1b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a1c0: 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20 7b 0a  E_OMIT_TRACE} {.
a1d0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
a1e0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
a1f0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f  the [sqlite3_pro
a200: 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  file()] and.  [s
a210: 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20  qlite3_trace()] 
a220: 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64 20 74  interfaces and t
a230: 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20  heir associated 
a240: 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  logic..}..COMPIL
a250: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a260: 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d 20 7b  _OMIT_TRIGGER} {
a270: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
a280: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
a290: 70 70 6f 72 74 20 66 6f 72 20 54 52 49 47 47 45  pport for TRIGGE
a2a0: 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68  R objects. Neith
a2b0: 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54  er the .  [CREAT
a2c0: 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20 5b 44  E TRIGGER] or [D
a2d0: 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20 20 63  ROP TRIGGER].  c
a2e0: 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69  ommands are avai
a2f0: 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61  lable in this ca
a300: 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70 74 69  se, and attempti
a310: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a 20 20  ng to execute.  
a320: 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75  either will resu
a330: 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72  lt in a parse er
a340: 72 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70 74 69  ror..  This opti
a350: 6f 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 73  on also disables
a360: 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20   enforcement of 
a370: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
a380: 73 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73 69 6e  straints],.  sin
a390: 63 65 20 74 68 65 20 63 6f 64 65 20 74 68 61 74  ce the code that
a3a0: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72 69 67   implements trig
a3b0: 67 65 72 73 20 61 6e 64 20 77 68 69 63 68 20 69  gers and which i
a3c0: 73 20 6f 6d 69 74 74 65 64 20 62 79 20 74 68 69  s omitted by thi
a3d0: 73 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c  s.  option is al
a3e0: 73 6f 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65  so used to imple
a3f0: 6d 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20 6b 65  ment [foreign ke
a400: 79 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43  y actions]..}..C
a410: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a420: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43  QLITE_OMIT_TRUNC
a430: 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  ATE_OPTIMIZATION
a440: 7d 20 7b 0a 20 20 41 20 64 65 66 61 75 6c 74 20  } {.  A default 
a450: 62 75 69 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c  build of SQLite,
a460: 20 69 66 20 61 20 5b 44 45 4c 45 54 45 5d 20 73   if a [DELETE] s
a470: 74 61 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20  tatement has no 
a480: 57 48 45 52 45 20 63 6c 61 75 73 65 0a 20 20 61  WHERE clause.  a
a490: 6e 64 20 6f 70 65 72 61 74 65 73 20 6f 6e 20 61  nd operates on a
a4a0: 20 74 61 62 6c 65 20 77 69 74 68 20 6e 6f 20 74   table with no t
a4b0: 72 69 67 67 65 72 73 2c 20 61 6e 20 6f 70 74 69  riggers, an opti
a4c0: 6d 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73 20  mization occurs 
a4d0: 74 68 61 74 0a 20 20 63 61 75 73 65 73 20 74 68  that.  causes th
a4e0: 65 20 44 45 4c 45 54 45 20 74 6f 20 6f 63 63 75  e DELETE to occu
a4f0: 72 20 62 79 20 64 72 6f 70 70 69 6e 67 20 61 6e  r by dropping an
a500: 64 20 72 65 63 72 65 61 74 69 6e 67 20 74 68 65  d recreating the
a510: 20 74 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70   table.  .  Drop
a520: 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74  ping and recreat
a530: 69 6e 67 20 61 20 74 61 62 6c 65 20 69 73 20 75  ing a table is u
a540: 73 75 61 6c 6c 79 20 6d 75 63 68 20 66 61 73 74  sually much fast
a550: 65 72 20 74 68 61 6e 20 64 65 6c 65 74 69 6e 67  er than deleting
a560: 0a 20 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6e  .  the table con
a570: 74 65 6e 74 20 72 6f 77 20 62 79 20 72 6f 77 2e  tent row by row.
a580: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 22 74    This is the "t
a590: 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61  runcate optimiza
a5a0: 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tion"..}..COMPIL
a5b0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a5c0: 5f 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20  _OMIT_UTF16} {. 
a5d0: 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75   This macro is u
a5e0: 73 65 64 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  sed to omit supp
a5f0: 6f 72 74 20 66 6f 72 20 55 54 46 31 36 20 74 65  ort for UTF16 te
a600: 78 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65  xt encoding. Whe
a610: 6e 20 74 68 69 73 20 69 73 0a 20 20 64 65 66 69  n this is.  defi
a620: 6e 65 64 20 61 6c 6c 20 41 50 49 20 66 75 6e 63  ned all API func
a630: 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74 75 72  tions that retur
a640: 6e 20 6f 72 20 61 63 63 65 70 74 20 55 54 46 31  n or accept UTF1
a650: 36 20 65 6e 63 6f 64 65 64 20 74 65 78 74 20 61  6 encoded text a
a660: 72 65 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c 65  re.  unavailable
a670: 2e 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e  . These function
a680: 73 20 63 61 6e 20 62 65 20 69 64 65 6e 74 69 66  s can be identif
a690: 69 65 64 20 62 79 20 74 68 65 20 66 61 63 74 20  ied by the fact 
a6a0: 74 68 61 74 20 74 68 65 79 20 65 6e 64 0a 20 20  that they end.  
a6b0: 77 69 74 68 20 27 31 36 27 2c 20 66 6f 72 20 65  with '16', for e
a6c0: 78 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f  xample [sqlite3_
a6d0: 70 72 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73  prepare16()], [s
a6e0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
a6f0: 78 74 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73  xt16()] and.  [s
a700: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
a710: 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  16()]..}..COMPIL
a720: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a730: 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a  _OMIT_VACUUM} {.
a740: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
a750: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
a760: 68 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f  he [VACUUM].  co
a770: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63  mmand is not inc
a780: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62  luded in the lib
a790: 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e  rary..  Executin
a7a0: 67 20 61 20 5b 56 41 43 55 55 4d 5d 20 73 74 61  g a [VACUUM] sta
a7b0: 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20  tement causes . 
a7c0: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
a7d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a7e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  N {SQLITE_OMIT_V
a7f0: 49 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  IEW} {.  Definin
a800: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
a810: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
a820: 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65  VIEW objects. Ne
a830: 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52  ither the .  [CR
a840: 45 41 54 45 20 56 49 45 57 5d 20 6e 6f 72 20 74  EATE VIEW] nor t
a850: 68 65 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20  he [DROP VIEW]. 
a860: 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76   commands are av
a870: 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20  ailable in this 
a880: 63 61 73 65 2c 20 61 6e 64 0a 20 20 61 74 74 65  case, and.  atte
a890: 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74  mpting to execut
a8a0: 65 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65  e either will re
a8b0: 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20  sult in a parse 
a8c0: 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e  error...  WARNIN
a8d0: 47 3a 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f  G: If this macro
a8e0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20   is defined, it 
a8f0: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73  will not be poss
a900: 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64  ible to open a d
a910: 61 74 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68  atabase.  for wh
a920: 69 63 68 20 74 68 65 20 73 63 68 65 6d 61 20 63  ich the schema c
a930: 6f 6e 74 61 69 6e 73 20 56 49 45 57 20 6f 62 6a  ontains VIEW obj
a940: 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ects. .}..COMPIL
a950: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a960: 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42  _OMIT_VIRTUALTAB
a970: 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  LE} {.  This opt
a980: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
a990: 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74  t for the [sqlit
a9a0: 65 33 5f 76 74 61 62 20 7c 20 56 69 72 74 75 61  e3_vtab | Virtua
a9b0: 6c 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61  l Table].  mecha
a9c0: 6e 69 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a  nism in SQLite..
a9d0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a9e0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57  N {SQLITE_OMIT_W
a9f0: 41 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  AL} {.  This opt
aa00: 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 5b  ion omits the "[
aa10: 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 5d  write-ahead log]
aa20: 22 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d  " (a.k.a. "[WAL]
aa30: 22 29 20 63 61 70 61 62 69 6c 69 74 79 2e 0a 7d  ") capability..}
aa40: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
aa50: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53   {SQLITE_OMIT_WS
aa60: 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  D} {.  This opti
aa70: 6f 6e 73 20 62 75 69 6c 64 73 20 61 20 76 65 72  ons builds a ver
aa80: 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  sion of the SQLi
aa90: 74 65 20 6c 69 62 72 61 72 79 20 74 68 61 74 20  te library that 
aaa0: 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72  contains no.  Wr
aab0: 69 74 61 62 6c 65 20 53 74 61 74 69 63 20 44 61  itable Static Da
aac0: 74 61 20 28 57 53 44 29 2e 20 20 57 53 44 20 69  ta (WSD).  WSD i
aad0: 73 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c  s global variabl
aae0: 65 73 20 61 6e 64 2f 6f 72 20 73 74 61 74 69 63  es and/or static
aaf0: 0a 20 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53  .  variables.  S
ab00: 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f  ome platforms do
ab10: 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44   not support WSD
ab20: 2c 20 61 6e 64 20 74 68 69 73 20 6f 70 74 69 6f  , and this optio
ab30: 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79 0a 20  n is necessary. 
ab40: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 53 51   in order for SQ
ab50: 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f  Lite to work tho
ab60: 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a  se platforms.  .
ab70: 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20  .  Unlike other 
ab80: 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77 68 69  OMIT options whi
ab90: 63 68 20 6d 61 6b 65 20 74 68 65 20 53 51 4c 69  ch make the SQLi
aba0: 74 65 20 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c  te library small
abb0: 65 72 2c 0a 20 20 74 68 69 73 20 6f 70 74 69 6f  er,.  this optio
abc0: 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e 63 72 65  n actually incre
abd0: 61 73 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66  ases the size of
abe0: 20 53 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65   SQLite and make
abf0: 73 20 69 74 20 72 75 6e 0a 20 20 61 20 6c 69 74  s it run.  a lit
ac00: 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c  tle slower.  Onl
ac10: 79 20 75 73 65 20 74 68 69 73 20 6f 70 74 69 6f  y use this optio
ac20: 6e 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 62  n if SQLite is b
ac30: 65 69 6e 67 20 62 75 69 6c 74 20 66 6f 72 20 61  eing built for a
ac40: 6e 0a 20 20 65 6d 62 65 64 64 65 64 20 74 61 72  n.  embedded tar
ac50: 67 65 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  get that does no
ac60: 74 20 73 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d  t support WSD..}
ac70: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
ac80: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46   {SQLITE_OMIT_XF
ac90: 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73  ER_OPT} {.  This
aca0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
acb0: 70 70 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d 69  pport for optimi
acc0: 7a 61 74 69 6f 6e 73 20 74 68 61 74 20 68 65 6c  zations that hel
acd0: 70 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f  p statements.  o
ace0: 66 20 74 68 65 20 66 6f 72 6d 20 22 49 4e 53 45  f the form "INSE
acf0: 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45  RT INTO ... SELE
ad00: 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74  CT ..." run fast
ad10: 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
ad20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45  PTION {SQLITE_ZE
ad30: 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54  RO_MALLOC} {.  T
ad40: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
ad50: 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75   both the [defau
ad60: 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
ad70: 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b  tor] and the.  [
ad80: 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
ad90: 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d   allocator] from
ada0: 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73   the build and s
adb0: 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74 75  ubstitutes a stu
adc0: 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  b.  memory alloc
add0: 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73  ator that always
ade0: 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20   fails.  SQLite 
adf0: 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74  will not run wit
ae00: 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65  h this.  stub me
ae10: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73  mory allocator s
ae20: 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20  ince it will be 
ae30: 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61  unable to alloca
ae40: 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a  te memory.  But.
ae50: 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e 20    this stub can 
ae60: 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20 73  be replaced at s
ae70: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a  tart-time using.
ae80: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69    [sqlite3_confi
ae90: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
aea0: 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f  G_MALLOC],...) o
aeb0: 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  r.  [sqlite3_con
aec0: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
aed0: 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a  FIG_HEAP],...)..
aee0: 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66    So the net eff
aef0: 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70  ect of this comp
af00: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
af10: 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77  is that it allow
af20: 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65  s SQLite.  to be
af30: 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69   compiled and li
af40: 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20 73  nked against a s
af50: 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68  ystem library th
af60: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
af70: 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20  ort.  malloc(), 
af80: 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72  free(), and/or r
af90: 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74  ealloc()..}..</t
afa0: 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62  cl>.<a name="deb
afb0: 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a  ugoptions"></a>.
afc0: 3c 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73  <h2>1.7 Analysis
afd0: 20 61 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f   and Debugging O
afe0: 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c  ptions</h2>.<tcl
aff0: 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  >..COMPILE_OPTIO
b000: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d  N {SQLITE_DEBUG}
b010: 20 7b 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20   {.  The SQLite 
b020: 73 6f 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74  source code cont
b030: 61 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74  ains literally t
b040: 68 6f 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65  housands of asse
b050: 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a  rt() statements.
b060: 20 20 75 73 65 64 20 74 6f 20 76 65 72 69 66 79    used to verify
b070: 20 69 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70   internal assump
b080: 74 69 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75  tions and subrou
b090: 74 69 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f  tine preconditio
b0a0: 6e 73 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e  ns and.  postcon
b0b0: 64 69 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20  ditions.  These 
b0c0: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
b0d0: 6e 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79  nts are normally
b0e0: 20 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74   turned off.  (t
b0f0: 68 65 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20  hey generate no 
b100: 63 6f 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e  code) since turn
b110: 69 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65  ing them on make
b120: 73 20 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70  s SQLite run app
b130: 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72  roximately.  thr
b140: 65 65 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e  ee times slower.
b150: 20 20 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e    But for testin
b160: 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20  g and analysis, 
b170: 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  it is useful to 
b180: 74 75 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72  turn.  the asser
b190: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  t() statements o
b1a0: 6e 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44  n.  The SQLITE_D
b1b0: 45 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  EBUG compile-tim
b1c0: 65 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68  e option does th
b1d0: 69 73 2e 0a 20 20 53 51 4c 49 54 45 5f 44 45 42  is..  SQLITE_DEB
b1e0: 55 47 20 61 6c 73 6f 20 74 75 72 6e 73 20 6f 6e  UG also turns on
b1f0: 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75   some other debu
b200: 67 67 69 6e 67 20 66 65 61 74 75 72 65 73 2e 0a  gging features..
b210: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b220: 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42  N {SQLITE_MEMDEB
b230: 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  UG} {.  The SQLI
b240: 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74 69  TE_MEMDEBUG opti
b250: 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e 73  on causes an ins
b260: 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65  trumented .  [de
b270: 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61  bugging memory a
b280: 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62  llocator].  to b
b290: 65 20 75 73 65 64 20 61 73 20 74 68 65 20 64 65  e used as the de
b2a0: 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c  fault memory all
b2b0: 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53 51  ocator within SQ
b2c0: 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e 73  Lite.  The.  ins
b2d0: 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79  trumented memory
b2e0: 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b   allocator check
b2f0: 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66 20  s for misuse of 
b300: 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f  dynamically allo
b310: 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20  cated.  memory. 
b320: 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73   Examples of mis
b330: 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69 6e  use include usin
b340: 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69  g memory after i
b350: 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77 72  t is freed,.  wr
b360: 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65 6e  iting off the en
b370: 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61  ds of a memory a
b380: 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65 69  llocation, freei
b390: 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72  ng memory not pr
b3a0: 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69  eviously.  obtai
b3b0: 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d  ned from the mem
b3c0: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f  ory allocator, o
b3d0: 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69  r failing to ini
b3e0: 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20  tialize newly.  
b3f0: 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79  allocated memory
b400: 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a              ..}..</tcl>.