Documentation Source Text

Hex Artifact Content
Login

Artifact 98813c55d1f193741b1666afb553d8627dc2e4de:


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 4d 41 54 49 43 5f 49 4e  ULT_AUTOMATIC_IN
0550: 44 45 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  DEX=<i>&lt;0 or 
0560: 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  1&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 74 68 65 20 69 6e 69 74 69 61 6c  ines the initial
0590: 20 73 65 74 74 69 6e 67 20 66 6f 72 20 5b 50 52   setting for [PR
05a0: 41 47 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f 69  AGMA automatic_i
05b0: 6e 64 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77 6c  ndex].  for newl
05c0: 79 20 6f 70 65 6e 65 64 20 5b 64 61 74 61 62 61  y opened [databa
05d0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e  se connections].
05e0: 0a 20 20 46 6f 72 20 61 6c 6c 20 76 65 72 73 69  .  For all versi
05f0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68  ons of SQLite th
0600: 72 6f 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20 20  rough 3.7.17,.  
0610: 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 69 63 65  automatic indice
0620: 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 65  s are normally e
0630: 6e 61 62 6c 65 64 20 66 6f 72 20 6e 65 77 20 64  nabled for new d
0640: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
0650: 6f 6e 73 20 69 66 0a 20 20 74 68 69 73 20 63 6f  ons if.  this co
0660: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
0670: 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20  n is omitted..  
0680: 48 6f 77 65 76 65 72 2c 20 74 68 61 74 20 6d 69  However, that mi
0690: 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 66 75  ght change in fu
06a0: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
06b0: 20 53 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53 65   SQLite..  <p>Se
06c0: 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f  e also: [SQLITE_
06d0: 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  OMIT_AUTOMATIC_I
06e0: 4e 44 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  NDEX].}..COMPILE
06f0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
0700: 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55  DEFAULT_AUTOVACU
0710: 55 4d 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  UM=<i>&lt;0 or 1
0720: 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 2&gt;</i>} {
0730: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65  .  This macro de
0740: 74 65 72 6d 69 6e 65 73 20 69 66 20 53 51 4c 69  termines if SQLi
0750: 74 65 20 63 72 65 61 74 65 73 20 64 61 74 61 62  te creates datab
0760: 61 73 65 73 20 77 69 74 68 20 74 68 65 20 0a 20  ases with the . 
0770: 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 66   [auto_vacuum] f
0780: 6c 61 67 20 73 65 74 20 62 79 20 64 65 66 61 75  lag set by defau
0790: 6c 74 20 74 6f 20 4f 46 46 20 28 30 29 2c 20 46  lt to OFF (0), F
07a0: 55 4c 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49 4e  ULL (1), or.  IN
07b0: 43 52 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20 54  CREMENTAL (2). T
07c0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
07d0: 20 69 73 20 30 20 6d 65 61 6e 69 6e 67 20 74 68   is 0 meaning th
07e0: 61 74 20 64 61 74 61 62 61 73 65 73 0a 20 20 61  at databases.  a
07f0: 72 65 20 63 72 65 61 74 65 64 20 77 69 74 68 20  re created with 
0800: 61 75 74 6f 2d 76 61 63 75 75 6d 20 74 75 72 6e  auto-vacuum turn
0810: 65 64 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e 79  ed off..  In any
0820: 20 63 61 73 65 20 74 68 65 20 63 6f 6d 70 69 6c   case the compil
0830: 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d  e-time default m
0840: 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e  ay be overridden
0850: 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41 47   by the .  [PRAG
0860: 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20  MA auto_vacuum] 
0870: 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50  command..}..COMP
0880: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
0890: 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45  TE_DEFAULT_CACHE
08a0: 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61 67  _SIZE=<i>&lt;pag
08b0: 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  es&gt;</i>} {.  
08c0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
08d0: 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65  the default size
08e0: 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61 63   of the page-cac
08f0: 68 65 20 66 6f 72 20 65 61 63 68 20 61 74 74 61  he for each atta
0900: 63 68 65 64 0a 20 20 64 61 74 61 62 61 73 65 2c  ched.  database,
0910: 20 69 6e 20 70 61 67 65 73 2e 20 54 68 69 73 20   in pages. This 
0920: 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65  can be overridde
0930: 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41  n by the .  [PRA
0940: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d 20  GMA cache_size] 
0950: 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65 66  command. The def
0960: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 32 30  ault value is 20
0970: 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  00..}..COMPILE_O
0980: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
0990: 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41  FAULT_FILE_FORMA
09a0: 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26  T=<i>&lt;1 or 4&
09b0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65  gt;</i>} {.  The
09c0: 20 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61   default [schema
09d0: 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20   format number] 
09e0: 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 77  used by SQLite w
09f0: 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e  hen creating.  n
0a00: 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ew database file
0a10: 73 20 69 73 20 73 65 74 20 62 79 20 74 68 69 73  s is set by this
0a20: 20 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68   macro.  The sch
0a30: 65 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20  ema formats are 
0a40: 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c  all.  very simil
0a50: 61 72 2e 20 20 54 68 65 20 64 69 66 66 65 72 65  ar.  The differe
0a60: 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d  nce between form
0a70: 61 74 73 20 31 20 61 6e 64 20 34 20 69 73 20 74  ats 1 and 4 is t
0a80: 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75  hat format.  4 u
0a90: 6e 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63  nderstands [desc
0aa0: 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20  ending indices] 
0ab0: 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65  and has a tighte
0ac0: 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20  r encoding for. 
0ad0: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e   boolean values.
0ae0: 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73  ..  All versions
0af0: 20 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65   of SQLite since
0b00: 20 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d   3.3.0 (2006-01-
0b10: 31 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61  10).  can read a
0b20: 6e 64 20 77 72 69 74 65 20 61 6e 79 20 73 63 68  nd write any sch
0b30: 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74  ema format.  bet
0b40: 77 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42  ween 1 and 4.  B
0b50: 75 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  ut older version
0b60: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
0b70: 74 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f  t not be able to
0b80: 0a 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20  .  read formats 
0b90: 67 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20  greater than 1. 
0ba0: 20 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76   So that older v
0bb0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
0bc0: 65 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65  e will.  be able
0bd0: 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69   to read and wri
0be0: 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  te database file
0bf0: 73 20 63 72 65 61 74 65 64 20 62 79 20 6e 65 77  s created by new
0c00: 65 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66  er versions.  of
0c10: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66   SQLite, the def
0c20: 61 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d  ault schema form
0c30: 61 74 20 77 61 73 20 73 65 74 20 74 6f 20 31 20  at was set to 1 
0c40: 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69  for SQLite versi
0c50: 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e  ons.  through 3.
0c60: 37 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29  7.9 (2011-11-01)
0c70: 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  .  Beginning wit
0c80: 68 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 31 30  h version 3.7.10
0c90: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20  , the default.  
0ca0: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 69 73  schema format is
0cb0: 20 34 2e 0a 0a 20 20 54 68 65 20 73 63 68 65 6d   4...  The schem
0cc0: 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 20  a format number 
0cd0: 66 6f 72 20 61 20 6e 65 77 20 64 61 74 61 62 61  for a new databa
0ce0: 73 65 20 63 61 6e 20 62 65 20 73 65 74 20 61 74  se can be set at
0cf0: 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a 20   runtime using. 
0d00: 20 74 68 65 20 5b 50 52 41 47 4d 41 20 6c 65 67   the [PRAGMA leg
0d10: 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d  acy_file_format]
0d20: 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d   command..}..COM
0d30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
0d40: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45  ITE_DEFAULT_FILE
0d50: 5f 50 45 52 4d 49 53 53 49 4f 4e 53 3d 3c 69 3e  _PERMISSIONS=<i>
0d60: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 64  N</i>} {.  The d
0d70: 65 66 61 75 6c 74 20 6e 75 6d 65 72 69 63 20 66  efault numeric f
0d80: 69 6c 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 20  ile permissions 
0d90: 66 6f 72 20 6e 65 77 6c 79 20 63 72 65 61 74 65  for newly create
0da0: 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  d database files
0db0: 0a 20 20 75 6e 64 65 72 20 75 6e 69 78 2e 20 20  .  under unix.  
0dc0: 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  If not specified
0dd0: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73  , the default is
0de0: 20 30 36 34 34 20 77 68 69 63 68 20 6d 65 61 6e   0644 which mean
0df0: 73 20 74 68 61 74 0a 20 20 74 68 65 20 66 69 6c  s that.  the fil
0e00: 65 73 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 72  es is globally r
0e10: 65 61 64 61 62 6c 65 20 62 75 74 20 6f 6e 6c 79  eadable but only
0e20: 20 77 72 69 74 61 62 6c 65 20 62 79 20 74 68 65   writable by the
0e30: 20 63 72 65 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d   creator..}..COM
0e40: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
0e50: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 4f 52 45  ITE_DEFAULT_FORE
0e60: 49 47 4e 5f 4b 45 59 53 3d 3c 69 3e 26 6c 74 3b  IGN_KEYS=<i>&lt;
0e70: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
0e80: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64  {.  This macro d
0e90: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
0ea0: 72 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66  r enforcement of
0eb0: 20 0a 20 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79   .  [foreign key
0ec0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 69 73   constraints] is
0ed0: 20 65 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61   enabled or disa
0ee0: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20  bled by default 
0ef0: 66 6f 72 0a 20 20 6e 65 77 20 64 61 74 61 62 61  for.  new databa
0f00: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20  se connections. 
0f10: 20 45 61 63 68 20 64 61 74 61 62 61 73 65 20 63   Each database c
0f20: 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 61 6c  onnection can al
0f30: 77 61 79 73 20 74 75 72 6e 0a 20 20 65 6e 66 6f  ways turn.  enfo
0f40: 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69  rcement of forei
0f50: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
0f60: 74 73 20 6f 6e 20 61 6e 64 20 6f 66 66 20 61 6e  ts on and off an
0f70: 64 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  d run-time using
0f80: 0a 20 20 74 68 65 20 5b 66 6f 72 65 69 67 6e 5f  .  the [foreign_
0f90: 6b 65 79 73 20 70 72 61 67 6d 61 5d 2e 20 20 45  keys pragma].  E
0fa0: 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f  nforcement of fo
0fb0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
0fc0: 61 69 6e 74 73 0a 20 20 69 73 20 6e 6f 72 6d 61  aints.  is norma
0fd0: 6c 6c 79 20 6f 66 66 20 62 79 20 64 65 66 61 75  lly off by defau
0fe0: 6c 74 2c 20 62 75 74 20 69 66 20 74 68 69 73 20  lt, but if this 
0ff0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61 72  compile-time par
1000: 61 6d 65 74 65 72 20 69 73 0a 20 20 73 65 74 20  ameter is.  set 
1010: 74 6f 20 31 2c 20 65 6e 66 6f 72 63 65 6d 65 6e  to 1, enforcemen
1020: 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79  t of foreign key
1030: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 6c   constraints wil
1040: 6c 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61 75  l be on by defau
1050: 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  lt..}..COMPILE_O
1060: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
1070: 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 3d  FAULT_MMAP_SIZE=
1080: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
1090: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
10a0: 65 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 20  e default limit 
10b0: 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  on the amount of
10c0: 20 6d 65 6d 6f 72 79 20 74 68 61 74 0a 20 20 77   memory that.  w
10d0: 69 6c 6c 20 62 65 20 75 73 65 64 20 66 6f 72 20  ill be used for 
10e0: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
10f0: 4f 0a 20 20 66 6f 72 20 65 61 63 68 20 6f 70 65  O.  for each ope
1100: 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  n database file.
1110: 20 20 49 66 20 74 68 65 20 3c 69 3e 4e 3c 2f 69    If the <i>N</i
1120: 3e 0a 20 20 69 73 20 7a 65 72 6f 2c 20 74 68 65  >.  is zero, the
1130: 6e 20 6d 65 6d 6f 72 79 20 6d 61 70 70 65 64 20  n memory mapped 
1140: 49 2f 4f 20 69 73 20 64 69 73 61 62 6c 65 64 20  I/O is disabled 
1150: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 54 68 69  by default.  Thi
1160: 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  s.  compile-time
1170: 20 6c 69 6d 69 74 20 61 6e 64 20 74 68 65 20 5b   limit and the [
1180: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f  SQLITE_MAX_MMAP_
1190: 53 49 5a 45 5d 20 63 61 6e 20 62 65 20 6d 6f 64  SIZE] can be mod
11a0: 69 66 69 65 64 20 0a 20 20 61 74 20 73 74 61 72  ified .  at star
11b0: 74 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  t-time using the
11c0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
11d0: 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
11e0: 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 63  IG_MMAP_SIZE]) c
11f0: 61 6c 6c 2c 20 6f 72 20 61 74 20 72 75 6e 2d 74  all, or at run-t
1200: 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20  ime.  using the 
1210: 5b 6d 6d 61 70 5f 73 69 7a 65 20 70 72 61 67 6d  [mmap_size pragm
1220: 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  a]..}..COMPILE_O
1230: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
1240: 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49  FAULT_JOURNAL_SI
1250: 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26 6c 74 3b  ZE_LIMIT=<i>&lt;
1260: 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b  bytes&gt;</i>} {
1270: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 73  .  This option s
1280: 65 74 73 20 74 68 65 20 73 69 7a 65 20 6c 69 6d  ets the size lim
1290: 69 74 20 6f 6e 20 5b 72 6f 6c 6c 62 61 63 6b 20  it on [rollback 
12a0: 6a 6f 75 72 6e 61 6c 5d 20 66 69 6c 65 73 20 69  journal] files i
12b0: 6e 0a 20 20 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  n.  [journal_mod
12c0: 65 20 70 72 61 67 6d 61 20 7c 20 70 65 72 73 69  e pragma | persi
12d0: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  stent journal mo
12e0: 64 65 5d 20 61 6e 64 0a 20 20 5b 6c 6f 63 6b 69  de] and.  [locki
12f0: 6e 67 5f 6d 6f 64 65 20 7c 20 65 78 63 6c 75 73  ng_mode | exclus
1300: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65  ive locking mode
1310: 5d 20 61 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a  ] and on the siz
1320: 65 20 6f 66 20 74 68 65 0a 20 20 77 72 69 74 65  e of the.  write
1330: 2d 61 68 65 61 64 20 6c 6f 67 20 66 69 6c 65 20  -ahead log file 
1340: 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 57  in [WAL mode]. W
1350: 68 65 6e 20 74 68 69 73 20 0a 20 20 63 6f 6d 70  hen this .  comp
1360: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1370: 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 72 65  is omitted there
1380: 20 69 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75   is no upper bou
1390: 6e 64 20 6f 6e 20 74 68 65 0a 20 20 73 69 7a 65  nd on the.  size
13a0: 20 6f 66 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b   of the rollback
13b0: 20 6a 6f 75 72 6e 61 6c 73 20 6f 72 20 77 72 69   journals or wri
13c0: 74 65 2d 61 68 65 61 64 20 6c 6f 67 73 2e 20 20  te-ahead logs.  
13d0: 0a 20 20 54 68 65 20 6a 6f 75 72 6e 61 6c 20 66  .  The journal f
13e0: 69 6c 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a 20  ile size limit. 
13f0: 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20   can be changed 
1400: 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e  at run-time usin
1410: 67 20 74 68 65 20 5b 6a 6f 75 72 6e 61 6c 5f 73  g the [journal_s
1420: 69 7a 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d 61  ize_limit pragma
1430: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
1440: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1450: 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44  AULT_LOCKING_MOD
1460: 45 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26  E=<i>&lt;1 or 0&
1470: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
1480: 73 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 74  set to 1, then t
1490: 68 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b  he default [lock
14a0: 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 73 65 74  ing_mode] is set
14b0: 20 74 6f 20 45 58 43 4c 55 53 49 56 45 2e 0a 20   to EXCLUSIVE.. 
14c0: 20 49 66 20 6f 6d 69 74 74 65 64 20 6f 72 20 73   If omitted or s
14d0: 65 74 20 74 6f 20 30 20 74 68 65 6e 20 74 68 65  et to 0 then the
14e0: 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e   default [lockin
14f0: 67 5f 6d 6f 64 65 5d 20 69 73 20 4e 4f 52 4d 41  g_mode] is NORMA
1500: 4c 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  L..}..COMPILE_OP
1510: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1520: 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53 3d 3c  AULT_MEMSTATUS=<
1530: 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b  i>&lt;1 or 0&gt;
1540: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
1550: 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20  acro is used to 
1560: 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65  determine whethe
1570: 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 66 65 61  r or not the fea
1580: 74 75 72 65 73 20 65 6e 61 62 6c 65 64 20 61 6e  tures enabled an
1590: 64 0a 20 20 64 69 73 61 62 6c 65 64 20 75 73 69  d.  disabled usi
15a0: 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f  ng the SQLITE_CO
15b0: 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 61  NFIG_MEMSTATUS a
15c0: 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69  rgument to [sqli
15d0: 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 20 20  te3_config()].  
15e0: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79  are available by
15f0: 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64 65   default. The de
1600: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31  fault value is 1
1610: 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   ([SQLITE_CONFIG
1620: 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20 72 65  _MEMSTATUS].  re
1630: 6c 61 74 65 64 20 66 65 61 74 75 72 65 73 20 65  lated features e
1640: 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f 4d 50  nabled)..}..COMP
1650: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
1660: 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f  TE_DEFAULT_PAGE_
1670: 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79 74 65  SIZE=<i>&lt;byte
1680: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
1690: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65  his macro is use
16a0: 64 20 74 6f 20 73 65 74 20 74 68 65 20 64 65 66  d to set the def
16b0: 61 75 6c 74 20 70 61 67 65 2d 73 69 7a 65 20 75  ault page-size u
16c0: 73 65 64 20 77 68 65 6e 20 61 0a 20 20 64 61 74  sed when a.  dat
16d0: 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65 64  abase is created
16e0: 2e 20 54 68 65 20 76 61 6c 75 65 20 61 73 73 69  . The value assi
16f0: 67 6e 65 64 20 6d 75 73 74 20 62 65 20 61 20 70  gned must be a p
1700: 6f 77 65 72 20 6f 66 20 32 2e 20 54 68 65 0a 20  ower of 2. The. 
1710: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
1720: 73 20 31 30 32 34 2e 20 54 68 65 20 63 6f 6d 70  s 1024. The comp
1730: 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74  ile-time default
1740: 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64   may be overridd
1750: 65 6e 20 61 74 20 0a 20 20 72 75 6e 74 69 6d 65  en at .  runtime
1760: 20 62 79 20 74 68 65 20 5b 50 52 41 47 4d 41 20   by the [PRAGMA 
1770: 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61  page_size] comma
1780: 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nd..}..COMPILE_O
1790: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
17a0: 46 41 55 4c 54 5f 54 45 4d 50 5f 43 41 43 48 45  FAULT_TEMP_CACHE
17b0: 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61 67  _SIZE=<i>&lt;pag
17c0: 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  es&gt;</i>} {.  
17d0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
17e0: 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65  the default size
17f0: 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61 63   of the page-cac
1800: 68 65 20 66 6f 72 20 74 65 6d 70 6f 72 61 72 79  he for temporary
1810: 20 66 69 6c 65 73 0a 20 20 63 72 65 61 74 65 64   files.  created
1820: 20 62 79 20 53 51 4c 69 74 65 20 74 6f 20 73 74   by SQLite to st
1830: 6f 72 65 20 69 6e 74 65 72 6d 65 64 69 61 74 65  ore intermediate
1840: 20 72 65 73 75 6c 74 73 2c 20 69 6e 20 70 61 67   results, in pag
1850: 65 73 2e 20 49 74 20 64 6f 65 73 0a 20 20 6e 6f  es. It does.  no
1860: 74 20 61 66 66 65 63 74 20 74 68 65 20 70 61 67  t affect the pag
1870: 65 2d 63 61 63 68 65 20 66 6f 72 20 74 68 65 20  e-cache for the 
1880: 74 65 6d 70 20 64 61 74 61 62 61 73 65 2c 20 77  temp database, w
1890: 68 65 72 65 20 74 61 62 6c 65 73 20 63 72 65 61  here tables crea
18a0: 74 65 64 0a 20 20 75 73 69 6e 67 20 5b 43 52 45  ted.  using [CRE
18b0: 41 54 45 20 54 41 42 4c 45 20 7c 20 43 52 45 41  ATE TABLE | CREA
18c0: 54 45 20 54 45 4d 50 20 54 41 42 4c 45 5d 20 61  TE TEMP TABLE] a
18d0: 72 65 20 73 74 6f 72 65 64 2e 20 54 68 65 20 64  re stored. The d
18e0: 65 66 61 75 6c 74 20 76 61 6c 75 65 0a 20 20 69  efault value.  i
18f0: 73 20 35 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  s 500..}..COMPIL
1900: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1910: 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54  _DEFAULT_WAL_AUT
1920: 4f 43 48 45 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26  OCHECKPOINT=<i>&
1930: 6c 74 3b 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e  lt;pages&gt;</i>
1940: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
1950: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
1960: 74 20 70 61 67 65 20 63 6f 75 6e 74 20 66 6f 72  t page count for
1970: 20 74 68 65 20 5b 57 41 4c 5d 0a 20 20 5b 63 68   the [WAL].  [ch
1980: 65 63 6b 70 6f 69 6e 74 69 6e 67 20 7c 20 61 75  eckpointing | au
1990: 74 6f 6d 61 74 69 63 20 63 68 65 63 6b 70 6f 69  tomatic checkpoi
19a0: 6e 74 69 6e 67 5d 20 66 65 61 74 75 72 65 2e 20  nting] feature. 
19b0: 20 49 66 20 75 6e 73 70 65 63 69 66 69 65 64 2c   If unspecified,
19c0: 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 70  .  the default p
19d0: 61 67 65 20 63 6f 75 6e 74 20 69 73 20 31 30 30  age count is 100
19e0: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
19f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1a00: 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  AULT_WORKER_THRE
1a10: 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ADS=<i>N</i>} {.
1a20: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
1a30: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  s the default va
1a40: 6c 75 65 20 66 6f 72 0a 20 20 74 68 65 20 5b 53  lue for.  the [S
1a50: 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b  QLITE_LIMIT_WORK
1a60: 45 52 5f 54 48 52 45 41 44 53 5d 20 70 61 72 61  ER_THREADS] para
1a70: 6d 65 74 65 72 2e 20 20 54 68 65 20 5b 53 51 4c  meter.  The [SQL
1a80: 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52  ITE_LIMIT_WORKER
1a90: 5f 54 48 52 45 41 44 53 5d 0a 20 20 70 61 72 61  _THREADS].  para
1aa0: 6d 65 74 65 72 20 73 65 74 73 20 74 68 65 20 6d  meter sets the m
1ab0: 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
1ac0: 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65 61   auxiliary threa
1ad0: 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65  ds that a single
1ae0: 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  .  [prepared sta
1af0: 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 6c 61 75  tement] will lau
1b00: 6e 63 68 20 74 6f 20 61 73 73 69 73 74 20 69 74  nch to assist it
1b10: 20 77 69 74 68 20 61 20 71 75 65 72 79 2e 20 20   with a query.  
1b20: 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  If not specified
1b30: 2c 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20  ,.  the default 
1b40: 6d 61 78 69 6d 75 6d 20 69 73 20 30 2e 0a 20 20  maximum is 0..  
1b50: 54 68 65 20 76 61 6c 75 65 20 73 65 74 20 68 65  The value set he
1b60: 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 6d 6f 72  re cannot be mor
1b70: 65 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4d  e than [SQLITE_M
1b80: 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  AX_WORKER_THREAD
1b90: 53 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  S]..}..COMPILE_O
1ba0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46 54  PTION {SQLITE_FT
1bb0: 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54  S3_MAX_EXPR_DEPT
1bc0: 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  H=<i>N</i>} {.  
1bd0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
1be0: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
1bf0: 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68 20  h of the search 
1c00: 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65 73  tree that corres
1c10: 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20 72  ponds to.  the r
1c20: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
1c30: 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72  f the MATCH oper
1c40: 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53 33  ator in an [FTS3
1c50: 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c  ] or [FTS4] full
1c60: 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20 20  -text.  index.  
1c70: 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  The full-text se
1c80: 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63 75  arch uses a recu
1c90: 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c  rsive algorithm,
1ca0: 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f 66   so the depth of
1cb0: 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20 6c  .  the tree is l
1cc0: 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65 6e  imited to preven
1cd0: 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68  t using too much
1ce0: 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20 54   stack space.  T
1cf0: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d  he default.  lim
1d00: 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73 20  it is 12.  This 
1d10: 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63 69  limit is suffici
1d20: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
1d30: 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73 20  95 search terms 
1d40: 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d 68  on the.  right-h
1d50: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
1d60: 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20 61  MATCH operator a
1d70: 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61 63  nd it holds stac
1d80: 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74 6f  k space usage to
1d90: 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32 30   .  less than 20
1da0: 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a  00 bytes..  <p>.
1db0: 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20 46    For ordinary F
1dc0: 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65 73  TS3/FTS4 queries
1dd0: 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65  , the search tre
1de0: 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72 6f  e depth is appro
1df0: 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20 62  ximately.  the b
1e00: 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20  ase-2 logarithm 
1e10: 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
1e20: 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72 69   terms in the ri
1e30: 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  ght-hand side of
1e40: 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70 65   the.  MATCH ope
1e50: 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c  rator.  However,
1e60: 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75 65   for [phrase que
1e70: 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20  ries] and [NEAR 
1e80: 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20 73  queries] the.  s
1e90: 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74 68  earch tree depth
1ea0: 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74 68   is linear in th
1eb0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67 68  e number of righ
1ec0: 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72 6d  t-hand side term
1ed0: 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66 61  s..  So the defa
1ee0: 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74 20  ult depth limit 
1ef0: 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63 69  of 12 is suffici
1f00: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
1f10: 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74 65  95 ordinary.  te
1f20: 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20  rms on a MATCH, 
1f30: 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66 69  it is only suffi
1f40: 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72 20  cient for 11 or 
1f50: 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45 41  12 phrase or NEA
1f60: 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65 6e  R.  terms.  Even
1f70: 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c 74   so, the default
1f80: 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e   is more than en
1f90: 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61 70  ough for most ap
1fa0: 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  plication..}..CO
1fb0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
1fc0: 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49  LITE_MAX_MMAP_SI
1fd0: 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  ZE=<i>N</i>} {. 
1fe0: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
1ff0: 20 61 20 68 61 72 64 20 75 70 70 65 72 20 62 6f   a hard upper bo
2000: 75 6e 64 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e  und on the amoun
2010: 74 20 6f 66 20 61 64 64 72 65 73 73 20 73 70 61  t of address spa
2020: 63 65 20 74 68 61 74 0a 20 20 63 61 6e 20 62 65  ce that.  can be
2030: 20 75 73 65 64 20 62 79 20 61 6e 79 20 73 69 6e   used by any sin
2040: 67 6c 65 20 64 61 74 61 62 61 73 65 20 66 6f 72  gle database for
2050: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
2060: 2f 4f 2e 0a 20 20 53 65 74 74 69 6e 67 20 74 68  /O..  Setting th
2070: 69 73 20 76 61 6c 75 65 20 74 6f 20 30 20 63 6f  is value to 0 co
2080: 6d 70 6c 65 74 65 6c 79 20 64 69 73 61 62 6c 65  mpletely disable
2090: 73 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  s memory-mapped 
20a0: 49 2f 4f 20 61 6e 64 0a 20 20 63 61 75 73 65 73  I/O and.  causes
20b0: 20 6c 6f 67 69 63 20 61 73 73 6f 63 69 61 74 65   logic associate
20c0: 64 20 77 69 74 68 20 6d 65 6d 6f 72 79 2d 6d 61  d with memory-ma
20d0: 70 70 65 64 20 49 2f 4f 20 74 6f 20 62 65 20 6f  pped I/O to be o
20e0: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a  mitted from the.
20f0: 20 20 62 75 69 6c 64 2e 20 20 54 68 69 73 20 6f    build.  This o
2100: 70 74 69 6f 6e 20 64 6f 65 73 20 63 68 61 6e 67  ption does chang
2110: 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65  e the default me
2120: 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20  mory-mapped I/O 
2130: 61 64 64 72 65 73 73 0a 20 20 73 70 61 63 65 20  address.  space 
2140: 73 69 7a 65 20 28 73 65 74 20 62 79 20 5b 53 51  size (set by [SQ
2150: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41  LITE_DEFAULT_MMA
2160: 50 5f 53 49 5a 45 5d 20 6f 72 0a 20 20 73 71 6c  P_SIZE] or.  sql
2170: 69 74 65 33 5f 63 6f 6e 66 69 67 28 5b 53 51 4c  ite3_config([SQL
2180: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
2190: 53 49 5a 45 5d 29 20 6f 72 20 74 68 65 0a 20 20  SIZE]) or the.  
21a0: 72 75 6e 2d 74 69 6d 65 20 6d 65 6d 6f 72 79 2d  run-time memory-
21b0: 6d 61 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65  mapped I/O addre
21c0: 73 73 20 73 70 61 63 65 20 73 69 7a 65 20 28 73  ss space size (s
21d0: 65 74 20 62 79 0a 20 20 73 71 6c 69 74 65 33 5f  et by.  sqlite3_
21e0: 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 5b 53 51  file_control([SQ
21f0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f  LITE_FCNTL_MMAP_
2200: 53 49 5a 45 5d 29 20 6f 72 0a 20 20 5b 50 52 41  SIZE]) or.  [PRA
2210: 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20  GMA mmap_size]) 
2220: 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73 65  as long as those
2230: 20 6f 74 68 65 72 20 73 65 74 74 69 6e 67 73 20   other settings 
2240: 61 72 65 20 6c 65 73 73 20 74 68 61 6e 20 74 68  are less than th
2250: 65 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75  e.  maximum valu
2260: 65 20 64 65 66 69 6e 65 64 20 68 65 72 65 2e 0a  e defined here..
2270: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2280: 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43  N {SQLITE_MAX_SC
2290: 48 45 4d 41 5f 52 45 54 52 59 3d 3c 69 3e 4e 3c  HEMA_RETRY=<i>N<
22a0: 2f 69 3e 7d 20 7b 0a 20 20 57 68 65 6e 65 76 65  /i>} {.  Wheneve
22b0: 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  r the database s
22c0: 63 68 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 70  chema changes, p
22d0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
22e0: 74 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  ts are automatic
22f0: 61 6c 6c 79 0a 20 20 72 65 70 72 65 70 61 72 65  ally.  reprepare
2300: 64 20 74 6f 20 61 63 63 6f 6d 6d 6f 64 61 74 65  d to accommodate
2310: 20 74 68 65 20 6e 65 77 20 73 63 68 65 6d 61 2e   the new schema.
2320: 20 20 54 68 65 72 65 20 69 73 20 61 20 72 61 63    There is a rac
2330: 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65  e condition here
2340: 0a 20 20 69 6e 20 74 68 61 74 20 69 66 20 6f 6e  .  in that if on
2350: 65 20 74 68 72 65 61 64 20 69 73 20 63 6f 6e 73  e thread is cons
2360: 74 61 6e 74 6c 79 20 63 68 61 6e 67 69 6e 67 20  tantly changing 
2370: 74 68 65 20 73 63 68 65 6d 61 2c 20 61 6e 6f 74  the schema, anot
2380: 68 65 72 20 74 68 72 65 61 64 0a 20 20 6d 69 67  her thread.  mig
2390: 68 74 20 73 70 69 6e 20 6f 6e 20 72 65 70 61 72  ht spin on repar
23a0: 73 65 73 20 61 6e 64 20 72 65 70 72 65 70 61 72  ses and reprepar
23b0: 61 74 69 6f 6e 73 20 6f 66 20 61 20 70 72 65 70  ations of a prep
23c0: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 61  ared statement a
23d0: 6e 64 0a 20 20 6e 65 76 65 72 20 67 65 74 20 61  nd.  never get a
23e0: 6e 79 20 72 65 61 6c 20 77 6f 72 6b 20 64 6f 6e  ny real work don
23f0: 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  e.  This paramet
2400: 65 72 20 70 72 65 76 65 6e 74 73 20 61 6e 20 69  er prevents an i
2410: 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 0a 20 20 62  nfinite loop.  b
2420: 79 20 66 6f 72 63 69 6e 67 20 74 68 65 20 73 70  y forcing the sp
2430: 69 6e 6e 69 6e 67 20 74 68 72 65 61 64 20 74 6f  inning thread to
2440: 20 67 69 76 65 20 75 70 20 61 66 74 65 72 20 61   give up after a
2450: 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66   fixed number of
2460: 20 61 74 74 65 6d 70 74 73 0a 20 20 61 74 20 72   attempts.  at r
2470: 65 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 70  ecompiling the p
2480: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
2490: 74 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  t.  The default 
24a0: 73 65 74 74 69 6e 67 20 69 73 20 35 30 20 77 68  setting is 50 wh
24b0: 69 63 68 20 69 73 0a 20 20 6d 6f 72 65 20 74 68  ich is.  more th
24c0: 61 6e 20 61 64 65 71 75 61 74 65 20 66 6f 72 20  an adequate for 
24d0: 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  most application
24e0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
24f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58  TION {SQLITE_MAX
2500: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3d  _WORKER_THREADS=
2510: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 53 65  <i>N</i>} {.  Se
2520: 74 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64  t an upper bound
2530: 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33   on the [sqlite3
2540: 5f 6c 69 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49  _limit](db,[SQLI
2550: 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f  TE_LIMIT_WORKER_
2560: 54 48 52 45 41 44 53 5d 2c 4e 29 0a 20 20 73 65  THREADS],N).  se
2570: 74 74 69 6e 67 20 74 68 61 74 20 64 65 74 65 72  tting that deter
2580: 6d 69 6e 65 73 20 74 68 65 20 6d 61 78 69 6d 75  mines the maximu
2590: 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69  m number of auxi
25a0: 6c 69 61 72 79 20 74 68 72 65 61 64 73 20 74 68  liary threads th
25b0: 61 74 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70  at a single.  [p
25c0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
25d0: 74 5d 20 77 69 6c 6c 20 75 73 65 20 74 6f 20 61  t] will use to a
25e0: 69 64 20 77 69 74 68 20 43 50 55 2d 69 6e 74 65  id with CPU-inte
25f0: 6e 73 69 76 65 20 63 6f 6d 70 75 74 61 74 69 6f  nsive computatio
2600: 6e 73 0a 20 20 28 6d 6f 73 74 6c 79 20 73 6f 72  ns.  (mostly sor
2610: 74 69 6e 67 29 2e 20 20 53 65 65 20 61 6c 73 6f  ting).  See also
2620: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 44 45 46   the [SQLITE_DEF
2630: 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  AULT_WORKER_THRE
2640: 41 44 53 5d 20 6f 70 74 69 6f 6e 73 2e 0a 7d 0a  ADS] options..}.
2650: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2660: 7b 53 51 4c 49 54 45 5f 4d 49 4e 49 4d 55 4d 5f  {SQLITE_MINIMUM_
2670: 46 49 4c 45 5f 44 45 53 43 52 49 50 54 4f 52 3d  FILE_DESCRIPTOR=
2680: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
2690: 65 20 75 6e 69 78 20 5b 56 46 53 5d 20 77 69 6c  e unix [VFS] wil
26a0: 6c 20 6e 65 76 65 72 20 75 73 65 20 61 20 66 69  l never use a fi
26b0: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6c 65  le descriptor le
26c0: 73 73 20 74 68 61 6e 20 3c 69 3e 4e 3c 2f 69 3e  ss than <i>N</i>
26d0: 2e 20 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74  .  The.  default
26e0: 20 76 61 6c 75 65 20 6f 66 20 3c 69 3e 4e 3c 2f   value of <i>N</
26f0: 69 3e 20 69 73 20 33 2e 0a 20 20 3c 70 3e 0a 20  i> is 3..  <p>. 
2700: 20 41 76 6f 69 64 69 6e 67 20 74 68 65 20 75 73   Avoiding the us
2710: 65 20 6f 66 20 6c 6f 77 2d 6e 75 6d 62 65 72 65  e of low-numbere
2720: 64 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  d file descripto
2730: 72 73 20 69 73 20 61 20 64 65 66 65 6e 73 65 20  rs is a defense 
2740: 61 67 61 69 6e 73 74 0a 20 20 61 63 63 69 64 65  against.  accide
2750: 6e 74 61 6c 20 64 61 74 61 62 61 73 65 20 63 6f  ntal database co
2760: 72 72 75 70 74 69 6f 6e 2e 20 20 49 66 20 61 20  rruption.  If a 
2770: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 61  database file wa
2780: 73 20 6f 70 65 6e 65 64 20 75 73 69 6e 67 0a 20  s opened using. 
2790: 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   file descriptor
27a0: 20 32 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c   2, for example,
27b0: 20 61 6e 64 20 74 68 65 6e 20 61 6e 20 61 73 73   and then an ass
27c0: 65 72 74 28 29 20 66 61 69 6c 65 64 20 61 6e 64  ert() failed and
27d0: 20 69 6e 76 6f 6b 65 64 0a 20 20 77 72 69 74 65   invoked.  write
27e0: 28 32 2c 2e 2e 2e 29 2c 20 74 68 61 74 20 77 6f  (2,...), that wo
27f0: 75 6c 64 20 6c 69 6b 65 6c 79 20 63 61 75 73 65  uld likely cause
2800: 20 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70   database corrup
2810: 74 69 6f 6e 20 62 79 20 6f 76 65 72 77 72 69 74  tion by overwrit
2820: 69 6e 67 0a 20 20 70 61 72 74 20 6f 66 20 74 68  ing.  part of th
2830: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2840: 77 69 74 68 20 74 68 65 20 61 73 73 65 72 74 69  with the asserti
2850: 6f 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  on error message
2860: 2e 20 20 55 73 69 6e 67 20 6f 6e 6c 79 0a 20 20  .  Using only.  
2870: 68 69 67 68 65 72 2d 76 61 6c 75 65 64 20 66 69  higher-valued fi
2880: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 61  le descriptors a
2890: 76 6f 69 64 73 20 74 68 69 73 20 70 6f 74 65 6e  voids this poten
28a0: 74 69 61 6c 20 70 72 6f 62 6c 65 6d 2e 20 20 54  tial problem.  T
28b0: 68 65 20 0a 20 20 70 72 6f 74 65 63 74 69 6f 6e  he .  protection
28c0: 20 61 67 61 69 6e 73 74 0a 20 20 75 73 69 6e 67   against.  using
28d0: 20 6c 6f 77 2d 6e 75 6d 62 65 72 65 64 20 66 69   low-numbered fi
28e0: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 63  le descriptors c
28f0: 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 62  an be disabled b
2900: 79 20 73 65 74 74 69 6e 67 20 74 68 69 73 0a 20  y setting this. 
2910: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
2920: 74 69 6f 6e 20 74 6f 20 30 2e 0a 7d 0a 0a 43 4f  tion to 0..}..CO
2930: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
2940: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
2950: 56 45 52 57 52 49 54 45 3d 3c 69 3e 26 6c 74 3b  VERWRITE=<i>&lt;
2960: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
2970: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
2980: 63 68 61 6e 67 65 73 20 74 68 65 20 64 65 66 61  changes the defa
2990: 75 6c 74 20 61 73 73 75 6d 70 74 69 6f 6e 20 61  ult assumption a
29a0: 62 6f 75 74 20 5b 70 6f 77 65 72 73 61 66 65 20  bout [powersafe 
29b0: 6f 76 65 72 77 72 69 74 65 5d 0a 20 20 66 6f 72  overwrite].  for
29c0: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
29d0: 66 69 6c 65 73 79 73 74 65 6d 73 20 66 6f 72 20  filesystems for 
29e0: 74 68 65 20 75 6e 69 78 20 61 6e 64 20 77 69 6e  the unix and win
29f0: 64 6f 77 73 20 5b 56 46 53 65 73 5d 2e 0a 20 20  dows [VFSes]..  
2a00: 53 65 74 74 69 6e 67 20 53 51 4c 49 54 45 5f 50  Setting SQLITE_P
2a10: 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
2a20: 54 45 20 74 6f 20 31 20 63 61 75 73 65 73 20 53  TE to 1 causes S
2a30: 51 4c 69 74 65 20 74 6f 20 61 73 73 75 6d 65 20  QLite to assume 
2a40: 74 68 61 74 0a 20 20 61 70 70 6c 69 63 61 74 69  that.  applicati
2a50: 6f 6e 2d 6c 65 76 65 6c 20 77 72 69 74 65 73 20  on-level writes 
2a60: 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 73 20 62  cannot changes b
2a70: 79 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 65  ytes outside the
2a80: 20 72 61 6e 67 65 20 6f 66 0a 20 20 62 79 74 65   range of.  byte
2a90: 73 20 77 72 69 74 74 65 6e 20 65 76 65 6e 20 69  s written even i
2aa0: 66 20 74 68 65 20 77 72 69 74 65 20 6f 63 63 75  f the write occu
2ab0: 72 73 20 6a 75 73 74 20 62 65 66 6f 72 65 20 61  rs just before a
2ac0: 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 20 20 57   power loss..  W
2ad0: 69 74 68 20 53 51 4c 49 54 45 5f 50 4f 57 45 52  ith SQLITE_POWER
2ae0: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20 73  SAFE_OVERWRITE s
2af0: 65 74 20 74 6f 20 30 2c 20 53 51 4c 69 74 65 20  et to 0, SQLite 
2b00: 61 73 73 75 6d 65 73 20 74 68 61 74 20 6f 74 68  assumes that oth
2b10: 65 72 0a 20 20 62 79 74 65 73 20 69 6e 20 74 68  er.  bytes in th
2b20: 65 20 73 61 6d 65 20 73 65 63 74 6f 72 20 77 69  e same sector wi
2b30: 74 68 20 61 20 77 72 69 74 74 65 6e 20 62 79 74  th a written byt
2b40: 65 20 6d 69 67 68 74 20 62 65 20 63 68 61 6e 67  e might be chang
2b50: 65 64 20 6f 72 20 0a 20 20 64 61 6d 61 67 65 64  ed or .  damaged
2b60: 20 62 79 20 61 20 70 6f 77 65 72 20 6c 6f 73 73   by a power loss
2b70: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2b80: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 45 56 45  ION {SQLITE_REVE
2b90: 52 53 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45  RSE_UNORDERED_SE
2ba0: 4c 45 43 54 53 7d 20 7b 0a 20 20 54 68 69 73 20  LECTS} {.  This 
2bb0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
2bc0: 65 20 5b 50 52 41 47 4d 41 20 72 65 76 65 72 73  e [PRAGMA revers
2bd0: 65 5f 75 6e 6f 72 64 65 72 65 64 5f 73 65 6c 65  e_unordered_sele
2be0: 63 74 73 5d 20 73 65 74 74 69 6e 67 20 74 6f 20  cts] setting to 
2bf0: 62 65 0a 20 20 65 6e 61 62 6c 65 64 20 62 79 20  be.  enabled by 
2c00: 64 65 66 61 75 6c 74 2e 20 20 57 68 65 6e 20 65  default.  When e
2c10: 6e 61 62 6c 65 64 2c 20 5b 53 45 4c 45 43 54 5d  nabled, [SELECT]
2c20: 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
2c30: 20 6c 61 63 6b 20 61 6e 0a 20 20 4f 52 44 45 52   lack an.  ORDER
2c40: 20 42 59 20 63 6c 61 75 73 65 20 77 69 6c 6c 20   BY clause will 
2c50: 72 75 6e 20 69 6e 20 72 65 76 65 72 73 65 20 6f  run in reverse o
2c60: 72 64 65 72 2e 3c 70 3e 0a 20 20 54 68 69 73 20  rder.<p>.  This 
2c70: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 66 75 6c  option is useful
2c80: 20 66 6f 72 20 64 65 74 65 63 74 69 6e 67 20 77   for detecting w
2c90: 68 65 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  hen applications
2ca0: 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 29 0a 20   (incorrectly). 
2cb0: 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68 65   assume that the
2cc0: 20 6f 72 64 65 72 20 6f 66 20 72 6f 77 73 20 69   order of rows i
2cd0: 6e 20 61 20 53 45 4c 45 43 54 20 77 69 74 68 6f  n a SELECT witho
2ce0: 75 74 20 61 6e 20 4f 52 44 45 52 20 42 59 20 63  ut an ORDER BY c
2cf0: 6c 61 75 73 65 0a 20 20 77 69 6c 6c 20 61 6c 77  lause.  will alw
2d00: 61 79 73 20 62 65 20 74 68 65 20 73 61 6d 65 2e  ays be the same.
2d10: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
2d20: 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 52 54 45  ON {SQLITE_SORTE
2d30: 52 5f 50 4d 41 53 5a 3d 3c 69 3e 4e 3c 2f 69 3e  R_PMASZ=<i>N</i>
2d40: 7d 20 7b 0a 20 20 49 66 20 6d 75 6c 74 69 2d 74  } {.  If multi-t
2d50: 68 72 65 61 64 65 64 20 70 72 6f 63 65 73 73 69  hreaded processi
2d60: 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 20 76 69  ng is enabled vi
2d70: 61 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  a the.  [PRAGMA 
2d80: 74 68 72 65 61 64 73 5d 20 73 65 74 74 69 6e 67  threads] setting
2d90: 2c 20 74 68 65 6e 20 73 6f 72 74 20 6f 70 65 72  , then sort oper
2da0: 61 74 69 6f 6e 73 20 77 69 6c 6c 0a 20 20 61 74  ations will.  at
2db0: 74 65 6d 70 74 20 74 6f 20 73 74 61 72 74 20 68  tempt to start h
2dc0: 65 6c 70 65 72 20 74 68 72 65 61 64 73 20 77 68  elper threads wh
2dd0: 65 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  en the amount of
2de0: 20 63 6f 6e 74 65 6e 74 0a 20 20 74 6f 20 62 65   content.  to be
2df0: 20 73 6f 72 74 65 64 20 65 78 63 65 65 64 73 20   sorted exceeds 
2e00: 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6f 66 20 74  the minimum of t
2e10: 68 65 20 5b 63 61 63 68 65 5f 73 69 7a 65 5d 20  he [cache_size] 
2e20: 61 6e 64 20 50 4d 41 20 53 69 7a 65 0a 20 20 64  and PMA Size.  d
2e30: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
2e40: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
2e50: 50 4d 41 53 5a 5d 20 73 74 61 72 74 2d 74 69 6d  PMASZ] start-tim
2e60: 65 20 6f 70 74 69 6f 6e 2e 0a 20 20 54 68 69 73  e option..  This
2e70: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
2e80: 74 69 6f 6e 20 73 65 74 73 20 74 68 65 20 64 65  tion sets the de
2e90: 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20  fault value for 
2ea0: 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  the.  [SQLITE_CO
2eb0: 4e 46 49 47 5f 50 4d 41 53 5a 5d 20 73 74 61 72  NFIG_PMASZ] star
2ec0: 74 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 20  t-time option.. 
2ed0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
2ee0: 75 65 20 69 73 20 32 35 30 2e 0a 7d 0a 0a 43 4f  ue is 250..}..CO
2ef0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
2f00: 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f  LITE_WIN32_MALLO
2f10: 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  C} {.  This opti
2f20: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 75  on enables the u
2f30: 73 65 20 6f 66 20 74 68 65 20 57 69 6e 64 6f 77  se of the Window
2f40: 73 20 48 65 61 70 20 41 50 49 20 66 75 6e 63 74  s Heap API funct
2f50: 69 6f 6e 73 20 66 6f 72 20 6d 65 6d 6f 72 79 0a  ions for memory.
2f60: 20 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 73    allocation ins
2f70: 74 65 61 64 20 6f 66 20 74 68 65 20 73 74 61 6e  tead of the stan
2f80: 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 61 6c  dard library mal
2f90: 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28 29  loc() and free()
2fa0: 20 72 6f 75 74 69 6e 65 73 2e 0a 7d 0a 0a 43 4f   routines..}..CO
2fb0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59  MPILE_OPTION {YY
2fc0: 53 54 41 43 4b 44 45 50 54 48 3d 3c 69 3e 26 6c  STACKDEPTH=<i>&l
2fd0: 74 3b 6d 61 78 5f 64 65 70 74 68 26 67 74 3b 3c  t;max_depth&gt;<
2fe0: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
2ff0: 63 72 6f 20 73 65 74 73 20 74 68 65 20 6d 61 78  cro sets the max
3000: 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20 74 68  imum depth of th
3010: 65 20 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20  e LALR(1) stack 
3020: 75 73 65 64 20 62 79 0a 20 20 74 68 65 20 53 51  used by.  the SQ
3030: 4c 20 70 61 72 73 65 72 20 77 69 74 68 69 6e 20  L parser within 
3040: 53 51 4c 69 74 65 2e 20 20 54 68 65 20 64 65 66  SQLite.  The def
3050: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31 30  ault value is 10
3060: 30 2e 20 20 41 20 74 79 70 69 63 61 6c 0a 20 20  0.  A typical.  
3070: 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c  application will
3080: 20 75 73 65 20 6c 65 73 73 20 74 68 61 6e 20 61   use less than a
3090: 62 6f 75 74 20 32 30 20 6c 65 76 65 6c 73 20 6f  bout 20 levels o
30a0: 66 20 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 44  f the stack..  D
30b0: 65 76 65 6c 6f 70 65 72 73 20 77 68 6f 73 65 20  evelopers whose 
30c0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 63 6f 6e  applications con
30d0: 74 61 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  tain SQL stateme
30e0: 6e 74 73 20 74 68 61 74 20 0a 20 20 6e 65 65 64  nts that .  need
30f0: 20 6d 6f 72 65 20 74 68 61 6e 20 31 30 30 20 4c   more than 100 L
3100: 41 4c 52 28 31 29 20 73 74 61 63 6b 20 65 6e 74  ALR(1) stack ent
3110: 72 69 65 73 20 73 68 6f 75 6c 64 20 73 65 72 69  ries should seri
3120: 6f 75 73 6c 79 0a 20 20 63 6f 6e 73 69 64 65 72  ously.  consider
3130: 20 72 65 66 61 63 74 6f 72 69 6e 67 20 74 68 65   refactoring the
3140: 69 72 20 53 51 4c 20 61 73 20 69 74 20 69 73 20  ir SQL as it is 
3150: 6c 69 6b 65 6c 79 20 74 6f 20 62 65 20 77 65 6c  likely to be wel
3160: 6c 20 62 65 79 6f 6e 64 0a 20 20 74 68 65 20 61  l beyond.  the a
3170: 62 69 6c 69 74 79 20 6f 66 20 61 6e 79 20 68 75  bility of any hu
3180: 6d 61 6e 20 74 6f 20 63 6f 6d 70 72 65 68 65 6e  man to comprehen
3190: 64 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32  d..}.</tcl>..<h2
31a0: 3e 31 2e 32 20 4f 70 74 69 6f 6e 73 20 54 6f 20  >1.2 Options To 
31b0: 53 65 74 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c  Set Size Limits<
31c0: 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61  /h2>..<p>There a
31d0: 72 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  re compile-time 
31e0: 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 77 69 6c  options that wil
31f0: 6c 20 73 65 74 20 75 70 70 65 72 20 62 6f 75 6e  l set upper boun
3200: 64 73 0a 6f 6e 20 74 68 65 20 73 69 7a 65 73 20  ds.on the sizes 
3210: 6f 66 20 76 61 72 69 6f 75 73 20 73 74 72 75 63  of various struc
3220: 74 75 72 65 73 20 69 6e 20 53 51 4c 69 74 65 2e  tures in SQLite.
3230: 20 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69    The compile-ti
3240: 6d 65 0a 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61  me.options norma
3250: 6c 6c 79 20 73 65 74 20 61 20 68 61 72 64 20 75  lly set a hard u
3260: 70 70 65 72 20 62 6f 75 6e 64 20 74 68 61 74 20  pper bound that 
3270: 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 61  can be changed.a
3280: 74 20 72 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e  t run-time on in
3290: 64 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61  dividual [databa
32a0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20  se connections] 
32b0: 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74  using the.[sqlit
32c0: 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65  e3_limit()] inte
32d0: 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  rface.</p>..<p>T
32e0: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
32f0: 6f 70 74 69 6f 6e 73 20 66 6f 72 20 73 65 74 74  options for sett
3300: 69 6e 67 20 75 70 70 65 72 20 62 6f 75 6e 64 73  ing upper bounds
3310: 20 61 72 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64   are.[limits | d
3320: 6f 63 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61  ocumented separa
3330: 74 65 6c 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c  tely].  The foll
3340: 6f 77 69 6e 67 20 69 73 20 61 20 6c 69 73 74 20  owing is a list 
3350: 6f 66 0a 74 68 65 20 61 76 61 69 6c 61 62 6c 65  of.the available
3360: 20 73 65 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a   settings:</p>..
3370: 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  <ul>.<li> [SQLIT
3380: 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 20  E_MAX_ATTACHED] 
3390: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
33a0: 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20  ITE_MAX_COLUMN] 
33b0: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
33c0: 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44  ITE_MAX_COMPOUND
33d0: 5f 53 45 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a  _SELECT]  </li>.
33e0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
33f0: 5f 45 58 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f  _EXPR_DEPTH]  </
3400: 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  li>.<li> [SQLITE
3410: 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52  _MAX_FUNCTION_AR
3420: 47 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  G]  </li>.<li> [
3430: 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54  SQLITE_MAX_LENGT
3440: 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  H]  </li>.<li> [
3450: 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f  SQLITE_MAX_LIKE_
3460: 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20  PATTERN_LENGTH] 
3470: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
3480: 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55  ITE_MAX_PAGE_COU
3490: 4e 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  NT]  </li>.<li> 
34a0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f  [SQLITE_MAX_SQL_
34b0: 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c  LENGTH]  </li>.<
34c0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
34d0: 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d  VARIABLE_NUMBER]
34e0: 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c    </li>.</ul>..<
34f0: 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66  a name="controlf
3500: 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68  eatures"></a>.<h
3510: 32 3e 31 2e 33 20 4f 70 74 69 6f 6e 73 20 54 6f  2>1.3 Options To
3520: 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74 69   Control Operati
3530: 6e 67 20 43 68 61 72 61 63 74 65 72 69 73 74 69  ng Characteristi
3540: 63 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43  cs</h2>..<tcl>.C
3550: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3560: 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49  QLITE_4_BYTE_ALI
3570: 47 4e 45 44 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20  GNED_MALLOC} {. 
3580: 20 4f 6e 20 6d 6f 73 74 20 73 79 73 74 65 6d 73   On most systems
3590: 2c 20 74 68 65 20 6d 61 6c 6c 6f 63 28 29 20 73  , the malloc() s
35a0: 79 73 74 65 6d 20 63 61 6c 6c 20 72 65 74 75 72  ystem call retur
35b0: 6e 73 20 61 20 62 75 66 66 65 72 20 74 68 61 74  ns a buffer that
35c0: 20 69 73 0a 20 20 61 6c 69 67 6e 65 64 20 74 6f   is.  aligned to
35d0: 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e 64   an 8-byte bound
35e0: 61 72 79 2e 20 20 42 75 74 20 6f 6e 20 73 6f 6d  ary.  But on som
35f0: 65 20 73 79 73 74 65 6d 73 20 28 65 78 3a 20 77  e systems (ex: w
3600: 69 6e 64 6f 77 73 29 20 6d 61 6c 6c 6f 63 28 29  indows) malloc()
3610: 0a 20 20 72 65 74 75 72 6e 73 20 34 2d 62 79 74  .  returns 4-byt
3620: 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65  e aligned pointe
3630: 72 2e 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65  r.  This compile
3640: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6d 75 73  -time option mus
3650: 74 20 62 65 20 75 73 65 64 0a 20 20 6f 6e 20 73  t be used.  on s
3660: 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75  ystems that retu
3670: 72 6e 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65  rn 4-byte aligne
3680: 64 20 70 6f 69 6e 74 65 72 73 20 66 72 6f 6d 20  d pointers from 
3690: 6d 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d  malloc()..}..COM
36a0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
36b0: 49 54 45 5f 43 41 53 45 5f 53 45 4e 53 49 54 49  ITE_CASE_SENSITI
36c0: 56 45 5f 4c 49 4b 45 7d 20 7b 0a 20 20 49 66 20  VE_LIKE} {.  If 
36d0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70  this option is p
36e0: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
36f0: 20 62 75 69 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d   built-in [LIKE]
3700: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 62   operator will b
3710: 65 0a 20 20 63 61 73 65 20 73 65 6e 73 69 74 69  e.  case sensiti
3720: 76 65 2e 20 20 54 68 69 73 20 73 61 6d 65 20 65  ve.  This same e
3730: 66 66 65 63 74 20 63 61 6e 20 62 65 20 61 63 68  ffect can be ach
3740: 69 65 76 65 64 20 61 74 20 72 75 6e 2d 74 69 6d  ieved at run-tim
3750: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 63  e using.  the [c
3760: 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69  ase_sensitive_li
3770: 6b 65 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43  ke pragma]..}..C
3780: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3790: 51 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f 56 45  QLITE_DIRECT_OVE
37a0: 52 46 4c 4f 57 5f 52 45 41 44 7d 20 7b 0a 20 20  RFLOW_READ} {.  
37b0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
37c0: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 63 6f 6e   is present, con
37d0: 74 65 6e 74 20 63 6f 6e 74 61 69 6e 65 64 20 69  tent contained i
37e0: 6e 0a 20 20 5b 6f 76 65 72 66 6c 6f 77 20 70 61  n.  [overflow pa
37f0: 67 65 73 5d 20 6f 66 20 74 68 65 20 64 61 74 61  ges] of the data
3800: 62 61 73 65 20 66 69 6c 65 20 69 73 20 72 65 61  base file is rea
3810: 64 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20  d directly from 
3820: 64 69 73 6b 2c 0a 20 20 62 79 70 61 73 73 69 6e  disk,.  bypassin
3830: 67 20 74 68 65 20 5b 70 61 67 65 20 63 61 63 68  g the [page cach
3840: 65 5d 2c 20 64 75 72 69 6e 67 20 72 65 61 64 20  e], during read 
3850: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49  transactions.  I
3860: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20  n applications. 
3870: 20 74 68 61 74 20 64 6f 20 61 20 6c 6f 74 20 6f   that do a lot o
3880: 66 20 72 65 61 64 73 20 6f 66 20 6c 61 72 67 65  f reads of large
3890: 20 42 4c 4f 42 73 2c 20 74 68 69 73 20 6f 70 74   BLOBs, this opt
38a0: 69 6f 6e 20 6d 69 67 68 74 20 69 6d 70 72 6f 76  ion might improv
38b0: 65 20 72 65 61 64 0a 20 20 70 65 72 66 6f 72 6d  e read.  perform
38c0: 61 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ance..}..COMPILE
38d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
38e0: 48 41 56 45 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20  HAVE_ISNAN} {.  
38f0: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
3900: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
3910: 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20  SQLite will use 
3920: 74 68 65 20 69 73 6e 61 6e 28 29 20 66 75 6e 63  the isnan() func
3930: 74 69 6f 6e 20 66 72 6f 6d 0a 20 20 74 68 65 20  tion from.  the 
3940: 73 79 73 74 65 6d 20 6d 61 74 68 20 6c 69 62 72  system math libr
3950: 61 72 79 2e 20 20 57 69 74 68 6f 75 74 20 74 68  ary.  Without th
3960: 69 73 20 6f 70 74 69 6f 6e 20 28 74 68 65 20 64  is option (the d
3970: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 29  efault behavior)
3980: 0a 20 20 53 51 4c 69 74 65 20 75 73 65 73 20 69  .  SQLite uses i
3990: 74 73 20 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20  ts own internal 
39a0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
39b0: 66 20 69 73 6e 61 6e 28 29 2e 20 20 53 51 4c 69  f isnan().  SQLi
39c0: 74 65 20 75 73 65 73 0a 20 20 69 74 73 20 6f 77  te uses.  its ow
39d0: 6e 20 69 6e 74 65 72 6e 61 6c 20 69 73 6e 61 6e  n internal isnan
39e0: 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  () implementatio
39f0: 6e 20 62 79 20 64 65 66 61 75 6c 74 20 62 65 63  n by default bec
3a00: 61 75 73 65 20 6f 66 20 70 61 73 74 0a 20 20 70  ause of past.  p
3a10: 72 6f 62 6c 65 6d 73 20 77 69 74 68 20 73 79 73  roblems with sys
3a20: 74 65 6d 20 69 73 6e 61 6e 28 29 20 66 75 6e 63  tem isnan() func
3a30: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
3a40: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3a50: 5f 4f 53 5f 4f 54 48 45 52 3d 3c 69 3e 26 6c 74  _OS_OTHER=<i>&lt
3a60: 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d  ;0 or 1&gt;</i>}
3a70: 20 7b 0a 20 20 54 68 65 20 6f 70 74 69 6f 6e 20   {.  The option 
3a80: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
3a90: 20 6f 6d 69 74 20 69 74 73 20 62 75 69 6c 74 2d   omit its built-
3aa0: 69 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  in operating sys
3ab0: 74 65 6d 20 69 6e 74 65 72 66 61 63 65 73 0a 20  tem interfaces. 
3ac0: 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f   for Unix, Windo
3ad0: 77 73 2c 20 61 6e 64 20 4f 53 2f 32 2e 20 20 54  ws, and OS/2.  T
3ae0: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6c 69 62  he resulting lib
3af0: 72 61 72 79 20 77 69 6c 6c 20 68 61 76 65 20 6e  rary will have n
3b00: 6f 20 64 65 66 61 75 6c 74 0a 20 20 5b 73 71 6c  o default.  [sql
3b10: 69 74 65 33 5f 76 66 73 20 7c 20 6f 70 65 72 61  ite3_vfs | opera
3b20: 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65  ting system inte
3b30: 72 66 61 63 65 5d 2e 20 20 41 70 70 6c 69 63 61  rface].  Applica
3b40: 74 69 6f 6e 73 20 6d 75 73 74 20 75 73 65 0a 20  tions must use. 
3b50: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65   [sqlite3_vfs_re
3b60: 67 69 73 74 65 72 28 29 5d 20 74 6f 20 72 65 67  gister()] to reg
3b70: 69 73 74 65 72 20 61 6e 20 61 70 70 72 6f 70 72  ister an appropr
3b80: 69 61 74 65 20 69 6e 74 65 72 66 61 63 65 20 62  iate interface b
3b90: 65 66 6f 72 65 0a 20 20 75 73 69 6e 67 20 53 51  efore.  using SQ
3ba0: 4c 69 74 65 2e 20 20 41 70 70 6c 69 63 61 74 69  Lite.  Applicati
3bb0: 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 73 75  ons must also su
3bc0: 70 70 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74  pply implementat
3bd0: 69 6f 6e 73 20 66 6f 72 20 74 68 65 0a 20 20 5b  ions for the.  [
3be0: 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
3bf0: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
3c00: 6f 73 5f 65 6e 64 28 29 5d 20 69 6e 74 65 72 66  os_end()] interf
3c10: 61 63 65 73 2e 20 20 54 68 65 20 75 73 75 61 6c  aces.  The usual
3c20: 20 70 72 61 63 74 69 63 65 0a 20 20 69 73 20 66   practice.  is f
3c30: 6f 72 20 74 68 65 20 73 75 70 70 6c 69 65 64 20  or the supplied 
3c40: 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74  [sqlite3_os_init
3c50: 28 29 5d 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73  ()] to invoke [s
3c60: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
3c70: 74 65 72 28 29 5d 2e 0a 20 20 53 51 4c 69 74 65  ter()]..  SQLite
3c80: 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61   will automatica
3c90: 6c 6c 79 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69  lly invoke [sqli
3ca0: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 77  te3_os_init()] w
3cb0: 68 65 6e 20 69 74 20 69 6e 69 74 69 61 6c 69 7a  hen it initializ
3cc0: 65 73 2e 0a 0a 20 20 54 68 69 73 20 6f 70 74 69  es...  This opti
3cd0: 6f 6e 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20  on is typically 
3ce0: 75 73 65 64 20 77 68 65 6e 20 62 75 69 6c 64 69  used when buildi
3cf0: 6e 67 20 53 51 4c 69 74 65 20 66 6f 72 20 61 6e  ng SQLite for an
3d00: 20 65 6d 62 65 64 64 65 64 0a 20 20 70 6c 61 74   embedded.  plat
3d10: 66 6f 72 6d 20 77 69 74 68 20 61 20 63 75 73 74  form with a cust
3d20: 6f 6d 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  om operating sys
3d30: 74 65 6d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tem..}..COMPILE_
3d40: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53  OPTION {SQLITE_S
3d50: 45 43 55 52 45 5f 44 45 4c 45 54 45 7d 20 7b 0a  ECURE_DELETE} {.
3d60: 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74    This compile-t
3d70: 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67  ime option chang
3d80: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73  es the default s
3d90: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20  etting of the.  
3da0: 5b 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 70  [secure_delete p
3db0: 72 61 67 6d 61 5d 2e 20 20 57 68 65 6e 20 74 68  ragma].  When th
3dc0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74  is option is not
3dd0: 20 75 73 65 64 2c 20 73 65 63 75 72 65 5f 64 65   used, secure_de
3de0: 6c 65 74 65 20 64 65 66 61 75 6c 74 73 0a 20 20  lete defaults.  
3df0: 74 6f 20 6f 66 66 2e 20 20 57 68 65 6e 20 74 68  to off.  When th
3e00: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65  is option is pre
3e10: 73 65 6e 74 2c 20 73 65 63 75 72 65 5f 64 65 6c  sent, secure_del
3e20: 65 74 65 20 64 65 66 61 75 6c 74 73 20 74 6f 20  ete defaults to 
3e30: 6f 6e 2e 0a 0a 20 20 54 68 65 20 73 65 63 75 72  on...  The secur
3e40: 65 5f 64 65 6c 65 74 65 20 73 65 74 74 69 6e 67  e_delete setting
3e50: 20 63 61 75 73 65 73 20 64 65 6c 65 74 65 64 20   causes deleted 
3e60: 63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 6f 76  content to be ov
3e70: 65 72 77 72 69 74 74 65 6e 20 77 69 74 68 0a 20  erwritten with. 
3e80: 20 7a 65 72 6f 73 2e 20 20 54 68 65 72 65 20 69   zeros.  There i
3e90: 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72  s a small perfor
3ea0: 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 20 66 6f  mance penalty fo
3eb0: 72 20 74 68 69 73 20 73 69 6e 63 65 20 61 64 64  r this since add
3ec0: 69 74 69 6f 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75  itional I/O.  mu
3ed0: 73 74 20 6f 63 63 75 72 2e 20 20 4f 6e 20 74 68  st occur.  On th
3ee0: 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 65  e other hand, se
3ef0: 63 75 72 65 5f 64 65 6c 65 74 65 20 63 61 6e 20  cure_delete can 
3f00: 70 72 65 76 65 6e 74 20 73 65 6e 73 69 74 69 76  prevent sensitiv
3f10: 65 20 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  e .  information
3f20: 20 66 72 6f 6d 20 6c 69 6e 67 65 72 69 6e 67 20   from lingering 
3f30: 69 6e 20 75 6e 75 73 65 64 20 70 61 72 74 73 20  in unused parts 
3f40: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
3f50: 66 69 6c 65 20 61 66 74 65 72 20 69 74 0a 20 20  file after it.  
3f60: 68 61 73 20 61 6c 6c 65 67 65 64 6c 79 20 62 65  has allegedly be
3f70: 65 6e 20 64 65 6c 65 74 65 64 2e 20 20 53 65 65  en deleted.  See
3f80: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69   the documentati
3f90: 6f 6e 20 6f 6e 20 74 68 65 0a 20 20 5b 73 65 63  on on the.  [sec
3fa0: 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d  ure_delete pragm
3fb0: 61 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a] for additiona
3fc0: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d  l information..}
3fd0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
3fe0: 20 7b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   {SQLITE_THREADS
3ff0: 41 46 45 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  AFE=<i>&lt;0 or 
4000: 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20  1 or 2&gt;</i>} 
4010: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
4020: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
4030: 20 6f 72 20 6e 6f 74 20 63 6f 64 65 20 69 73 20   or not code is 
4040: 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69  included in SQLi
4050: 74 65 20 74 6f 0a 20 20 65 6e 61 62 6c 65 20 69  te to.  enable i
4060: 74 20 74 6f 20 6f 70 65 72 61 74 65 20 73 61 66  t to operate saf
4070: 65 6c 79 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  ely in a multith
4080: 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d 65  readed environme
4090: 6e 74 2e 20 20 54 68 65 0a 20 20 64 65 66 61 75  nt.  The.  defau
40a0: 6c 74 20 69 73 20 53 51 4c 49 54 45 5f 54 48 52  lt is SQLITE_THR
40b0: 45 41 44 53 41 46 45 3d 31 20 77 68 69 63 68 20  EADSAFE=1 which 
40c0: 69 73 20 73 61 66 65 20 66 6f 72 20 75 73 65 20  is safe for use 
40d0: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
40e0: 65 64 0a 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ed.  environment
40f0: 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64  .  When compiled
4100: 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52   with SQLITE_THR
4110: 45 41 44 53 41 46 45 3d 30 20 61 6c 6c 20 6d 75  EADSAFE=0 all mu
4120: 74 65 78 69 6e 67 20 63 6f 64 65 0a 20 20 69 73  texing code.  is
4130: 20 6f 6d 69 74 74 65 64 20 61 6e 64 20 69 74 20   omitted and it 
4140: 69 73 20 75 6e 73 61 66 65 20 74 6f 20 75 73 65  is unsafe to use
4150: 20 53 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c   SQLite in a mul
4160: 74 69 74 68 72 65 61 64 65 64 20 70 72 6f 67 72  tithreaded progr
4170: 61 6d 2e 0a 20 20 57 68 65 6e 20 63 6f 6d 70 69  am..  When compi
4180: 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f  led with SQLITE_
4190: 54 48 52 45 41 44 53 41 46 45 3d 32 2c 20 53 51  THREADSAFE=2, SQ
41a0: 4c 69 74 65 20 63 61 6e 20 62 65 20 75 73 65 64  Lite can be used
41b0: 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61   in a multithrea
41c0: 64 65 64 0a 20 20 70 72 6f 67 72 61 6d 20 73 6f  ded.  program so
41d0: 20 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20   long as no two 
41e0: 74 68 72 65 61 64 73 20 61 74 74 65 6d 70 74 20  threads attempt 
41f0: 74 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65 0a  to use the same.
4200: 20 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e    [database conn
4210: 65 63 74 69 6f 6e 5d 20 28 6f 72 20 61 6e 79 20  ection] (or any 
4220: 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
4230: 65 6e 74 73 5d 20 64 65 72 69 76 65 64 20 66 72  ents] derived fr
4240: 6f 6d 0a 20 20 74 68 61 74 20 64 61 74 61 62 61  om.  that databa
4250: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 61  se connection) a
4260: 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e  t the same time.
4270: 0a 0a 20 20 54 6f 20 70 75 74 20 69 74 20 61 6e  ..  To put it an
4280: 6f 74 68 65 72 20 77 61 79 2c 20 53 51 4c 49 54  other way, SQLIT
4290: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 73  E_THREADSAFE=1 s
42a0: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  ets the default.
42b0: 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64    [threading mod
42c0: 65 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a 65 64  e] to Serialized
42d0: 2e 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  .  SQLITE_THREAD
42e0: 53 41 46 45 3d 32 20 73 65 74 73 20 74 68 65 20  SAFE=2 sets the 
42f0: 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61  default.  [threa
4300: 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d 75  ding mode] to Mu
4310: 6c 74 69 2d 74 68 72 65 61 64 65 64 2e 20 20 41  lti-threaded.  A
4320: 6e 64 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  nd SQLITE_THREAD
4330: 53 41 46 45 3d 30 20 73 65 74 73 20 74 68 65 0a  SAFE=0 sets the.
4340: 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64    [threading mod
4350: 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68 72  e] to Single-thr
4360: 65 61 64 65 64 2e 0a 0a 20 20 54 68 65 20 76 61  eaded...  The va
4370: 6c 75 65 20 6f 66 20 53 51 4c 49 54 45 5f 54 48  lue of SQLITE_TH
4380: 52 45 41 44 53 41 46 45 20 63 61 6e 20 62 65 20  READSAFE can be 
4390: 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20 72 75  determined at ru
43a0: 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74  n-time.  using t
43b0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65  he [sqlite3_thre
43c0: 61 64 73 61 66 65 28 29 5d 20 69 6e 74 65 72 66  adsafe()] interf
43d0: 61 63 65 2e 0a 0a 20 20 57 68 65 6e 20 53 51 4c  ace...  When SQL
43e0: 69 74 65 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  ite has been com
43f0: 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54  piled with SQLIT
4400: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 6f  E_THREADSAFE=1 o
4410: 72 0a 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41  r.  SQLITE_THREA
4420: 44 53 41 46 45 3d 32 20 74 68 65 6e 20 74 68 65  DSAFE=2 then the
4430: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
4440: 5d 0a 20 20 63 61 6e 20 62 65 20 61 6c 74 65 72  ].  can be alter
4450: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75  ed at run-time u
4460: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
4470: 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65  3_config()] inte
4480: 72 66 61 63 65 20 74 6f 67 65 74 68 65 72 0a 20  rface together. 
4490: 20 77 69 74 68 20 6f 6e 65 20 6f 66 20 74 68 65   with one of the
44a0: 73 65 20 76 65 72 62 73 3a 0a 0a 20 20 3c 75 6c  se verbs:..  <ul
44b0: 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f  >.  <li>[SQLITE_
44c0: 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
44d0: 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49  EAD].  <li>[SQLI
44e0: 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  TE_CONFIG_MULTIT
44f0: 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51  HREAD].  <li>[SQ
4500: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49  LITE_CONFIG_SERI
4510: 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f 75 6c 3e 0a  ALIZED].  </ul>.
4520: 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f  .  The [SQLITE_O
4530: 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 61 6e 64  PEN_NOMUTEX] and
4540: 0a 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  .  [SQLITE_OPEN_
4550: 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 73  FULLMUTEX] flags
4560: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65   to [sqlite3_ope
4570: 6e 5f 76 32 28 29 5d 20 63 61 6e 20 61 6c 73 6f  n_v2()] can also
4580: 20 62 65 20 75 73 65 64 0a 20 20 74 6f 20 61 64   be used.  to ad
4590: 6a 75 73 74 20 74 68 65 20 5b 74 68 72 65 61 64  just the [thread
45a0: 69 6e 67 20 6d 6f 64 65 5d 20 6f 66 20 69 6e 64  ing mode] of ind
45b0: 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73  ividual [databas
45c0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 0a 20  e connections]. 
45d0: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20   at run-time... 
45e0: 20 4e 6f 74 65 20 74 68 61 74 20 77 68 65 6e 20   Note that when 
45f0: 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
4600: 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54  ed with SQLITE_T
4610: 48 52 45 41 44 53 41 46 45 3d 30 2c 20 74 68 65  HREADSAFE=0, the
4620: 20 63 6f 64 65 0a 20 20 74 6f 20 6d 61 6b 65 20   code.  to make 
4630: 53 51 4c 69 74 65 20 74 68 72 65 61 64 73 61 66  SQLite threadsaf
4640: 65 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  e is omitted fro
4650: 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 20 57 68  m the build.  Wh
4660: 65 6e 20 74 68 69 73 20 6f 63 63 75 72 73 2c 0a  en this occurs,.
4670: 20 20 69 74 20 69 73 20 69 6d 70 6f 73 73 69 62    it is impossib
4680: 6c 65 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  le to change the
4690: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
46a0: 5d 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20  ] at start-time 
46b0: 6f 72 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20  or run-time...  
46c0: 53 65 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  See the [threadi
46d0: 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75 6d 65 6e  ng mode] documen
46e0: 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74  tation for addit
46f0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
4700: 6e 0a 20 20 6f 6e 20 61 73 70 65 63 74 73 20 6f  n.  on aspects o
4710: 66 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 69  f using SQLite i
4720: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
4730: 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 7d  d environment..}
4740: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4750: 20 7b 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54   {SQLITE_TEMP_ST
4760: 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30 20 74 68 72  ORE=<i>&lt;0 thr
4770: 6f 75 67 68 20 33 26 67 74 3b 3c 2f 69 3e 7d 20  ough 3&gt;</i>} 
4780: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
4790: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
47a0: 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73   temporary files
47b0: 20 61 72 65 20 73 74 6f 72 65 64 20 6f 6e 20 64   are stored on d
47c0: 69 73 6b 20 6f 72 0a 20 20 69 6e 20 6d 65 6d 6f  isk or.  in memo
47d0: 72 79 2e 20 20 54 68 65 20 6d 65 61 6e 69 6e 67  ry.  The meaning
47e0: 73 20 66 6f 72 20 76 61 72 69 6f 75 73 20 73 65  s for various se
47f0: 74 74 69 6e 67 73 20 6f 66 20 74 68 69 73 20 63  ttings of this c
4800: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70  ompile-time.  op
4810: 74 69 6f 6e 20 61 72 65 20 61 73 20 66 6f 6c 6c  tion are as foll
4820: 6f 77 73 3a 0a 0a 20 20 3c 74 61 62 6c 65 20 63  ows:..  <table c
4830: 65 6c 6c 70 61 64 64 69 6e 67 3d 22 32 22 20 62  ellpadding="2" b
4840: 6f 72 64 65 72 3d 22 31 22 3e 0a 20 20 3c 74 72  order="1">.  <tr
4850: 3e 3c 74 68 3e 53 51 4c 49 54 45 5f 54 45 4d 50  ><th>SQLITE_TEMP
4860: 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c 74 68 3e 4d  _STORE</th><th>M
4870: 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c 2f 74 72 3e  eaning</th></tr>
4880: 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  .  <tr><td align
4890: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
48a0: 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20 74  <td>Always use t
48b0: 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 3c 2f  emporary files</
48c0: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  td></tr>.  <tr><
48d0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
48e0: 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20  ">1</td><td>Use 
48f0: 66 69 6c 65 73 20 62 79 20 64 65 66 61 75 6c 74  files by default
4900: 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20   but allow the. 
4910: 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74   [PRAGMA temp_st
4920: 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  ore] command to 
4930: 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74  override</td></t
4940: 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69  r>.  <tr><td ali
4950: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74  gn="center">2</t
4960: 64 3e 3c 74 64 3e 55 73 65 20 6d 65 6d 6f 72 79  d><td>Use memory
4970: 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 20   by default but 
4980: 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41  allow the.  [PRA
4990: 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20  GMA temp_store] 
49a0: 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72  command to overr
49b0: 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20  ide</td></tr>.  
49c0: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  <tr><td align="c
49d0: 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74 64  enter">3</td><td
49e0: 3e 41 6c 77 61 79 73 20 75 73 65 20 6d 65 6d 6f  >Always use memo
49f0: 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  ry</td></tr>.  <
4a00: 2f 74 61 62 6c 65 3e 0a 0a 20 20 54 68 65 20 64  /table>..  The d
4a10: 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69  efault setting i
4a20: 73 20 31 2e 20 20 0a 20 20 41 64 64 69 74 69 6f  s 1.  .  Additio
4a30: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
4a40: 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20  can be found in 
4a50: 5b 74 65 6d 70 73 74 6f 72 65 20 7c 20 74 65 6d  [tempstore | tem
4a60: 70 66 69 6c 65 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a  pfiles.html]..}.
4a70: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4a80: 7b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 49  {SQLITE_TRACE_SI
4a90: 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 4e 3c 2f 69  ZE_LIMIT=<i>N</i
4aa0: 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d  >} {.  If this m
4ab0: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 20  acro is defined 
4ac0: 74 6f 20 61 20 70 6f 73 69 74 69 76 65 20 69 6e  to a positive in
4ad0: 74 65 67 65 72 20 3c 69 3e 4e 3c 2f 69 3e 2c 20  teger <i>N</i>, 
4ae0: 74 68 65 6e 20 74 68 65 20 6c 65 6e 67 74 68 20  then the length 
4af0: 6f 66 0a 20 20 73 74 72 69 6e 67 73 20 61 6e 64  of.  strings and
4b00: 20 42 4c 4f 42 20 74 68 61 74 20 61 72 65 20 65   BLOB that are e
4b10: 78 70 61 6e 64 65 64 20 69 6e 74 6f 20 70 61 72  xpanded into par
4b20: 61 6d 65 74 65 72 73 20 69 6e 20 74 68 65 20 6f  ameters in the o
4b30: 75 74 70 75 74 20 6f 66 0a 20 20 5b 73 71 6c 69  utput of.  [sqli
4b40: 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69 73 20  te3_trace()] is 
4b50: 6c 69 6d 69 74 65 64 20 74 6f 20 3c 69 3e 4e 3c  limited to <i>N<
4b60: 2f 69 3e 20 62 79 74 65 73 2e 20 20 0a 7d 0a 0a  /i> bytes.  .}..
4b70: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4b80: 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49 7d 20  SQLITE_USE_URI} 
4b90: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
4ba0: 63 61 75 73 65 73 20 74 68 65 20 5b 55 52 49 20  causes the [URI 
4bb0: 66 69 6c 65 6e 61 6d 65 5d 20 70 72 6f 63 65 73  filename] proces
4bc0: 73 20 6c 6f 67 69 63 20 74 6f 20 62 65 20 65 6e  s logic to be en
4bd0: 61 62 6c 65 64 20 62 79 20 0a 20 20 64 65 66 61  abled by .  defa
4be0: 75 6c 74 2e 20 20 0a 7d 0a 0a 3c 2f 74 63 6c 3e  ult.  .}..</tcl>
4bf0: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e 61 62 6c  ..<a name="enabl
4c00: 65 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a  efeatures"></a>.
4c10: 3c 68 32 3e 31 2e 34 20 4f 70 74 69 6f 6e 73 20  <h2>1.4 Options 
4c20: 54 6f 20 45 6e 61 62 6c 65 20 46 65 61 74 75 72  To Enable Featur
4c30: 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e  es Normally Turn
4c40: 65 64 20 4f 66 66 3c 2f 68 32 3e 0a 0a 3c 74 63  ed Off</h2>..<tc
4c50: 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  l>.COMPILE_OPTIO
4c60: 4e 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f  N {SQLITE_ALLOW_
4c70: 55 52 49 5f 41 55 54 48 4f 52 49 54 59 7d 20 7b  URI_AUTHORITY} {
4c80: 0a 20 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  .  [URI filename
4c90: 73 5d 20 6e 6f 72 6d 61 6c 6c 79 20 74 68 72 6f  s] normally thro
4ca0: 77 20 61 6e 20 65 72 72 6f 72 20 69 73 20 74 68  w an error is th
4cb0: 65 20 61 75 74 68 6f 72 69 74 79 20 73 65 63 74  e authority sect
4cc0: 69 6f 6e 20 69 73 0a 20 20 6e 6f 74 20 65 69 74  ion is.  not eit
4cd0: 68 65 72 20 65 6d 70 74 79 20 6f 72 20 22 6c 6f  her empty or "lo
4ce0: 63 61 6c 68 6f 73 74 22 2e 20 20 48 6f 77 65 76  calhost".  Howev
4cf0: 65 72 2c 20 69 66 20 53 51 4c 69 74 65 20 69 73  er, if SQLite is
4d00: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 20   compiled with. 
4d10: 20 74 68 65 20 53 51 4c 49 54 45 5f 41 4c 4c 4f   the SQLITE_ALLO
4d20: 57 5f 55 52 49 5f 41 55 54 48 4f 52 49 54 59 20  W_URI_AUTHORITY 
4d30: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
4d40: 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 55 52  ion, then the UR
4d50: 49 20 69 73 0a 20 20 63 6f 6e 76 65 72 74 65 64  I is.  converted
4d60: 20 69 6e 74 6f 20 61 20 55 6e 69 66 6f 72 6d 20   into a Uniform 
4d70: 4e 61 6d 69 6e 67 20 43 6f 6e 76 65 6e 74 69 6f  Naming Conventio
4d80: 6e 20 28 55 4e 43 29 20 66 69 6c 65 6e 61 6d 65  n (UNC) filename
4d90: 20 61 6e 64 20 70 61 73 73 65 64 0a 20 20 64 6f   and passed.  do
4da0: 77 6e 20 74 6f 20 74 68 65 20 75 6e 64 65 72 6c  wn to the underl
4db0: 79 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20 73  ying operating s
4dc0: 79 73 74 65 6d 20 74 68 61 74 20 77 61 79 2e 20  ystem that way. 
4dd0: 20 0a 20 20 3c 70 3e 0a 20 20 53 6f 6d 65 20 66   .  <p>.  Some f
4de0: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
4df0: 66 20 53 51 4c 69 74 65 20 6d 61 79 20 63 68 61  f SQLite may cha
4e00: 6e 67 65 20 74 6f 20 65 6e 61 62 6c 65 20 74 68  nge to enable th
4e10: 69 73 20 66 65 61 74 75 72 65 0a 20 20 62 79 20  is feature.  by 
4e20: 64 65 66 61 75 6c 74 2e 0a 7d 0a 43 4f 4d 50 49  default..}.COMPI
4e30: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
4e40: 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47  E_ALLOW_COVERING
4e50: 5f 49 4e 44 45 58 5f 53 43 41 4e 3d 3c 69 3e 26  _INDEX_SCAN=<i>&
4e60: 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69  lt;0 or 1&gt;</i
4e70: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 43 2d 70 72  >} {.  This C-pr
4e80: 65 70 72 6f 63 65 73 73 20 6d 61 63 72 6f 20 64  eprocess macro d
4e90: 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65  etermines the de
4ea0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66  fault setting of
4eb0: 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 43   the.  [SQLITE_C
4ec0: 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49  ONFIG_COVERING_I
4ed0: 4e 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6e 66 69  NDEX_SCAN] confi
4ee0: 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67  guration setting
4ef0: 2e 20 20 49 74 20 64 65 66 61 75 6c 74 73 0a 20  .  It defaults. 
4f00: 20 74 6f 20 31 20 28 6f 6e 29 20 77 68 69 63 68   to 1 (on) which
4f10: 20 6d 65 61 6e 73 20 74 68 61 74 20 63 6f 76 65   means that cove
4f20: 72 69 6e 67 20 69 6e 64 69 63 65 73 20 61 72 65  ring indices are
4f30: 20 75 73 65 64 20 66 6f 72 20 66 75 6c 6c 20 74   used for full t
4f40: 61 62 6c 65 0a 20 20 73 63 61 6e 73 20 77 68 65  able.  scans whe
4f50: 72 65 20 70 6f 73 73 69 62 6c 65 2c 20 69 6e 20  re possible, in 
4f60: 6f 72 64 65 72 20 74 6f 20 72 65 64 75 63 65 20  order to reduce 
4f70: 49 2f 4f 20 61 6e 64 20 69 6d 70 72 6f 76 65 20  I/O and improve 
4f80: 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 20 20 48  performance..  H
4f90: 6f 77 65 76 65 72 2c 20 74 68 65 20 75 73 65 20  owever, the use 
4fa0: 6f 66 20 61 20 63 6f 76 65 72 69 6e 67 20 69 6e  of a covering in
4fb0: 64 65 78 20 66 6f 72 20 61 20 66 75 6c 6c 20 73  dex for a full s
4fc0: 63 61 6e 20 77 69 6c 6c 20 63 61 75 73 65 20 72  can will cause r
4fd0: 65 73 75 6c 74 73 0a 20 20 74 6f 20 61 70 70 65  esults.  to appe
4fe0: 61 72 20 69 6e 20 61 20 64 69 66 66 65 72 65 6e  ar in a differen
4ff0: 74 20 6f 72 64 65 72 20 66 72 6f 6d 20 6c 65 67  t order from leg
5000: 61 63 79 2c 20 77 68 69 63 68 20 63 6f 75 6c 64  acy, which could
5010: 20 63 61 75 73 65 20 73 6f 6d 65 0a 20 20 28 69   cause some.  (i
5020: 6e 63 6f 72 72 65 63 74 6c 79 2d 63 6f 64 65 64  ncorrectly-coded
5030: 29 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61  ) legacy applica
5040: 74 69 6f 6e 73 20 74 6f 20 62 72 65 61 6b 2e 20  tions to break. 
5050: 20 48 65 6e 63 65 2c 20 74 68 65 20 63 6f 76 65   Hence, the cove
5060: 72 69 6e 67 0a 20 20 69 6e 64 65 78 20 73 63 61  ring.  index sca
5070: 6e 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  n option can be 
5080: 64 69 73 61 62 6c 65 64 20 61 74 20 63 6f 6d 70  disabled at comp
5090: 69 6c 65 2d 74 69 6d 65 20 6f 6e 20 73 79 73 74  ile-time on syst
50a0: 65 6d 73 20 74 68 61 74 20 77 68 61 74 0a 20 20  ems that what.  
50b0: 74 6f 20 6d 69 6e 69 6d 69 7a 65 20 74 68 65 69  to minimize thei
50c0: 72 20 72 69 73 6b 20 6f 66 20 65 78 70 6f 73 69  r risk of exposi
50d0: 6e 67 20 65 72 72 6f 72 73 20 69 6e 20 6c 65 67  ng errors in leg
50e0: 61 63 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  acy applications
50f0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5100: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
5110: 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 3c 69 3e  LE_8_3_NAMES=<i>
5120: 26 6c 74 3b 31 20 6f 72 20 32 26 67 74 3b 3c 2f  &lt;1 or 2&gt;</
5130: 69 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  i>} {.  If this 
5140: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
5150: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
5160: 20 74 68 65 6e 20 65 78 74 72 61 20 63 6f 64 65   then extra code
5170: 20 69 73 0a 20 20 69 6e 63 6c 75 64 65 64 20 74   is.  included t
5180: 68 61 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74  hat allows SQLit
5190: 65 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20 6f 6e  e to function on
51a0: 20 61 20 66 69 6c 65 73 79 73 74 65 6d 20 74 68   a filesystem th
51b0: 61 74 0a 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72  at.  only suppor
51c0: 74 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 2e  t 8+3 filenames.
51d0: 20 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f    If the value o
51e0: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
51f0: 31 2c 0a 20 20 74 68 65 6e 20 74 68 65 20 64 65  1,.  then the de
5200: 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69  fault behavior i
5210: 73 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f  s to continue to
5220: 20 75 73 65 20 6c 6f 6e 67 20 66 69 6c 65 6e 61   use long filena
5230: 6d 65 73 20 61 6e 64 0a 20 20 74 6f 20 6f 6e 6c  mes and.  to onl
5240: 79 20 75 73 65 20 38 2b 33 20 66 69 6c 65 6e 61  y use 8+3 filena
5250: 6d 65 73 20 69 66 20 74 68 65 20 0a 20 20 64 61  mes if the .  da
5260: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
5270: 6e 20 69 73 20 6f 70 65 6e 65 64 20 75 73 69 6e  n is opened usin
5280: 67 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 73  g [URI filenames
5290: 5d 20 77 69 74 68 0a 20 20 74 68 65 20 22 3c 74  ] with.  the "<t
52a0: 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d 31 3c 2f 74  t>8_3_names=1</t
52b0: 74 3e 22 20 71 75 65 72 79 20 70 61 72 61 6d 65  t>" query parame
52c0: 74 65 72 2e 20 20 49 66 20 74 68 65 20 76 61 6c  ter.  If the val
52d0: 75 65 20 6f 66 0a 20 20 74 68 69 73 20 6d 61 63  ue of.  this mac
52e0: 72 6f 20 69 73 20 32 2c 20 74 68 65 6e 20 74 68  ro is 2, then th
52f0: 65 20 75 73 65 20 6f 66 20 38 2b 33 20 66 69 6c  e use of 8+3 fil
5300: 65 6e 61 6d 65 73 20 62 65 63 6f 6d 65 73 20 74  enames becomes t
5310: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 62 75 74  he default.  but
5320: 20 6d 61 79 20 62 65 20 64 69 73 61 62 6c 65 64   may be disabled
5330: 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 3c 74   on using the <t
5340: 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d 30 3c 2f 74  t>8_3_names=0</t
5350: 74 3e 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  t> query paramet
5360: 65 72 2e 0a 20 20 53 65 65 20 0a 7d 0a 0a 43 4f  er..  See .}..CO
5370: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5380: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f  LITE_ENABLE_API_
5390: 41 52 4d 4f 52 7d 20 7b 0a 20 20 57 68 65 6e 20  ARMOR} {.  When 
53a0: 64 65 66 69 6e 65 64 2c 20 74 68 69 73 20 43 2d  defined, this C-
53b0: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
53c0: 72 6f 20 61 63 74 69 76 61 74 65 73 20 65 78 74  ro activates ext
53d0: 72 61 20 63 6f 64 65 20 74 68 61 74 0a 20 20 61  ra code that.  a
53e0: 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 63  ttempts to detec
53f0: 74 20 6d 69 73 75 73 65 20 6f 66 20 74 68 65 20  t misuse of the 
5400: 53 51 4c 69 74 65 20 41 50 49 2c 20 73 75 63 68  SQLite API, such
5410: 20 61 73 20 70 61 73 73 69 6e 67 20 69 6e 20 4e   as passing in N
5420: 55 4c 4c 0a 20 20 70 6f 69 6e 74 65 72 73 20 74  ULL.  pointers t
5430: 6f 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d  o required param
5440: 65 74 65 72 73 20 6f 72 20 75 73 69 6e 67 20 6f  eters or using o
5450: 62 6a 65 63 74 73 20 61 66 74 65 72 20 74 68 65  bjects after the
5460: 79 20 68 61 76 65 20 62 65 65 6e 0a 20 20 64 65  y have been.  de
5470: 73 74 72 6f 79 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  stroyed..}..COMP
5480: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5490: 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43  TE_ENABLE_ATOMIC
54a0: 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20 74  _WRITE} {.  If t
54b0: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
54c0: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
54d0: 6e 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a 20  ned and if the. 
54e0: 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65   xDeviceCharacte
54f0: 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20 6f  ristics method o
5500: 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  f [sqlite3_io_me
5510: 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66 6f  thods] object fo
5520: 72 0a 20 20 61 20 64 61 74 61 62 61 73 65 20 66  r.  a database f
5530: 69 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69 61  ile reports (via
5540: 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51 4c   one of the [SQL
5550: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
5560: 5d 20 62 69 74 73 29 0a 20 20 74 68 61 74 20 74  ] bits).  that t
5570: 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73 75  he filesystem su
5580: 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77 72  pports atomic wr
5590: 69 74 65 73 20 61 6e 64 20 69 66 20 61 20 74 72  ites and if a tr
55a0: 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76 6f  ansaction.  invo
55b0: 6c 76 65 73 20 61 20 63 68 61 6e 67 65 20 74 6f  lves a change to
55c0: 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 70   only a single p
55d0: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
55e0: 61 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65 6e  ase file,.  then
55f0: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
5600: 20 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a 75   commits with ju
5610: 73 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69 74  st a single writ
5620: 65 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20 61  e request of.  a
5630: 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20   single page of 
5640: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
5650: 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75   no rollback jou
5660: 72 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64 0a  rnal is created.
5670: 20 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20 4f    or written.  O
5680: 6e 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74 68  n filesystems th
5690: 61 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d 69  at support atomi
56a0: 63 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a 20  c writes, this. 
56b0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61   optimization ca
56c0: 6e 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67 6e  n result in sign
56d0: 69 66 69 63 61 6e 74 20 73 70 65 65 64 20 69 6d  ificant speed im
56e0: 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a 20  provements for. 
56f0: 20 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e 20   small updates. 
5700: 20 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66 69   However, few fi
5710: 6c 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f 72  lesystems suppor
5720: 74 20 74 68 69 73 20 63 61 70 61 62 69 6c 69 74  t this capabilit
5730: 79 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64 65  y.  and the code
5740: 20 70 61 74 68 73 20 74 68 61 74 20 63 68 65 63   paths that chec
5750: 6b 20 66 6f 72 20 74 68 69 73 20 63 61 70 61 62  k for this capab
5760: 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e 20  ility slow down 
5770: 77 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d 61  write.  performa
5780: 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20 74  nce on systems t
5790: 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63 20  hat lack atomic 
57a0: 77 72 69 74 65 20 63 61 70 61 62 69 6c 69 74 79  write capability
57b0: 2c 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61 74  , so this.  feat
57c0: 75 72 65 20 69 73 20 64 69 73 61 62 6c 65 64 20  ure is disabled 
57d0: 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43  by default..}..C
57e0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
57f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c  QLITE_ENABLE_COL
5800: 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d 20 7b 0a  UMN_METADATA} {.
5810: 20 20 57 68 65 6e 20 74 68 69 73 20 43 2d 70 72    When this C-pr
5820: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
5830: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51 4c   is defined, SQL
5840: 69 74 65 20 69 6e 63 6c 75 64 65 73 20 73 6f 6d  ite includes som
5850: 65 0a 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 41  e.  additional A
5860: 50 49 73 20 74 68 61 74 20 70 72 6f 76 69 64 65  PIs that provide
5870: 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 63 63 65   convenient acce
5880: 73 73 20 74 6f 20 6d 65 74 61 2d 64 61 74 61 20  ss to meta-data 
5890: 61 62 6f 75 74 0a 20 20 74 61 62 6c 65 73 20 61  about.  tables a
58a0: 6e 64 20 71 75 65 72 69 65 73 2e 20 20 54 68 65  nd queries.  The
58b0: 20 41 50 49 73 20 74 68 61 74 20 61 72 65 20 65   APIs that are e
58c0: 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20 6f  nabled by this o
58d0: 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c 75  ption are:..  <u
58e0: 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  l>.  <li> [sqlit
58f0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
5900: 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e  se_name()] </li>
5910: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
5920: 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
5930: 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e  _name16()] </li>
5940: 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33  .  <li> [sqlite3
5950: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
5960: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
5970: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
5980: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
5990: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20  )] </li>.  <li> 
59a0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
59b0: 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29 5d 20 3c  origin_name()] <
59c0: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
59d0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
59e0: 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c  in_name16()] </l
59f0: 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f  i>.  </ul>.}..CO
5a00: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5a10: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c  LITE_ENABLE_EXPL
5a20: 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 7d 20 7b 0a  AIN_COMMENTS} {.
5a30: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
5a40: 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74  ds extra logic t
5a50: 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 6e  o SQLite that in
5a60: 73 65 72 74 73 20 63 6f 6d 6d 65 6e 74 20 74 65  serts comment te
5a70: 78 74 20 69 6e 74 6f 20 74 68 65 0a 20 20 6f 75  xt into the.  ou
5a80: 74 70 75 74 20 6f 66 20 5b 45 58 50 4c 41 49 4e  tput of [EXPLAIN
5a90: 5d 2e 20 20 54 68 65 73 65 20 65 78 74 72 61 20  ].  These extra 
5aa0: 63 6f 6d 6d 65 6e 74 73 20 75 73 65 20 65 78 74  comments use ext
5ab0: 72 61 20 6d 65 6d 6f 72 79 2c 20 74 68 75 73 0a  ra memory, thus.
5ac0: 20 20 6d 61 6b 69 6e 67 20 5b 70 72 65 70 61 72    making [prepar
5ad0: 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 6c  ed statements] l
5ae0: 61 72 67 65 72 20 61 6e 64 20 76 65 72 79 20 73  arger and very s
5af0: 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2c 20  lightly slower, 
5b00: 61 6e 64 20 73 6f 20 74 68 65 79 20 61 72 65 0a  and so they are.
5b10: 20 20 74 75 72 6e 65 64 20 6f 66 66 20 62 79 20    turned off by 
5b20: 64 65 66 61 75 6c 74 20 61 6e 64 20 69 6e 20 6d  default and in m
5b30: 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e  ost application.
5b40: 20 20 42 75 74 20 73 6f 6d 65 20 61 70 70 6c 69    But some appli
5b50: 63 61 74 69 6f 6e 73 2c 20 73 75 63 68 0a 20 20  cations, such.  
5b60: 61 73 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d  as the [command-
5b70: 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 66 6f 72 20  line shell] for 
5b80: 53 51 4c 69 74 65 2c 20 76 61 6c 75 65 20 63 6c  SQLite, value cl
5b90: 61 72 69 74 79 20 6f 66 20 45 58 50 4c 41 49 4e  arity of EXPLAIN
5ba0: 20 6f 75 74 70 75 74 0a 20 20 6f 76 65 72 20 72   output.  over r
5bb0: 61 77 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61  aw performance a
5bc0: 6e 64 20 73 6f 20 74 68 69 73 20 63 6f 6d 70 69  nd so this compi
5bd0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
5be0: 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74  s available to t
5bf0: 68 65 6d 2e 0a 20 20 54 68 65 20 53 51 4c 49 54  hem..  The SQLIT
5c00: 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e  E_ENABLE_EXPLAIN
5c10: 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f 6d 70 69 6c  _COMMENTS compil
5c20: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
5c30: 20 61 6c 73 6f 20 65 6e 61 62 6c 65 64 0a 20 20   also enabled.  
5c40: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 66  automatically if
5c50: 20 5b 53 51 4c 49 54 45 5f 44 45 42 55 47 5d 20   [SQLITE_DEBUG] 
5c60: 69 73 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 0a  is enabled..}...
5c70: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5c80: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
5c90: 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  S3} {.  When thi
5ca0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
5cb0: 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c  ned in the [amal
5cc0: 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69  gamation], versi
5cd0: 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75  on 3.  of the fu
5ce0: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
5cf0: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
5d00: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
5d10: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
5d20: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5d30: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
5d40: 5f 50 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a  _PARENTHESIS} {.
5d50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f    This option mo
5d60: 64 69 66 69 65 73 20 74 68 65 20 71 75 65 72 79  difies the query
5d70: 20 70 61 74 74 65 72 6e 20 70 61 72 73 65 72 20   pattern parser 
5d80: 69 6e 20 46 54 53 33 20 73 75 63 68 20 74 68 61  in FTS3 such tha
5d90: 74 20 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20  t it.  supports 
5da0: 6f 70 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e  operators AND an
5db0: 64 20 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69  d NOT (in additi
5dc0: 6f 6e 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20  on to the usual 
5dd0: 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61  OR and NEAR).  a
5de0: 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71  nd also allows q
5df0: 75 65 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73  uery expressions
5e00: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74   to contain nest
5e10: 65 64 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a  ed parenthesis..
5e20: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5e30: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
5e40: 5f 46 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e 20  _FTS4} {.  When 
5e50: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
5e60: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
5e70: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65  malgamation], ve
5e80: 72 73 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a 20  rsions 3 and 4. 
5e90: 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78   of the full-tex
5ea0: 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20  t search engine 
5eb0: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
5ec0: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
5ed0: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
5ee0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
5ef0: 4e 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54  NABLE_ICU} {.  T
5f00: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
5f10: 73 20 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f  s the .  [http:/
5f20: 2f 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74  /www.icu-project
5f30: 2e 6f 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74  .org/ | Internat
5f40: 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73  ional Components
5f50: 20 66 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20   for Unicode].  
5f60: 6f 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69  or "ICU" extensi
5f70: 6f 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20  on to SQLite to 
5f80: 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  be added to the 
5f90: 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  build.  .}..COMP
5fa0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5fb0: 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43  TE_ENABLE_IOTRAC
5fc0: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68  E} {.  When both
5fd0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
5fe0: 20 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e   and the [Comman
5ff0: 64 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65  d Line Interface
6000: 5d 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68  ] (CLI) are both
6010: 20 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   .  compiled wit
6020: 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74  h this option, t
6030: 68 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76  hen the CLI prov
6040: 69 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f  ides an extra co
6050: 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e  mmand.  named ".
6060: 69 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72  iotrace" that pr
6070: 6f 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76  ovides a low-lev
6080: 65 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63  el log of I/O ac
6090: 74 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f  tivity..  This o
60a0: 70 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d  ption is experim
60b0: 65 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65  ental and may be
60c0: 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e   discontinued in
60d0: 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
60e0: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
60f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
6100: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
6110: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
6120: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74  on enables addit
6130: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74  ional logic in t
6140: 68 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20  he OS interface 
6150: 6c 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20  layer for.  Mac 
6160: 4f 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69  OS X. The additi
6170: 6f 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d  onal logic attem
6180: 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  pts to determine
6190: 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65   the type of the
61a0: 0a 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69  .  underlying fi
61b0: 6c 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f  lesystem and cho
61c0: 6f 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74  ose and alternat
61d0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
61e0: 74 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b  tegy.  that work
61f0: 73 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20  s correctly for 
6200: 74 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20  that filesystem 
6210: 74 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69  type. Five locki
6220: 6e 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20  ng strategies . 
6230: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a   are available:.
6240: 0a 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e  .  <ul>.    <li>
6250: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
6260: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68  tyle. This is th
6270: 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e  e default lockin
6280: 67 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a  g style and the.
6290: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75           style u
62a0: 73 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f  sed by other (no
62b0: 6e 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78  n Mac OS X) Unix
62c0: 65 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62  es. Locks are ob
62d0: 74 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20  tained and .    
62e0: 20 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73       released us
62f0: 69 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20  ing the fcntl() 
6300: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
6310: 20 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69    <li> AFP locki
6320: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
6330: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
6340: 75 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b  used for network
6350: 20 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20   file .         
6360: 73 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65  systems that use
6370: 20 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20   the AFP (Apple 
6380: 46 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29  Filing Protocol)
6390: 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73   protocol. Locks
63a0: 0a 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62  .         are ob
63b0: 74 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e  tained by callin
63c0: 67 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75  g the library fu
63d0: 6e 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74  nction _AFPFSSet
63e0: 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69  Lock()...    <li
63f0: 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20  > Flock locking 
6400: 73 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75  style. This is u
6410: 73 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73  sed for file-sys
6420: 74 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  tems that do not
6430: 0a 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72  .         suppor
6440: 74 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20  t POSIX locking 
6450: 73 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65  style. Locks are
6460: 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65   obtained and re
6470: 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20  leased using.   
6480: 20 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28        the flock(
6490: 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a  ) system call...
64a0: 20 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c      <li> Dot-fil
64b0: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  e locking style.
64c0: 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74   This locking st
64d0: 79 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e  yle is used when
64e0: 20 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20   neither.       
64f0: 20 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49    flock nor POSI
6500: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73  X locking styles
6510: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62   are supported b
6520: 79 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65  y the file syste
6530: 6d 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61  m..         Data
6540: 62 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f  base locks are o
6550: 62 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74  btained by creat
6560: 69 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e  ing and entry in
6570: 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d   the file-system
6580: 0a 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77  .         at a w
6590: 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69  ell-known locati
65a0: 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74  on relative to t
65b0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
65c0: 20 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a   (a "dot-file").
65d0: 20 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c           and rel
65e0: 69 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c  inquished by del
65f0: 65 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66  eting the same f
6600: 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e  ile...    <li> N
6610: 6f 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  o locking style.
6620: 20 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20   If none of the 
6630: 61 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70  above can be sup
6640: 70 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20  ported, this .  
6650: 20 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73         locking s
6660: 74 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f  tyle is used. No
6670: 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e   database lockin
6680: 67 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75  g mechanism is u
6690: 73 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20  sed. When.      
66a0: 20 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69     this system i
66b0: 73 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74  s used it is not
66c0: 20 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67   safe for a sing
66d0: 6c 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62  le database to b
66e0: 65 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73  e.         acces
66f0: 73 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20  sed by multiple 
6700: 63 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e  clients..  </ul>
6710: 0a 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79  ..  Additionally
6720: 2c 20 66 69 76 65 20 65 78 74 72 61 20 5b 56 46  , five extra [VF
6730: 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  S] implementatio
6740: 6e 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  ns are provided 
6750: 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20  as well as the. 
6760: 20 64 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65   default. By spe
6770: 63 69 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74  cifying one of t
6780: 68 65 20 65 78 74 72 61 20 56 46 53 20 69 6d 70  he extra VFS imp
6790: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20  lementations .  
67a0: 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71  when calling [sq
67b0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
67c0: 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
67d0: 20 6d 61 79 20 62 79 70 61 73 73 20 74 68 65 20   may bypass the 
67e0: 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65  file-system.  de
67f0: 74 65 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e  tection logic an
6800: 64 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c  d explicitly sel
6810: 65 63 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61  ect one of the a
6820: 62 6f 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79  bove locking sty
6830: 6c 65 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20  les. The.  five 
6840: 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c  extra [VFS] impl
6850: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20  ementations are 
6860: 63 61 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73  called "unix-pos
6870: 69 78 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c  ix", "unix-afp",
6880: 0a 20 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c  .  "unix-flock",
6890: 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20   "unix-dotfile" 
68a0: 61 6e 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e  and "unix-none".
68b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
68c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
68d0: 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d  E_MEMORY_MANAGEM
68e0: 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ENT} {.  This op
68f0: 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20  tion adds extra 
6900: 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20  logic to SQLite 
6910: 74 68 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74  that allows it t
6920: 6f 20 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64  o release unused
6930: 0a 20 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72  .  memory upon r
6940: 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70  equest.  This op
6950: 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61  tion must be ena
6960: 62 6c 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f  bled in order fo
6970: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
6980: 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
6990: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  )] interface to 
69a0: 77 6f 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63  work.  If this c
69b0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70  ompile-time.  op
69c0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
69d0: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72  , the [sqlite3_r
69e0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
69f0: 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 61 20   interface is a 
6a00: 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d  .  no-op..}..COM
6a10: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6a20: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
6a30: 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  S3} {.  This opt
6a40: 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64  ion includes cod
6a50: 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74  e in SQLite that
6a60: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61   implements an a
6a70: 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d  lternative.  mem
6a80: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
6a90: 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65  This alternative
6aa0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
6ab0: 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65  r is only engage
6ac0: 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51  d.  when the [SQ
6ad0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
6ae0: 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  ] option to [sql
6af0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
6b00: 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70  s used to.  supp
6b10: 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b  ly a large chunk
6b20: 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20   of memory from 
6b30: 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79  which all memory
6b40: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
6b50: 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20  .  taken..  The 
6b60: 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61  MEMSYS3 memory a
6b70: 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20  llocator uses a 
6b80: 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f  hybrid allocatio
6b90: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70  n algorithm .  p
6ba0: 61 74 74 65 72 6e 65 64 20 61 66 74 65 72 20 64  atterned after d
6bb0: 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c  lmalloc().   Onl
6bc0: 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f  y one of SQLITE_
6bd0: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61  ENABLE_MEMSYS3 a
6be0: 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  nd .  SQLITE_ENA
6bf0: 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20  BLE_MEMSYS5 may 
6c00: 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e  be enabled at on
6c10: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
6c20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
6c30: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a  ABLE_MEMSYS5} {.
6c40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e    This option in
6c50: 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53  cludes code in S
6c60: 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65  QLite that imple
6c70: 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  ments an alterna
6c80: 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c  tive.  memory al
6c90: 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61  locator.  This a
6ca0: 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
6cb0: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f  y allocator is o
6cc0: 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68  nly engaged.  wh
6cd0: 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  en the [SQLITE_C
6ce0: 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69  ONFIG_HEAP] opti
6cf0: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
6d00: 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64  onfig()] is used
6d10: 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c   to.  supply a l
6d20: 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65  arge chunk of me
6d30: 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20  mory from which 
6d40: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
6d50: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b  ations are.  tak
6d60: 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53  en..  The MEMSYS
6d70: 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20  5 module rounds 
6d80: 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  all allocations 
6d90: 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70  up to the next p
6da0: 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e  ower.  of two an
6db0: 64 20 75 73 65 73 20 61 20 66 69 72 73 74 2d 66  d uses a first-f
6dc0: 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61  it, buddy-alloca
6dd0: 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20  tor algorithm.  
6de0: 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 73 74  that provides st
6df0: 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20  rong guarantees 
6e00: 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74  against fragment
6e10: 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64  ation and breakd
6e20: 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f  own.  subject to
6e30: 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69   certain operati
6e40: 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  ng constraints..
6e50: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6e60: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6e70: 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73  _RTREE} {.  This
6e80: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
6e90: 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65  QLite to include
6ea0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
6eb0: 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72  .  [rtree | R*Tr
6ec0: 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69  ee index extensi
6ed0: 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on]..}..COMPILE_
6ee0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
6ef0: 4e 41 42 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53  NABLE_STMT_SCANS
6f00: 54 41 54 55 53 7d 20 7b 0a 20 20 54 68 69 73 20  TATUS} {.  This 
6f10: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
6f20: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74  he [sqlite3_stmt
6f30: 5f 73 63 61 6e 73 74 61 74 75 73 28 29 5d 20 69  _scanstatus()] i
6f40: 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65 0a 20  nterface.  The. 
6f50: 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73   [sqlite3_stmt_s
6f60: 63 61 6e 73 74 61 74 75 73 28 29 5d 20 69 6e 74  canstatus()] int
6f70: 65 72 66 61 63 65 20 69 73 20 6e 6f 72 6d 61 6c  erface is normal
6f80: 6c 79 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  ly omitted from 
6f90: 74 68 65 20 62 75 69 6c 64 0a 20 20 62 65 63 61  the build.  beca
6fa0: 75 73 65 20 69 74 20 69 6d 70 6f 73 65 73 20 61  use it imposes a
6fb0: 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e   small performan
6fc0: 63 65 20 70 65 6e 61 6c 74 79 2c 20 65 76 65 6e  ce penalty, even
6fd0: 20 6f 6e 20 73 74 61 74 65 6d 65 6e 74 73 20 74   on statements t
6fe0: 68 61 74 0a 20 20 64 6f 20 6e 6f 74 20 75 73 65  hat.  do not use
6ff0: 20 74 68 65 20 66 65 61 74 75 72 65 2e 0a 7d 0a   the feature..}.
7000: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7010: 7b 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e  {SQLITE_RTREE_IN
7020: 54 5f 4f 4e 4c 59 7d 20 7b 0a 20 20 49 66 20 74  T_ONLY} {.  If t
7030: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
7040: 65 64 20 74 6f 67 65 74 68 65 72 20 77 69 74 68  ed together with
7050: 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
7060: 52 54 52 45 45 5d 20 74 68 65 6e 20 74 68 65 0a  RTREE] then the.
7070: 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65    [rtree | R*Tre
7080: 65 20 65 78 74 65 6e 73 69 6f 6e 5d 20 77 69 6c  e extension] wil
7090: 6c 20 6f 6e 6c 79 20 73 74 6f 72 65 20 33 32 2d  l only store 32-
70a0: 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67  bit signed integ
70b0: 65 72 0a 20 20 63 6f 6f 72 64 69 6e 61 74 65 73  er.  coordinates
70c0: 20 61 6e 64 20 61 6c 6c 20 69 6e 74 65 72 6e 61   and all interna
70d0: 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 77  l computations w
70e0: 69 6c 6c 20 62 65 20 64 6f 6e 65 20 75 73 69 6e  ill be done usin
70f0: 67 20 69 6e 74 65 67 65 72 73 0a 20 20 69 6e 73  g integers.  ins
7100: 74 65 61 64 20 6f 66 20 66 6c 6f 61 74 69 6e 67  tead of floating
7110: 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2e 0a   point numbers..
7120: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7130: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
7140: 5f 53 51 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69  _SQLLOG} {.  Thi
7150: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
7160: 20 65 78 74 72 61 20 63 6f 64 65 20 28 65 73 70   extra code (esp
7170: 65 63 69 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c  ecially the [SQL
7180: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f  ITE_CONFIG_SQLLO
7190: 47 5d 0a 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b  G].  option to [
71a0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
71b0: 5d 29 20 74 68 61 74 20 63 61 6e 20 62 65 20 75  ]) that can be u
71c0: 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 6c 6f  sed to create lo
71d0: 67 73 20 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69  gs of all.  SQLi
71e0: 74 65 20 70 72 6f 63 65 73 73 69 6e 67 20 70 65  te processing pe
71f0: 72 66 6f 72 6d 65 64 20 62 79 20 61 6e 20 61 70  rformed by an ap
7200: 70 6c 69 63 61 74 69 6f 6e 2e 20 20 54 68 65 73  plication.  Thes
7210: 65 20 6c 6f 67 73 20 63 61 6e 20 62 65 20 75 73  e logs can be us
7220: 65 66 75 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20  eful.  in doing 
7230: 6f 66 66 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69  off-line analysi
7240: 73 20 6f 66 20 74 68 65 20 62 65 68 61 76 69 6f  s of the behavio
7250: 72 20 6f 66 20 61 6e 20 61 70 70 6c 69 63 61 74  r of an applicat
7260: 69 6f 6e 2c 20 61 6e 64 20 65 73 70 65 63 69 61  ion, and especia
7270: 6c 6c 79 0a 20 20 66 6f 72 20 70 65 72 66 6f 72  lly.  for perfor
7280: 6d 61 6e 63 65 20 61 6e 61 6c 79 73 69 73 2e 20  mance analysis. 
7290: 20 49 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68   In order for th
72a0: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
72b0: 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f  SQLLOG option to
72c0: 20 0a 20 20 62 65 20 75 73 65 66 75 6c 2c 20 73   .  be useful, s
72d0: 6f 6d 65 20 65 78 74 72 61 20 63 6f 64 65 20 69  ome extra code i
72e0: 73 20 72 65 71 75 69 72 65 64 2e 20 20 54 68 65  s required.  The
72f0: 20 0a 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74   .  <a href="htt
7300: 70 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f  p://www.sqlite.o
7310: 72 67 2f 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b  rg/src/doc/trunk
7320: 2f 73 72 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67  /src/test_sqllog
7330: 2e 63 22 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67  .c">"test_sqllog
7340: 2e 63 22 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65  .c"</a>.  source
7350: 20 63 6f 64 65 0a 20 20 66 69 6c 65 20 69 6e 20   code.  file in 
7360: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
7370: 65 20 74 72 65 65 20 69 73 20 61 20 77 6f 72 6b  e tree is a work
7380: 69 6e 67 20 65 78 61 6d 70 6c 65 20 6f 66 20 74  ing example of t
7390: 68 65 20 72 65 71 75 69 72 65 64 20 65 78 74 72  he required extr
73a0: 61 0a 20 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e  a.  code.  On un
73b0: 69 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20 73  ix and windows s
73c0: 79 73 74 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f  ystems, a develo
73d0: 70 65 72 20 63 61 6e 20 61 70 70 65 6e 64 20 74  per can append t
73e0: 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 0a 20  he text of the. 
73f0: 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22   "test_sqllog.c"
7400: 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 69 6c   source code fil
7410: 65 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20  e to the end of 
7420: 61 6e 20 22 73 71 6c 69 74 65 33 2e 63 22 20 61  an "sqlite3.c" a
7430: 6d 61 6c 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72  malgamation,.  r
7440: 65 63 6f 6d 70 69 6c 65 20 74 68 65 20 61 70 70  ecompile the app
7450: 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 74  lication using t
7460: 68 65 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42  he -DSQLITE_ENAB
7470: 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e  LE_SQLLOG option
7480: 2c 20 74 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f  , then .  contro
7490: 6c 20 6c 6f 67 67 69 6e 67 20 75 73 69 6e 67 20  l logging using 
74a0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
74b0: 61 62 6c 65 73 2e 20 20 53 65 65 20 74 68 65 20  ables.  See the 
74c0: 68 65 61 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f  header comment o
74d0: 6e 20 0a 20 20 74 68 65 20 22 74 65 73 74 5f 73  n .  the "test_s
74e0: 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65 20  qllog.c" source 
74f0: 66 69 6c 65 20 66 6f 72 20 61 64 64 69 74 69 6f  file for additio
7500: 6e 61 6c 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a  nal detail.  .}.
7510: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7520: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  {SQLITE_ENABLE_S
7530: 54 41 54 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TAT2} {.  This o
7540: 70 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 63 61  ption used to ca
7550: 75 73 65 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45  use the [ANALYZE
7560: 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c  ] command to col
7570: 6c 65 63 74 0a 20 20 69 6e 64 65 78 20 68 69 73  lect.  index his
7580: 74 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20 74  togram data in t
7590: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61  he <b>sqlite_sta
75a0: 74 32 3c 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42  t2</b> table.  B
75b0: 75 74 20 74 68 61 74 0a 20 20 66 75 6e 63 74 69  ut that.  functi
75c0: 6f 6e 61 6c 69 74 79 20 77 61 73 20 73 75 70 65  onality was supe
75d0: 72 63 65 64 65 64 20 62 79 20 5b 53 51 4c 49 54  rceded by [SQLIT
75e0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20  E_ENABLE_STAT3] 
75f0: 61 73 20 6f 66 0a 20 20 53 51 4c 69 74 65 20 76  as of.  SQLite v
7600: 65 72 73 69 6f 6e 20 33 2e 37 2e 39 2e 20 20 54  ersion 3.7.9.  T
7610: 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
7620: 5f 53 54 41 54 32 20 63 6f 6d 70 69 6c 65 2d 74  _STAT2 compile-t
7630: 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20  ime option.  is 
7640: 6e 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a  now a no-op..}..
7650: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7660: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
7670: 41 54 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  AT3} {.  This op
7680: 74 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74 69  tion adds additi
7690: 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68  onal logic to th
76a0: 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d  e [ANALYZE] comm
76b0: 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68 65  and and to.  the
76c0: 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d   [query planner]
76d0: 20 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20 53   that can help S
76e0: 51 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20 61  QLite to chose a
76f0: 20 62 65 74 74 65 72 20 71 75 65 72 79 20 70 6c   better query pl
7700: 61 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74 61  an.  under certa
7710: 69 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20 20  in situations.  
7720: 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f  The [ANALYZE] co
7730: 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63 65  mmand is enhance
7740: 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68  d to collect.  h
7750: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72  istogram data fr
7760: 6f 6d 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74  om the left-most
7770: 20 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20   column of each 
7780: 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65 20  index and store 
7790: 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20 74  that data.  in t
77a0: 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74 33  he [sqlite_stat3
77b0: 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71 75  ] table.  The qu
77c0: 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c  ery planner will
77d0: 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20 20   then use the.  
77e0: 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 74  histogram data t
77f0: 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20 62  o help it make b
7800: 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69  etter index choi
7810: 63 65 73 2e 20 20 4e 6f 74 65 2c 20 68 6f 77 65  ces.  Note, howe
7820: 76 65 72 2c 0a 20 20 74 68 61 74 20 74 68 65 20  ver,.  that the 
7830: 75 73 65 20 6f 66 20 68 69 73 74 6f 67 72 61 6d  use of histogram
7840: 20 64 61 74 61 20 69 6e 20 71 75 65 72 79 20 70   data in query p
7850: 6c 61 6e 6e 65 72 20 76 69 6f 6c 61 74 65 73 20  lanner violates 
7860: 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61  the.  [query pla
7870: 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67  nner stability g
7880: 75 61 72 61 6e 74 65 65 5d 20 77 68 69 63 68 20  uarantee] which 
7890: 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 6f 20  is important to 
78a0: 73 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  some application
78b0: 73 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50  s..  <p>.}..COMP
78c0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
78d0: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 7d  TE_ENABLE_STAT4}
78e0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
78f0: 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c   adds additional
7900: 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41   logic to the [A
7910: 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20  NALYZE] command 
7920: 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75  and to.  the [qu
7930: 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61  ery planner] tha
7940: 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74  t can help SQLit
7950: 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74  e to chose a bet
7960: 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20  ter query plan. 
7970: 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73   under certain s
7980: 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20  ituations.  The 
7990: 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e  [ANALYZE] comman
79a0: 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f  d is enhanced to
79b0: 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f   collect.  histo
79c0: 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 61  gram data from a
79d0: 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 65 76  ll columns of ev
79e0: 65 72 79 20 69 6e 64 65 78 20 61 6e 64 20 73 74  ery index and st
79f0: 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20  ore that data.  
7a00: 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 73  in the [sqlite_s
7a10: 74 61 74 34 5d 20 74 61 62 6c 65 2e 20 20 54 68  tat4] table.  Th
7a20: 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  e query planner 
7a30: 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68  will then use th
7a40: 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  e.  histogram da
7a50: 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61  ta to help it ma
7a60: 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20  ke better index 
7a70: 63 68 6f 69 63 65 73 2e 20 20 54 68 65 20 64 6f  choices.  The do
7a80: 77 6e 73 69 64 65 20 6f 66 0a 20 20 74 68 69 73  wnside of.  this
7a90: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
7aa0: 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20  tion is that it 
7ab0: 76 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20 5b  violates the.  [
7ac0: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 74  query planner st
7ad0: 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74 65  ability guarante
7ae0: 65 5d 20 6d 61 6b 69 6e 67 20 69 74 20 6d 6f 72  e] making it mor
7af0: 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 65  e difficult to e
7b00: 6e 73 75 72 65 0a 20 20 63 6f 6e 73 69 73 74 65  nsure.  consiste
7b10: 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69  nt performance i
7b20: 6e 20 6d 61 73 73 2d 70 72 6f 64 75 63 65 64 20  n mass-produced 
7b30: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20  applications..  
7b40: 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  <p>.  SQLITE_ENA
7b50: 42 4c 45 5f 53 54 41 54 34 20 69 73 20 61 6e 20  BLE_STAT4 is an 
7b60: 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f 66 20 5b  enhancement of [
7b70: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
7b80: 41 54 33 5d 2e 20 20 53 54 41 54 33 0a 20 20 6f  AT3].  STAT3.  o
7b90: 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 68 69 73  nly recorded his
7ba0: 74 6f 67 72 61 6d 20 64 61 74 61 20 66 6f 72 20  togram data for 
7bb0: 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f  the left-most co
7bc0: 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64  lumn of each ind
7bd0: 65 78 0a 20 20 77 68 65 72 65 61 73 20 74 68 65  ex.  whereas the
7be0: 20 53 54 41 54 34 20 65 6e 68 61 6e 63 65 6d 65   STAT4 enhanceme
7bf0: 6e 74 20 72 65 63 6f 72 64 73 20 68 69 73 74 6f  nt records histo
7c00: 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 61  gram data from a
7c10: 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66 20  ll columns.  of 
7c20: 65 61 63 68 20 69 6e 64 65 78 2e 0a 20 20 54 68  each index..  Th
7c30: 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  e [SQLITE_ENABLE
7c40: 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d  _STAT3] compile-
7c50: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61  time option is a
7c60: 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73 20 69 67   no-op and is ig
7c70: 6e 6f 72 65 64 0a 20 20 69 66 20 74 68 65 20 53  nored.  if the S
7c80: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
7c90: 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T4 compile-time 
7ca0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
7cb0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
7cc0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
7cd0: 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e 7d 20 7b  _TREE_EXPLAIN} {
7ce0: 0a 20 20 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  This compile-
7cf0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6e  time option is n
7d00: 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d  o longer used..}
7d10: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7d20: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
7d30: 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49  UPDATE_DELETE_LI
7d40: 4d 49 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  MIT} {.  This op
7d50: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20  tion enables an 
7d60: 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42  optional ORDER B
7d70: 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75  Y and LIMIT clau
7d80: 73 65 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45  se on .  [UPDATE
7d90: 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73  ] and [DELETE] s
7da0: 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70  tatements...  <p
7db0: 3e 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  >If this option 
7dc0: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
7dd0: 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 62 65   it must also be
7de0: 20 0a 20 20 64 65 66 69 6e 65 64 20 77 68 65 6e   .  defined when
7df0: 20 75 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f   using the 'lemo
7e00: 6e 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72  n' tool to gener
7e10: 61 74 65 20 61 20 70 61 72 73 65 2e 63 0a 20 20  ate a parse.c.  
7e20: 66 69 6c 65 2e 20 42 65 63 61 75 73 65 20 6f 66  file. Because of
7e30: 20 74 68 69 73 2c 20 74 68 69 73 20 6f 70 74 69   this, this opti
7e40: 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  on may only be u
7e50: 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62  sed when the lib
7e60: 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 20 20  rary is built.  
7e70: 66 72 6f 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74  from source, not
7e80: 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67   from the [amalg
7e90: 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d  amation] or from
7ea0: 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20   the collection 
7eb0: 6f 66 0a 20 20 70 72 65 2d 70 61 63 6b 61 67 65  of.  pre-package
7ec0: 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64  d C files provid
7ed0: 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20  ed for non-Unix 
7ee0: 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f  like platforms o
7ef0: 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 20  n the website.. 
7f00: 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   </p>.}..COMPILE
7f10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7f20: 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f  ENABLE_UNLOCK_NO
7f30: 54 49 46 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TIFY} {.  This o
7f40: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68  ption enables th
7f50: 65 20 5b 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63  e [sqlite3_unloc
7f60: 6b 5f 6e 6f 74 69 66 79 28 29 5d 20 69 6e 74 65  k_notify()] inte
7f70: 72 66 61 63 65 20 61 6e 64 0a 20 20 69 74 73 20  rface and.  its 
7f80: 61 73 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74  associated funct
7f90: 69 6f 6e 61 6c 69 74 79 2e 20 20 53 65 65 20 74  ionality.  See t
7fa0: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
7fb0: 20 74 69 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67   titled.  [Using
7fc0: 20 74 68 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f   the SQLite Unlo
7fd0: 63 6b 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20  ck Notification 
7fe0: 46 65 61 74 75 72 65 5d 20 66 6f 72 20 61 64 64  Feature] for add
7ff0: 69 74 69 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d  itional.  inform
8000: 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ation..}..COMPIL
8010: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8020: 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68  _SOUNDEX} {.  Th
8030: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
8040: 73 20 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29  s the [soundex()
8050: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a   SQL function]..
8060: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8070: 4e 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46 43  N {SQLITE_USE_FC
8080: 4e 54 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54  NTL_TRACE} {.  T
8090: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
80a0: 73 20 53 51 4c 69 74 65 20 74 6f 20 69 73 73 75  s SQLite to issu
80b0: 65 20 65 78 74 72 61 20 5b 53 51 4c 49 54 45 5f  e extra [SQLITE_
80c0: 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c  FCNTL_TRACE] fil
80d0: 65 20 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20  e controls.  to 
80e0: 70 72 6f 76 69 64 65 20 73 75 70 70 6c 65 6d 65  provide suppleme
80f0: 6e 74 61 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f  ntary informatio
8100: 6e 20 74 6f 20 74 68 65 20 56 46 53 2e 20 20 54  n to the VFS.  T
8110: 68 65 20 22 76 66 73 6c 6f 67 2e 63 22 20 65 78  he "vfslog.c" ex
8120: 74 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20  tension.  makes 
8130: 75 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20 70  use of this to p
8140: 72 6f 76 69 64 65 20 65 6e 68 61 6e 63 65 64 20  rovide enhanced 
8150: 6c 6f 67 73 20 6f 66 20 56 46 53 20 61 63 74 69  logs of VFS acti
8160: 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  vity..}..COMPILE
8170: 5f 4f 50 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b  _OPTION {YYTRACK
8180: 4d 41 58 53 54 41 43 4b 44 45 50 54 48 7d 20 7b  MAXSTACKDEPTH} {
8190: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
81a0: 61 75 73 65 73 20 74 68 65 20 4c 41 4c 52 28 31  auses the LALR(1
81b0: 29 20 70 61 72 73 65 72 20 73 74 61 63 6b 20 64  ) parser stack d
81c0: 65 70 74 68 20 74 6f 20 62 65 20 74 72 61 63 6b  epth to be track
81d0: 65 64 0a 20 20 61 6e 64 20 72 65 70 6f 72 74 65  ed.  and reporte
81e0: 64 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c  d using the [sql
81f0: 69 74 65 33 5f 73 74 61 74 75 73 5d 28 5b 53 51  ite3_status]([SQ
8200: 4c 49 54 45 5f 53 54 41 54 55 53 5f 50 41 52 53  LITE_STATUS_PARS
8210: 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20  ER_STACK],...). 
8220: 20 69 6e 74 65 72 66 61 63 65 2e 20 20 53 51 4c   interface.  SQL
8230: 69 74 65 27 73 20 4c 41 4c 52 28 31 29 20 70 61  ite's LALR(1) pa
8240: 72 73 65 72 20 68 61 73 20 61 20 66 69 78 65 64  rser has a fixed
8250: 20 73 74 61 63 6b 20 64 65 70 74 68 0a 20 20 28   stack depth.  (
8260: 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20 63 6f  determined at co
8270: 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67  mpile-time using
8280: 20 74 68 65 20 5b 59 59 53 54 41 43 4b 44 45 50   the [YYSTACKDEP
8290: 54 48 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20  TH] options)..  
82a0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20  This option can 
82b0: 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  be used to help 
82c0: 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20  determine if an 
82d0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20  application is. 
82e0: 20 67 65 74 74 69 6e 67 20 63 6c 6f 73 65 20 74   getting close t
82f0: 6f 20 65 78 63 65 65 64 69 6e 67 20 74 68 65 20  o exceeding the 
8300: 6d 61 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20  maximum LALR(1) 
8310: 73 74 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c  stack depth..}.<
8320: 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  /tcl>..<a name="
8330: 64 69 73 61 62 6c 65 66 65 61 74 75 72 65 73 22  disablefeatures"
8340: 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70  ></a>.<h2>1.5 Op
8350: 74 69 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c 65  tions To Disable
8360: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
8370: 6c 79 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32  ly Turned On</h2
8380: 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45  >..<tcl>.COMPILE
8390: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
83a0: 44 49 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20  DISABLE_LFS} {. 
83b0: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
83c0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
83d0: 20 64 65 66 69 6e 65 64 2c 20 6c 61 72 67 65 20   defined, large 
83e0: 66 69 6c 65 20 73 75 70 70 6f 72 74 0a 20 20 69  file support.  i
83f0: 73 20 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43  s disabled..}..C
8400: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
8410: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49  QLITE_DISABLE_DI
8420: 52 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68  RSYNC} {.  If th
8430: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
8440: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
8450: 65 64 2c 20 64 69 72 65 63 74 6f 72 79 20 73 79  ed, directory sy
8460: 6e 63 73 0a 20 20 61 72 65 20 64 69 73 61 62 6c  ncs.  are disabl
8470: 65 64 2e 20 20 53 51 4c 69 74 65 20 74 79 70 69  ed.  SQLite typi
8480: 63 61 6c 6c 79 20 61 74 74 65 6d 70 74 73 20 74  cally attempts t
8490: 6f 20 73 79 6e 63 20 74 68 65 20 70 61 72 65 6e  o sync the paren
84a0: 74 0a 20 20 64 69 72 65 63 74 6f 72 79 20 77 68  t.  directory wh
84b0: 65 6e 20 61 20 66 69 6c 65 20 69 73 20 64 65 6c  en a file is del
84c0: 65 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74  eted to ensure t
84d0: 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20 65  he directory.  e
84e0: 6e 74 72 69 65 73 20 61 72 65 20 75 70 64 61 74  ntries are updat
84f0: 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f  ed immediately o
8500: 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49  n disk..}..COMPI
8510: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8520: 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55  E_DISABLE_FTS3_U
8530: 4e 49 43 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74  NICODE} {.  If t
8540: 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73  his C-preprocess
8550: 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  or macro is defi
8560: 6e 65 64 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64  ned, the [unicod
8570: 65 36 31 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20  e61] tokenizer. 
8580: 20 69 6e 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d   in [FTS3] is om
8590: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
85a0: 75 69 6c 64 20 61 6e 64 20 69 73 20 75 6e 61 76  uild and is unav
85b0: 61 69 6c 61 62 6c 65 20 74 6f 20 0a 20 20 61 70  ailable to .  ap
85c0: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
85d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
85e0: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54  QLITE_DISABLE_FT
85f0: 53 34 5f 44 45 46 45 52 52 45 44 7d 20 7b 0a 20  S4_DEFERRED} {. 
8600: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
8610: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 69  ocessor macro di
8620: 73 61 62 6c 65 73 20 74 68 65 20 22 64 65 66 65  sables the "defe
8630: 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69  rred token" opti
8640: 6d 69 7a 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46  mization.  in [F
8650: 54 53 34 5d 2e 20 20 54 68 65 20 22 64 65 66 65  TS4].  The "defe
8660: 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69  rred token" opti
8670: 6d 69 7a 61 74 69 6f 6e 20 61 76 6f 69 64 73 20  mization avoids 
8680: 6c 6f 61 64 69 6e 67 20 6d 61 73 73 69 76 65 0a  loading massive.
8690: 20 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73 20    posting lists 
86a0: 66 6f 72 20 74 65 72 6d 73 20 74 68 61 74 20 61  for terms that a
86b0: 72 65 20 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d  re in most docum
86c0: 65 6e 74 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c  ents of the coll
86d0: 65 63 74 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73  ection.  and ins
86e0: 74 65 61 64 20 73 69 6d 70 6c 79 20 73 63 61 6e  tead simply scan
86f0: 73 20 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65  s for those toke
8700: 6e 73 20 69 6e 20 74 68 65 20 64 6f 63 75 6d 65  ns in the docume
8710: 6e 74 20 73 6f 75 72 63 65 2e 20 20 5b 46 54 53  nt source.  [FTS
8720: 34 5d 0a 20 20 73 68 6f 75 6c 64 20 67 65 74 20  4].  should get 
8730: 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
8740: 20 61 6e 73 77 65 72 20 62 6f 74 68 20 77 69 74   answer both wit
8750: 68 20 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68  h and without th
8760: 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e  is optimization.
8770: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e  .}.</tcl>..<tcl>
8780: 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22  .  hd_fragment "
8790: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20 20  omitfeatures".  
87a0: 68 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69  hd_keywords "omi
87b0: 74 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c  tfeatures".</tcl
87c0: 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e  >.<h2>1.6 Option
87d0: 73 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72  s To Omit Featur
87e0: 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20  es</h2>..<p>The 
87f0: 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e  following option
8800: 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  s can be used to
8810: 20 0a 5b 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20   .[relfootprint 
8820: 7c 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a  | reduce the siz
8830: 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65  e of the compile
8840: 64 20 6c 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d  d library].by om
8850: 69 74 74 69 6e 67 20 75 6e 75 73 65 64 20 66 65  itting unused fe
8860: 61 74 75 72 65 73 2e 20 54 68 69 73 20 69 73 20  atures. This is 
8870: 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73  probably only us
8880: 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64  eful.in embedded
8890: 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20 73   systems where s
88a0: 70 61 63 65 20 69 73 20 65 73 70 65 63 69 61 6c  pace is especial
88b0: 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65 76 65  ly tight, as eve
88c0: 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74 75  n with all.featu
88d0: 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68 65  res included the
88e0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
88f0: 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6d  is relatively sm
8900: 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65  all. Don't forge
8910: 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63  t.to tell your c
8920: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
8930: 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20 73  ize for binary s
8940: 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f 70  ize! (the -Os op
8950: 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47 43  tion if.using GC
8960: 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75  C).  Telling you
8970: 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70  r compiler to op
8980: 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65 20  timize for size 
8990: 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75  usually has.a mu
89a0: 63 68 20 6c 61 72 67 65 72 20 69 6d 70 61 63 74  ch larger impact
89b0: 20 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f 74   on library foot
89c0: 70 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f  print than emplo
89d0: 79 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65 73  ying any of thes
89e0: 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e.compile-time o
89f0: 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f  ptions.  You sho
8a00: 75 6c 64 20 61 6c 73 6f 20 76 65 72 69 66 79 20  uld also verify 
8a10: 74 68 61 74 20 0a 3c 61 20 68 72 65 66 3d 22 23  that .<a href="#
8a20: 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65  debugoptions">de
8a30: 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c  bugging options<
8a40: 2f 61 3e 20 61 72 65 20 64 69 73 61 62 6c 65 64  /a> are disabled
8a50: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61  .</p>..<p>The ma
8a60: 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65 63  cros in this sec
8a70: 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75  tion do not requ
8a80: 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65 20  ire values. The 
8a90: 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69  following .compi
8aa0: 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73 20  lation switches 
8ab0: 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61 6d  all have the sam
8ac0: 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44  e effect:<br>.-D
8ad0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
8ae0: 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c  RTABLE<br>.-DSQL
8af0: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
8b00: 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49  BLE=1<br>.-DSQLI
8b10: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
8b20: 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  LE=0.</p>..<p>If
8b30: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f 70   any of these op
8b40: 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e 65  tions are define
8b50: 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d 65  d, then the same
8b60: 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f   set of SQLITE_O
8b70: 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75  MIT_*.options mu
8b80: 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66 69 6e  st also be defin
8b90: 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68  ed when using th
8ba0: 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74  e 'lemon' tool t
8bb0: 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a 70  o generate the.p
8bc0: 61 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64 20  arse.c file and 
8bd0: 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74  when compiling t
8be0: 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73  he 'mkkeywordhas
8bf0: 68 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67 65  h' tool which ge
8c00: 6e 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65 79  nerates .the key
8c10: 77 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65 2e  wordhash.h file.
8c20: 0a 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73  .Because of this
8c30: 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20  , these options 
8c40: 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  may only be used
8c50: 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72   when the librar
8c60: 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20  y is built.from 
8c70: 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65  canonical source
8c80: 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b  , not from the [
8c90: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72  amalgamation] or
8ca0: 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63   from the collec
8cb0: 74 69 6f 6e 20 6f 66 0a 70 72 65 2d 70 61 63 6b  tion of.pre-pack
8cc0: 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f  aged C files pro
8cd0: 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e  vided for non-Un
8ce0: 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d  ix like platform
8cf0: 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65  s on the website
8d00: 2e 0a 41 6e 79 20 53 51 4c 49 54 45 5f 4f 4d 49  ..Any SQLITE_OMI
8d10: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 77 68 69 63  T_* options whic
8d20: 68 20 63 61 6e 20 62 65 20 75 73 65 64 20 64 69  h can be used di
8d30: 72 65 63 74 6c 79 20 77 69 74 68 20 74 68 65 20  rectly with the 
8d40: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a  [amalgamation] .
8d50: 61 72 65 20 6c 69 73 74 65 64 20 62 65 6c 6f 77  are listed below
8d60: 2c 20 68 6f 77 65 76 65 72 2c 20 74 68 65 20 77  , however, the w
8d70: 61 72 6e 69 6e 67 73 20 69 6e 20 74 68 65 20 66  arnings in the f
8d80: 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 67 72 61  ollowing paragra
8d90: 70 68 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f 74  ph should be not
8da0: 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  ed..</p>..<block
8db0: 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70  quote>.<i><b>Imp
8dc0: 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e  ortant Note:</b>
8dd0: 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   The SQLITE_OMIT
8de0: 5f 2a 20 6f 70 74 69 6f 6e 73 20 64 6f 20 6e 6f  _* options do no
8df0: 74 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65 0a  t work with the.
8e00: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f  [amalgamation] o
8e10: 72 20 77 69 74 68 20 70 72 65 2d 70 61 63 6b 61  r with pre-packa
8e20: 67 65 64 20 43 20 63 6f 64 65 20 66 69 6c 65 73  ged C code files
8e30: 2e 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  .  SQLITE_OMIT_*
8e40: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70   compile-time.op
8e50: 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b 20  tions only work 
8e60: 63 6f 72 72 65 63 74 6c 79 20 77 68 65 6e 20 53  correctly when S
8e70: 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20 66  QLite is built f
8e80: 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f  rom canonical so
8e90: 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e  urce files..</i>
8ea0: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
8eb0: 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72 73  .<p>Special vers
8ec0: 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 69  ions of the SQLi
8ed0: 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  te amalgamation 
8ee0: 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69 74  that do work wit
8ef0: 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e 65  h a.predetermine
8f00: 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f  d set of SQLITE_
8f10: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63  OMIT_* options c
8f20: 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e  an be generated.
8f30: 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65    To do so,.make
8f40: 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 4d   a copy of the M
8f50: 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63  akefile.linux-gc
8f60: 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c  c makefile templ
8f70: 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e  ate in the canon
8f80: 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65  ical.source code
8f90: 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20 20   distribution.  
8fa0: 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20  Change the name 
8fb0: 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f 20  of your copy to 
8fc0: 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65  simply "Makefile
8fd0: 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d 61  "..Then edit "Ma
8fe0: 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20 75  kefile" to set u
8ff0: 70 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f  p appropriate co
9000: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
9010: 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a  ns.  Then.type:.
9020: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74 3e  <blockquote><tt>
9030: 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65  make clean; make
9040: 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e 3c   sqlite3.c</tt><
9050: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68 65  /blockquote>.The
9060: 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69   resulting "sqli
9070: 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74  te3.c" amalgamat
9080: 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61  ion code file (a
9090: 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61 74 65  nd its associate
90a0: 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22 73  d.header file "s
90b0: 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74  qlite3.h") can t
90c0: 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20  hen be moved to 
90d0: 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66  a non-unix platf
90e0: 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f  orm.for final co
90f0: 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20  mpilation using 
9100: 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65  a native compile
9110: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f  r.</p>..<p>All o
9120: 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  f the SQLITE_OMI
9130: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  T_* options are 
9140: 75 6e 73 75 70 70 6f 72 74 65 64 2e 3c 2f 70 3e  unsupported.</p>
9150: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
9160: 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e  i><b>Important N
9170: 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c  ote:</b>.The SQL
9180: 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69  ITE_OMIT_* compi
9190: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20  le-time options 
91a0: 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e  are unsupported.
91b0: 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  .</i></blockquot
91c0: 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53 51 4c 49  e>..<p>.The SQLI
91d0: 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c  TE_OMIT_* compil
91e0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61  e-time options a
91f0: 72 65 20 75 73 75 61 6c 6c 79 20 75 6e 74 65 73  re usually untes
9200: 74 65 64 20 61 6e 64 0a 61 72 65 20 61 6c 6d 6f  ted and.are almo
9210: 73 74 20 63 65 72 74 61 69 6e 6c 79 20 75 6e 74  st certainly unt
9220: 65 73 74 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61  ested in combina
9230: 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c  tion..Any or all
9240: 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e   of these option
9250: 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64  s may be removed
9260: 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 20 69   from the code i
9270: 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  n future release
9280: 73 0a 61 6e 64 20 77 69 74 68 6f 75 74 20 77 61  s.and without wa
9290: 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61 6e 79 20  rning.  For any 
92a0: 70 61 72 74 69 63 75 6c 61 72 20 72 65 6c 65 61  particular relea
92b0: 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74 68 65 73  se, some of thes
92c0: 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20 63 61  e.options may ca
92d0: 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  use compile-time
92e0: 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20 66 61 69   or run-time fai
92f0: 6c 75 72 65 73 2c 20 70 61 72 74 69 63 75 6c 61  lures, particula
9300: 72 6c 79 0a 77 68 65 6e 20 75 73 65 64 20 69 6e  rly.when used in
9310: 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74   combination wit
9320: 68 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e 73 2e  h other options.
9330: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50  </p>..<tcl>.COMP
9340: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9350: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
9360: 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  LE} {.  When thi
9370: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
9380: 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54  ned, the .  [ALT
9390: 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e  ER TABLE] comman
93a0: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
93b0: 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62 72  d in the .  libr
93c0: 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20 61  ary. Executing a
93d0: 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20  n [ALTER TABLE] 
93e0: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73  statement causes
93f0: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
9400: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9410: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
9420: 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e  NALYZE} {.  When
9430: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
9440: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e  defined, the [AN
9450: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
9460: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20  s omitted from. 
9470: 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43   the build..}..C
9480: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9490: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43  QLITE_OMIT_ATTAC
94a0: 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  H} {.  When this
94b0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
94c0: 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48 5d  ed, the [ATTACH]
94d0: 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63 6f   and [DETACH] co
94e0: 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69  mmands are.  omi
94f0: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
9500: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
9510: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
9520: 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f  MIT_AUTHORIZATIO
9530: 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  N} {.  Defining 
9540: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  this option omit
9550: 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74  s the authorizat
9560: 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65 61  ion callback fea
9570: 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20 20  ture from the.  
9580: 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73 71  library. The [sq
9590: 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
95a0: 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e 63  izer()] API func
95b0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73  tion is not pres
95c0: 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69 62  ent.  in the lib
95d0: 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rary..}..COMPILE
95e0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
95f0: 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45  OMIT_AUTOINCREME
9600: 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  NT} {.  This opt
9610: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
9620: 6d 69 74 20 74 68 65 20 0a 20 20 5b 41 55 54 4f  mit the .  [AUTO
9630: 49 4e 43 52 45 4d 45 4e 54 5d 20 66 75 6e 63 74  INCREMENT] funct
9640: 69 6f 6e 61 6c 69 74 79 2e 20 57 68 65 6e 20 74  ionality. When t
9650: 68 69 73 20 0a 20 20 69 73 20 6d 61 63 72 6f 20  his .  is macro 
9660: 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75  is defined, colu
9670: 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20  mns declared as 
9680: 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49  .  "[INTEGER PRI
9690: 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e  MARY KEY] AUTOIN
96a0: 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61 76  CREMENT".  behav
96b0: 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61  e in the same wa
96c0: 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63  y as columns dec
96d0: 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45 47  lared as "[INTEG
96e0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 22  ER PRIMARY KEY]"
96f0: 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20   when a .  NULL 
9700: 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68 65  is inserted. The
9710: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
9720: 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69 73   system table is
9730: 20 6e 65 69 74 68 65 72 20 63 72 65 61 74 65 64   neither created
9740: 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74 65  , nor.  respecte
9750: 64 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20  d if it already 
9760: 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  exists..}..COMPI
9770: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9780: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d  E_OMIT_AUTOINIT}
9790: 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72   {.  For backwar
97a0: 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ds compatibility
97b0: 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73   with older vers
97c0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74  ions of SQLite t
97d0: 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b  hat lack.  the [
97e0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
97f0: 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c  ze()] interface,
9800: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e   the [sqlite3_in
9810: 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65  itialize()] inte
9820: 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65  rface.  is calle
9830: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
9840: 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65  upon entry to ce
9850: 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66  rtain key interf
9860: 61 63 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b  aces such as.  [
9870: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c  sqlite3_open()],
9880: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65   [sqlite3_vfs_re
9890: 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b  gister()], and [
98a0: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
98b0: 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65  )]..  The overhe
98c0: 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b  ad of invoking [
98d0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
98e0: 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61  ze()] automatica
98f0: 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61  lly in this.  wa
9900: 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  y may be omitted
9910: 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c   by building SQL
9920: 69 74 65 20 77 69 74 68 20 74 68 65 20 53 51 4c  ite with the SQL
9930: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
9940: 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73  T.  C-preprocess
9950: 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20  or macro.  When 
9960: 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49  built using SQLI
9970: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
9980: 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20  , SQLite.  will 
9990: 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  not automaticall
99a0: 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73  y initialize its
99b0: 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c  elf and the appl
99c0: 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69  ication is requi
99d0: 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20  red.  to invoke 
99e0: 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
99f0: 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20  ize()] directly 
9a00: 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69  prior to beginni
9a10: 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20  ng use of the.  
9a20: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a  SQLite library..
9a30: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9a40: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
9a50: 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 7d 20  UTOMATIC_INDEX} 
9a60: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
9a70: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
9a80: 74 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61 74 69  the .  [automati
9a90: 63 20 69 6e 64 65 78 69 6e 67 5d 20 66 75 6e 63  c indexing] func
9aa0: 74 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53 65 65  tionality..  See
9ab0: 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 44   also: [SQLITE_D
9ac0: 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43  EFAULT_AUTOMATIC
9ad0: 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50  _INDEX]..}..COMP
9ae0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9af0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45  TE_OMIT_AUTORESE
9b00: 54 7d 20 7b 0a 20 20 42 79 20 64 65 66 61 75 6c  T} {.  By defaul
9b10: 74 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  t, the [sqlite3_
9b20: 73 74 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63  step()] interfac
9b30: 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  e will automatic
9b40: 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73  ally invoke.  [s
9b50: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20  qlite3_reset()] 
9b60: 74 6f 20 72 65 73 65 74 20 74 68 65 20 5b 70 72  to reset the [pr
9b70: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
9b80: 5d 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20  ] if necessary. 
9b90: 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d   This.  compile-
9ba0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e  time option chan
9bb0: 67 65 73 20 74 68 61 74 20 62 65 68 61 76 69 6f  ges that behavio
9bc0: 72 20 73 6f 20 74 68 61 74 20 5b 73 71 6c 69 74  r so that [sqlit
9bd0: 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a  e3_step()] will.
9be0: 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45    return [SQLITE
9bf0: 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20 63  _MISUSE] if it c
9c00: 61 6c 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65  alled again afte
9c10: 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74  r returning anyt
9c20: 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 74 68 61  hing other.  tha
9c30: 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20  n [SQLITE_ROW], 
9c40: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f  [SQLITE_BUSY], o
9c50: 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  r [SQLITE_LOCKED
9c60: 5d 20 75 6e 6c 65 73 73 20 74 68 65 72 65 20 77  ] unless there w
9c70: 61 73 20 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e  as an.  interven
9c80: 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c  ing call to [sql
9c90: 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a  ite3_reset()]...
9ca0: 20 20 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73    In SQLite vers
9cb0: 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 20 61 6e 64  ion 3.6.23.1 and
9cc0: 20 65 61 72 6c 69 65 72 2c 20 5b 73 71 6c 69 74   earlier, [sqlit
9cd0: 65 33 5f 73 74 65 70 28 29 5d 20 75 73 65 64 20  e3_step()] used 
9ce0: 74 6f 20 61 6c 77 61 79 73 0a 20 20 72 65 74 75  to always.  retu
9cf0: 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53  rn [SQLITE_MISUS
9d00: 45 5d 20 69 66 20 69 74 20 77 61 73 20 69 6e 76  E] if it was inv
9d10: 6f 6b 65 64 20 61 67 61 69 6e 20 61 66 74 65 72  oked again after
9d20: 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68   returning anyth
9d30: 69 6e 67 0a 20 20 6f 74 68 65 72 20 74 68 61 6e  ing.  other than
9d40: 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 20 77 69   [SQLITE_ROW] wi
9d50: 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72 76 65  thout an interve
9d60: 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71  ning call to [sq
9d70: 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a  lite3_reset()]..
9d80: 20 20 54 68 69 73 20 63 61 75 73 65 64 20 70 72    This caused pr
9d90: 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f 6d 65 20 70  oblems on some p
9da0: 6f 6f 72 6c 79 20 77 72 69 74 74 65 6e 20 73 6d  oorly written sm
9db0: 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61  artphone applica
9dc0: 74 69 6f 6e 73 20 77 68 69 63 68 0a 20 20 64 69  tions which.  di
9dd0: 64 20 6e 6f 74 20 63 6f 72 72 65 63 74 6c 79 20  d not correctly 
9de0: 68 61 6e 64 6c 65 20 74 68 65 20 5b 53 51 4c 49  handle the [SQLI
9df0: 54 45 5f 4c 4f 43 4b 45 44 5d 20 61 6e 64 20 5b  TE_LOCKED] and [
9e00: 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 65 72 72  SQLITE_BUSY] err
9e10: 6f 72 20 0a 20 20 72 65 74 75 72 6e 73 2e 20 20  or .  returns.  
9e20: 52 61 74 68 65 72 20 74 68 61 6e 20 66 69 78 20  Rather than fix 
9e30: 74 68 65 20 6d 61 6e 79 20 64 65 66 65 63 74 69  the many defecti
9e40: 76 65 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70  ve smartphone ap
9e50: 70 6c 69 63 61 74 69 6f 6e 73 2c 20 0a 20 20 74  plications, .  t
9e60: 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 53  he behavior of S
9e70: 51 4c 69 74 65 20 77 61 73 20 63 68 61 6e 67 65  QLite was change
9e80: 64 20 69 6e 20 33 2e 36 2e 32 33 2e 32 20 74 6f  d in 3.6.23.2 to
9e90: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72   automatically r
9ea0: 65 73 65 74 0a 20 20 74 68 65 20 70 72 65 70 61  eset.  the prepa
9eb0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  red statement.  
9ec0: 42 75 74 20 74 68 61 74 20 63 68 61 6e 67 65 64  But that changed
9ed0: 20 63 61 75 73 65 64 20 69 73 73 75 65 73 20 69   caused issues i
9ee0: 6e 20 6f 74 68 65 72 20 0a 20 20 69 6d 70 72 6f  n other .  impro
9ef0: 70 65 72 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65  perly implemente
9f00: 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74  d applications t
9f10: 68 61 74 20 77 65 72 65 20 61 63 74 75 61 6c 6c  hat were actuall
9f20: 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72 20  y looking.  for 
9f30: 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53  an [SQLITE_MISUS
9f40: 45 5d 20 72 65 74 75 72 6e 20 74 6f 20 74 65 72  E] return to ter
9f50: 6d 69 6e 61 74 65 20 74 68 65 69 72 20 71 75 65  minate their que
9f60: 72 79 20 6c 6f 6f 70 73 2e 20 20 28 41 6e 79 74  ry loops.  (Anyt
9f70: 69 6d 65 0a 20 20 61 6e 20 61 70 70 6c 69 63 61  ime.  an applica
9f80: 74 69 6f 6e 20 67 65 74 73 20 61 6e 20 53 51 4c  tion gets an SQL
9f90: 49 54 45 5f 4d 49 53 55 53 45 20 65 72 72 6f 72  ITE_MISUSE error
9fa0: 20 63 6f 64 65 20 66 72 6f 6d 20 53 51 4c 69 74   code from SQLit
9fb0: 65 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68  e, that means th
9fc0: 65 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  e.  application 
9fd0: 69 73 20 6d 69 73 75 73 69 6e 67 20 74 68 65 20  is misusing the 
9fe0: 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
9ff0: 20 61 6e 64 20 69 73 20 74 68 75 73 20 69 6e 63   and is thus inc
a000: 6f 72 72 65 63 74 6c 79 0a 20 20 69 6d 70 6c 65  orrectly.  imple
a010: 6d 65 6e 74 65 64 2e 29 20 20 54 68 65 20 53 51  mented.)  The SQ
a020: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45  LITE_OMIT_AUTORE
a030: 53 45 54 20 69 6e 74 65 72 66 61 63 65 20 77 61  SET interface wa
a040: 73 20 61 64 64 65 64 20 74 6f 20 53 51 4c 69 74  s added to SQLit
a050: 65 0a 20 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  e.  version 3.7.
a060: 35 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74  5 in an effort t
a070: 6f 20 67 65 74 20 61 6c 6c 20 6f 66 20 74 68 65  o get all of the
a080: 20 28 62 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c   (broken).  appl
a090: 69 63 61 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b  ications to work
a0a0: 20 61 67 61 69 6e 20 77 69 74 68 6f 75 74 20 68   again without h
a0b0: 61 76 69 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c  aving to actuall
a0c0: 79 20 66 69 78 20 74 68 65 20 61 70 70 6c 69 63  y fix the applic
a0d0: 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  ations..}..COMPI
a0e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a0f0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55  E_OMIT_AUTOVACUU
a100: 4d 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  M} {.  If this o
a110: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
a120: 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20 63 61  , the library ca
a130: 6e 6e 6f 74 20 63 72 65 61 74 65 20 6f 72 20 77  nnot create or w
a140: 72 69 74 65 20 74 6f 20 0a 20 20 64 61 74 61 62  rite to .  datab
a150: 61 73 65 73 20 74 68 61 74 20 73 75 70 70 6f 72  ases that suppor
a160: 74 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e  t [auto_vacuum].
a170: 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b  .  Executing a [
a180: 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75  PRAGMA auto_vacu
a190: 75 6d 5d 20 73 74 61 74 65 6d 65 6e 74 20 69 73  um] statement is
a1a0: 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 0a 20 20   not an error.  
a1b0: 28 73 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50  (since unknown P
a1c0: 52 41 47 4d 41 73 20 61 72 65 20 73 69 6c 65 6e  RAGMAs are silen
a1d0: 74 6c 79 20 69 67 6e 6f 72 65 64 29 2c 20 62 75  tly ignored), bu
a1e0: 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72  t does not retur
a1f0: 6e 20 61 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d  n a value.  or m
a200: 6f 64 69 66 79 20 74 68 65 20 61 75 74 6f 2d 76  odify the auto-v
a210: 61 63 75 75 6d 20 66 6c 61 67 20 69 6e 20 74 68  acuum flag in th
a220: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  e database file.
a230: 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20 74   If a database t
a240: 68 61 74 0a 20 20 73 75 70 70 6f 72 74 73 20 61  hat.  supports a
a250: 75 74 6f 2d 76 61 63 75 75 6d 20 69 73 20 6f 70  uto-vacuum is op
a260: 65 6e 65 64 20 62 79 20 61 20 6c 69 62 72 61 72  ened by a librar
a270: 79 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  y compiled with 
a280: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a  this option, it.
a290: 20 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c    is automatical
a2a0: 6c 79 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61  ly opened in rea
a2b0: 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a  d-only mode..}..
a2c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a2d0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57  SQLITE_OMIT_BETW
a2e0: 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  EEN_OPTIMIZATION
a2f0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a300: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 75  n disables the u
a310: 73 65 20 6f 66 20 69 6e 64 69 63 65 73 20 77 69  se of indices wi
a320: 74 68 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  th WHERE clause 
a330: 74 65 72 6d 73 0a 20 20 74 68 61 74 20 65 6d 70  terms.  that emp
a340: 6c 6f 79 20 74 68 65 20 42 45 54 57 45 45 4e 20  loy the BETWEEN 
a350: 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  operator..}..COM
a360: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a370: 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49  ITE_OMIT_BLOB_LI
a380: 54 45 52 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20  TERAL} {.  When 
a390: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
a3a0: 65 66 69 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f  efined, it is no
a3b0: 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 70  t possible to sp
a3c0: 65 63 69 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a  ecify a blob in.
a3d0: 20 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65    an SQL stateme
a3e0: 6e 74 20 75 73 69 6e 67 20 74 68 65 20 58 27 41  nt using the X'A
a3f0: 42 43 44 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a  BCD' syntax..}..
a400: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a410: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45  SQLITE_OMIT_BTRE
a420: 45 43 4f 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e  ECOUNT} {.  When
a430: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
a440: 64 65 66 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69  defined, an opti
a450: 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 61 63  mization that ac
a460: 63 65 6c 65 72 61 74 65 73 20 63 6f 75 6e 74 69  celerates counti
a470: 6e 67 0a 20 20 61 6c 6c 20 65 6e 74 72 69 65 73  ng.  all entries
a480: 20 69 6e 20 61 20 74 61 62 6c 65 20 28 69 6e 20   in a table (in 
a490: 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 61 6e 20  other words, an 
a4a0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61  optimization tha
a4b0: 74 20 68 65 6c 70 73 0a 20 20 22 53 45 4c 45 43  t helps.  "SELEC
a4c0: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
a4d0: 74 61 62 6c 65 22 20 72 75 6e 20 66 61 73 74 65  table" run faste
a4e0: 72 29 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d  r) is omitted..}
a4f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a500: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55   {SQLITE_OMIT_BU
a510: 49 4c 54 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20  ILTIN_TEST} {.  
a520: 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
a530: 65 20 62 75 69 6c 64 20 69 6e 63 6c 75 64 65 73  e build includes
a540: 20 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20   a small amount 
a550: 6f 66 20 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c  of logic control
a560: 6c 65 64 0a 20 20 62 79 20 74 68 65 20 5b 73 71  led.  by the [sq
a570: 6c 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72  lite3_test_contr
a580: 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ol()] interface 
a590: 74 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20  that is used to 
a5a0: 65 78 65 72 63 69 73 65 0a 20 20 70 61 72 74 73  exercise.  parts
a5b0: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63   of the SQLite c
a5c0: 6f 72 65 20 74 68 61 74 20 61 72 65 20 64 69 66  ore that are dif
a5d0: 66 69 63 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f  ficult to contro
a5e0: 6c 20 61 6e 64 20 6d 65 61 73 75 72 65 20 75 73  l and measure us
a5f0: 69 6e 67 0a 20 20 74 68 65 20 73 74 61 6e 64 61  ing.  the standa
a600: 72 64 20 41 50 49 2e 20 20 54 68 69 73 20 6f 70  rd API.  This op
a610: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74 20  tion omits that 
a620: 62 75 69 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f  built-in test lo
a630: 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  gic..}..COMPILE_
a640: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a650: 4d 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68  MIT_CAST} {.  Th
a660: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
a670: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
a680: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
a690: 43 41 53 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d  CAST operator..}
a6a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a6b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48   {SQLITE_OMIT_CH
a6c0: 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ECK} {.  This op
a6d0: 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69  tion causes SQLi
a6e0: 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f  te to omit suppo
a6f0: 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e  rt for CHECK con
a700: 73 74 72 61 69 6e 74 73 2e 0a 20 20 54 68 65 20  straints..  The 
a710: 70 61 72 73 65 72 20 77 69 6c 6c 20 73 74 69 6c  parser will stil
a720: 6c 20 61 63 63 65 70 74 20 43 48 45 43 4b 20 63  l accept CHECK c
a730: 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 53 51  onstraints in SQ
a740: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20  L statements,.  
a750: 74 68 65 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e  they will just n
a760: 6f 74 20 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a  ot be enforced..
a770: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a780: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  N {SQLITE_OMIT_C
a790: 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41  OMPILEOPTION_DIA
a7a0: 47 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  GS} {.  This opt
a7b0: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
a7c0: 6d 69 74 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d  mit the compile-
a7d0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 69 61 67  time option diag
a7e0: 6e 6f 73 74 69 63 73 20 61 76 61 69 6c 61 62 6c  nostics availabl
a7f0: 65 0a 20 20 69 6e 20 53 51 4c 69 74 65 2c 20 69  e.  in SQLite, i
a800: 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 5b 73 71  ncluding the [sq
a810: 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
a820: 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a  ion_used()] and.
a830: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69    [sqlite3_compi
a840: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20  leoption_get()] 
a850: 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c  C/C++ functions,
a860: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63   the.  [sqlite_c
a870: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
a880: 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  d()] and [sqlite
a890: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
a8a0: 65 74 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69  et()] SQL functi
a8b0: 6f 6e 73 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b  ons,.  and the [
a8c0: 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20  compile_options 
a8d0: 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50  pragma]..}..COMP
a8e0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a8f0: 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45  TE_OMIT_COMPLETE
a900: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a910: 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 73 71  n causes the [sq
a920: 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29  lite3_complete()
a930: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  ] and [sqlite3_c
a940: 6f 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20 20 69  omplete16()].  i
a950: 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20  nterfaces to be 
a960: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
a970: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a980: 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44  TE_OMIT_COMPOUND
a990: 5f 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69  _SELECT} {.  Thi
a9a0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
a9b0: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d   to omit the com
a9c0: 70 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66  pound [SELECT] f
a9d0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20  unctionality. . 
a9e0: 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d   [SELECT] statem
a9f0: 65 6e 74 73 20 74 68 61 74 20 75 73 65 20 74 68  ents that use th
aa00: 65 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f  e .  UNION, UNIO
aa10: 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54  N ALL, INTERSECT
aa20: 20 6f 72 20 45 58 43 45 50 54 20 63 6f 6d 70 6f   or EXCEPT compo
aa30: 75 6e 64 20 53 45 4c 45 43 54 20 6f 70 65 72 61  und SELECT opera
aa40: 74 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63 61 75  tors will .  cau
aa50: 73 65 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  se a parse error
aa60: 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53 45 52 54 5d  ...  An [INSERT]
aa70: 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20   statement with 
aa80: 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65 73 20  multiple values 
aa90: 69 6e 20 74 68 65 20 56 41 4c 55 45 53 20 63 6c  in the VALUES cl
aaa0: 61 75 73 65 20 69 73 0a 20 20 69 6d 70 6c 65 6d  ause is.  implem
aab0: 65 6e 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  ented internally
aac0: 20 61 73 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53   as a compound S
aad0: 45 4c 45 43 54 2e 20 20 48 65 6e 63 65 2c 20 74  ELECT.  Hence, t
aae0: 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 0a  his option also.
aaf0: 20 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61    disables the a
ab00: 62 69 6c 69 74 79 20 74 6f 20 69 6e 73 65 72 74  bility to insert
ab10: 20 6d 6f 72 65 20 74 68 61 6e 20 61 20 73 69 6e   more than a sin
ab20: 67 6c 65 20 72 6f 77 20 75 73 69 6e 67 20 61 6e  gle row using an
ab30: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e  .  INSERT INTO .
ab40: 2e 2e 20 56 41 4c 55 45 53 20 2e 2e 2e 20 73 74  .. VALUES ... st
ab50: 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50  atement..}..COMP
ab60: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ab70: 54 45 5f 4f 4d 49 54 5f 43 54 45 7d 20 7b 0a 20  TE_OMIT_CTE} {. 
ab80: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
ab90: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
aba0: 5b 63 6f 6d 6d 6f 6e 20 74 61 62 6c 65 20 65 78  [common table ex
abb0: 70 72 65 73 73 69 6f 6e 73 5d 20 74 6f 20 62 65  pressions] to be
abc0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 0a 0a 43   omitted..}....C
abd0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
abe0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54  QLITE_OMIT_DATET
abf0: 49 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49  IME_FUNCS} {.  I
ac00: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
ac10: 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65   defined, SQLite
ac20: 27 73 20 62 75 69 6c 74 2d 69 6e 20 64 61 74 65  's built-in date
ac30: 20 61 6e 64 20 74 69 6d 65 20 6d 61 6e 69 70 75   and time manipu
ac40: 6c 61 74 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f  lation.  functio
ac50: 6e 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20  ns are omitted. 
ac60: 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68  Specifically, th
ac70: 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20  e SQL functions 
ac80: 6a 75 6c 69 61 6e 64 61 79 28 29 2c 20 64 61 74  julianday(), dat
ac90: 65 28 29 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64  e(),.  time(), d
aca0: 61 74 65 74 69 6d 65 28 29 20 61 6e 64 20 73 74  atetime() and st
acb0: 72 66 74 69 6d 65 28 29 20 61 72 65 20 6e 6f 74  rftime() are not
acc0: 20 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 20   available. The 
acd0: 64 65 66 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20  default column. 
ace0: 20 76 61 6c 75 65 73 20 43 55 52 52 45 4e 54 5f   values CURRENT_
acf0: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
ad00: 54 45 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54  TE and CURRENT_T
ad10: 49 4d 45 53 54 41 4d 50 20 61 72 65 20 73 74 69  IMESTAMP are sti
ad20: 6c 6c 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a  ll available..}.
ad30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ad40: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43  {SQLITE_OMIT_DEC
ad50: 4c 54 59 50 45 7d 20 7b 0a 20 20 54 68 69 73 20  LTYPE} {.  This 
ad60: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
ad70: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
ad80: 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b  port for the.  [
ad90: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
ada0: 65 63 6c 74 79 70 65 28 29 5d 20 61 6e 64 20 5b  ecltype()] and [
adb0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
adc0: 65 63 6c 74 79 70 65 31 36 28 29 5d 0a 20 20 69  ecltype16()].  i
add0: 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f  nterfaces..}..CO
ade0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
adf0: 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43  LITE_OMIT_DEPREC
ae00: 41 54 45 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ATED} {.  This o
ae10: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
ae20: 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  ite to omit supp
ae30: 6f 72 74 20 66 6f 72 20 69 6e 74 65 72 66 61 63  ort for interfac
ae40: 65 73 0a 20 20 6d 61 72 6b 65 64 20 61 73 20 64  es.  marked as d
ae50: 65 70 72 65 63 61 74 65 64 2e 20 20 54 68 69 73  eprecated.  This
ae60: 20 69 6e 63 6c 75 64 65 73 20 0a 20 20 5b 73 71   includes .  [sq
ae70: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
ae80: 63 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b 73 71 6c  count()],.  [sql
ae90: 69 74 65 33 5f 65 78 70 69 72 65 64 28 29 5d 2c  ite3_expired()],
aea0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 6e  .  [sqlite3_tran
aeb0: 73 66 65 72 5f 62 69 6e 64 69 6e 67 73 28 29 5d  sfer_bindings()]
aec0: 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 67 6c 6f  ,.  [sqlite3_glo
aed0: 62 61 6c 5f 72 65 63 6f 76 65 72 28 29 5d 2c 0a  bal_recover()],.
aee0: 20 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65 61    [sqlite3_threa
aef0: 64 5f 63 6c 65 61 6e 75 70 28 29 5d 20 61 6e 64  d_cleanup()] and
af00: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  .  [sqlite3_memo
af10: 72 79 5f 61 6c 61 72 6d 28 29 5d 20 69 6e 74 65  ry_alarm()] inte
af20: 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  rfaces..}..COMPI
af30: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
af40: 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b  E_OMIT_DISKIO} {
af50: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
af60: 6d 69 74 73 20 61 6c 6c 20 73 75 70 70 6f 72 74  mits all support
af70: 20 66 6f 72 20 77 72 69 74 69 6e 67 20 74 6f 20   for writing to 
af80: 74 68 65 20 64 69 73 6b 20 61 6e 64 20 66 6f 72  the disk and for
af90: 63 65 73 0a 20 20 64 61 74 61 62 61 73 65 73 20  ces.  databases 
afa0: 74 6f 20 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f  to exist in memo
afb0: 72 79 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20 6f  ry only.  This o
afc0: 70 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65  ption has not be
afd0: 65 6e 20 0a 20 20 6d 61 69 6e 74 61 69 6e 65 64  en .  maintained
afe0: 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 64 6f   and probably do
aff0: 65 73 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68  es not work with
b000: 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20   newer versions 
b010: 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f  of SQLite..}..CO
b020: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
b030: 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49  LITE_OMIT_EXPLAI
b040: 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20  N} {.  Defining 
b050: 74 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  this option caus
b060: 65 73 20 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d  es the [EXPLAIN]
b070: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f   command to be o
b080: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a  mitted from the.
b090: 20 20 6c 69 62 72 61 72 79 2e 20 41 74 74 65 6d    library. Attem
b0a0: 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65  pting to execute
b0b0: 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74   an [EXPLAIN] st
b0c0: 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75  atement will cau
b0d0: 73 65 20 61 20 70 61 72 73 65 0a 20 20 65 72 72  se a parse.  err
b0e0: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
b0f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b100: 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d  IT_FLAG_PRAGMAS}
b110: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
b120: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
b130: 6f 72 20 61 20 73 75 62 73 65 74 20 6f 66 20 5b  or a subset of [
b140: 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73  PRAGMA] commands
b150: 20 74 68 61 74 0a 20 20 71 75 65 72 79 20 61 6e   that.  query an
b160: 64 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72  d set boolean pr
b170: 6f 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d  operties..}..COM
b180: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b190: 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e  ITE_OMIT_FLOATIN
b1a0: 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69  G_POINT} {.  Thi
b1b0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
b1c0: 20 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e   to omit floatin
b1d0: 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73  g-point number s
b1e0: 75 70 70 6f 72 74 20 66 72 6f 6d 20 74 68 65 20  upport from the 
b1f0: 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79  SQLite.  library
b200: 2e 20 57 68 65 6e 20 73 70 65 63 69 66 69 65 64  . When specified
b210: 2c 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 66  , specifying a f
b220: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75  loating point nu
b230: 6d 62 65 72 20 61 73 20 61 20 6c 69 74 65 72 61  mber as a litera
b240: 6c 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e 30 31  l .  (i.e. "1.01
b250: 22 29 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20  ") results in a 
b260: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20  parse error...  
b270: 3c 70 3e 49 6e 20 74 68 65 20 66 75 74 75 72 65  <p>In the future
b280: 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61  , this option ma
b290: 79 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f  y also disable o
b2a0: 74 68 65 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ther floating po
b2b0: 69 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61  int .  functiona
b2c0: 6c 69 74 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c  lity, for exampl
b2d0: 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72  e the [sqlite3_r
b2e0: 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c  esult_double()],
b2f0: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e   .  [sqlite3_bin
b300: 64 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71  d_double()], [sq
b310: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
b320: 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c  le()] and.  [sql
b330: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
b340: 6c 65 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69  le()] API functi
b350: 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43  ons..  </p>.}..C
b360: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b370: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49  QLITE_OMIT_FOREI
b380: 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74  GN_KEY} {.  If t
b390: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
b3a0: 66 69 6e 65 64 2c 20 74 68 65 6e 20 5b 66 6f 72  fined, then [for
b3b0: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
b3c0: 69 6e 74 5d 20 73 79 6e 74 61 78 20 69 73 0a 20  int] syntax is. 
b3d0: 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 2e   not recognized.
b3e0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b3f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b400: 47 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54  GET_TABLE} {.  T
b410: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
b420: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73  s support for [s
b430: 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
b440: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
b450: 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d  e3_free_table()]
b460: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
b470: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b480: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49  N {SQLITE_OMIT_I
b490: 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69  NCRBLOB} {.  Thi
b4a0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
b4b0: 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c  support for [sql
b4c0: 69 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72  ite3_blob | incr
b4d0: 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
b4e0: 5d 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ].  to be omitte
b4f0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
b500: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b510: 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43  T_INTEGRITY_CHEC
b520: 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  K} {.  This opti
b530: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
b540: 20 66 6f 72 20 74 68 65 20 5b 69 6e 74 65 67 72   for the [integr
b550: 69 74 79 5f 63 68 65 63 6b 20 70 72 61 67 6d 61  ity_check pragma
b560: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
b570: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b580: 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54  T_LIKE_OPTIMIZAT
b590: 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ION} {.  This op
b5a0: 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
b5b0: 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c  e ability of SQL
b5c0: 69 74 65 20 74 6f 20 75 73 65 20 69 6e 64 69 63  ite to use indic
b5d0: 65 73 20 74 6f 20 68 65 6c 70 0a 20 20 72 65 73  es to help.  res
b5e0: 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20  olve [LIKE] and 
b5f0: 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73  [GLOB] operators
b600: 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75   in a WHERE clau
b610: 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  se..}..COMPILE_O
b620: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b630: 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  IT_LOAD_EXTENSIO
b640: 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  N} {.  This opti
b650: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 65 6e 74  on omits the ent
b660: 69 72 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f  ire extension lo
b670: 61 64 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20  ading mechanism 
b680: 66 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c 20 69  from.  SQLite, i
b690: 6e 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69 74 65  ncluding [sqlite
b6a0: 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
b6b0: 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 0a 20  tension()] and. 
b6c0: 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65   [sqlite3_load_e
b6d0: 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65  xtension()] inte
b6e0: 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  rfaces..}..COMPI
b6f0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b700: 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45  E_OMIT_LOCALTIME
b710: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b720: 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 6c 6f 63  n omits the "loc
b730: 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72  altime" modifier
b740: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 65 20 61   from the date a
b750: 6e 64 20 74 69 6d 65 0a 20 20 66 75 6e 63 74 69  nd time.  functi
b760: 6f 6e 73 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  ons.  This optio
b770: 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75  n is sometimes u
b780: 73 65 66 75 6c 20 77 68 65 6e 20 74 72 79 69 6e  seful when tryin
b790: 67 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20 20 74  g to compile.  t
b7a0: 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
b7b0: 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 61 20   functions on a 
b7c0: 70 6c 61 74 66 6f 72 6d 20 74 68 61 74 20 64 6f  platform that do
b7d0: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 74  es not support t
b7e0: 68 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f 66 20  he.  concept of 
b7f0: 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43  local time..}..C
b800: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b810: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41  QLITE_OMIT_LOOKA
b820: 53 49 44 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SIDE} {.  This o
b830: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
b840: 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72  [lookaside memor
b850: 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a  y allocator]..}.
b860: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b870: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d  {SQLITE_OMIT_MEM
b880: 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20  ORYDB} {.  When 
b890: 74 68 69 73 20 69 73 20 64 65 66 69 6e 65 64 2c  this is defined,
b8a0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65   the library doe
b8b0: 73 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74 68  s not respect th
b8c0: 65 20 73 70 65 63 69 61 6c 20 64 61 74 61 62 61  e special databa
b8d0: 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f  se.  name ":memo
b8e0: 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75  ry:" (normally u
b8f0: 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e  sed to create an
b900: 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61   [in-memory data
b910: 62 61 73 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a  base]). If .  ":
b920: 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73 73  memory:" is pass
b930: 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  ed to [sqlite3_o
b940: 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
b950: 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20  _open16()], or. 
b960: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
b970: 32 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69 74  2()], a file wit
b980: 68 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c  h this name will
b990: 20 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72   be .  opened or
b9a0: 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   created..}..COM
b9b0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b9c0: 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49  ITE_OMIT_OR_OPTI
b9d0: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68  MIZATION} {.  Th
b9e0: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
b9f0: 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f  es the ability o
ba00: 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20  f SQLite to use 
ba10: 61 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68 65  an index togethe
ba20: 72 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20 6f  r.  with terms o
ba30: 66 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  f a WHERE clause
ba40: 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68   connected by th
ba50: 65 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d  e OR operator..}
ba60: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
ba70: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41   {SQLITE_OMIT_PA
ba80: 47 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  GER_PRAGMAS} {. 
ba90: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
baa0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
bab0: 6d 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74  mas related to t
bac0: 68 65 20 70 61 67 65 72 20 73 75 62 73 79 73 74  he pager subsyst
bad0: 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62  em from .  the b
bae0: 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  uild..}..COMPILE
baf0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bb00: 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20  OMIT_PRAGMA} {. 
bb10: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
bb20: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
bb30: 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e   [PRAGMA] comman
bb40: 64 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69 62  d.  from the lib
bb50: 72 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74 20  rary. Note that 
bb60: 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  it is useful to 
bb70: 64 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72 6f  define the macro
bb80: 73 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73 70  s that omit.  sp
bb90: 65 63 69 66 69 63 20 70 72 61 67 6d 61 73 20 69  ecific pragmas i
bba0: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  n addition to th
bbb0: 69 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79 20  is, as they may 
bbc0: 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70 70  also remove supp
bbd0: 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e  orting code.  in
bbe0: 20 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74 65   other sub-syste
bbf0: 6d 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 72  ms. This macro r
bc00: 65 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41 47  emoves the [PRAG
bc10: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79  MA] command only
bc20: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bc30: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
bc40: 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41  _PROGRESS_CALLBA
bc50: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
bc60: 69 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69 6e  ion may be defin
bc70: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
bc80: 61 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73 73  apability to iss
bc90: 75 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a 20  ue "progress" . 
bca0: 20 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e   callbacks durin
bcb0: 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53  g long-running S
bcc0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54  QL statements. T
bcd0: 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70  he .  [sqlite3_p
bce0: 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
bcf0: 29 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69 6f  )].  API functio
bd00: 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74  n is not present
bd10: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e   in the library.
bd20: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
bd30: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
bd40: 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a  QUICKBALANCE} {.
bd50: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
bd60: 69 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  its an alternati
bd70: 76 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72 65  ve, faster B-Tre
bd80: 65 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74  e balancing rout
bd90: 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68 69  ine..  Using thi
bda0: 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53  s option makes S
bdb0: 51 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20 73  QLite slightly s
bdc0: 6d 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65 78  maller at the ex
bdd0: 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e  pense of.  makin
bde0: 67 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74 6c  g it run slightl
bdf0: 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d  y slower..}..COM
be00: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
be10: 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58  ITE_OMIT_REINDEX
be20: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
be30: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
be40: 64 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58 5d  d, the [REINDEX]
be50: 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  .  command is no
be60: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
be70: 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65  e library..  Exe
be80: 63 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44 45  cuting a [REINDE
be90: 58 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  X] statement cau
bea0: 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65  ses .  a parse e
beb0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
bec0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bed0: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
bee0: 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
bef0: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
bf00: 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20  its pragmas for 
bf10: 71 75 65 72 79 69 6e 67 20 74 68 65 20 64 61 74  querying the dat
bf20: 61 62 61 73 65 20 73 63 68 65 6d 61 20 66 72 6f  abase schema fro
bf30: 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
bf40: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
bf50: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
bf60: 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52  CHEMA_VERSION_PR
bf70: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
bf80: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
bf90: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f  omits pragmas fo
bfa0: 72 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20 6d  r querying and m
bfb0: 6f 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20 20  odifying the .  
bfc0: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
bfd0: 76 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65 72  version and user
bfe0: 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68   version from th
bff0: 65 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66 69  e build. Specifi
c000: 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73  cally, the .  [s
c010: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61  chema_version] a
c020: 6e 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e  nd [user_version
c030: 5d 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f 6d  ] PRAGMAs are om
c040: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
c050: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c060: 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43  _OMIT_SHARED_CAC
c070: 48 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  HE} {.  This opt
c080: 69 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69 74  ion builds SQLit
c090: 65 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f 72  e without suppor
c0a0: 74 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61 63  t for shared-cac
c0b0: 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b  he mode..  The [
c0c0: 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
c0d0: 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20 69  hared_cache()] i
c0e0: 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20  s omitted along 
c0f0: 77 69 74 68 20 61 20 66 61 69 72 0a 20 20 61 6d  with a fair.  am
c100: 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77 69  ount of logic wi
c110: 74 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65 20  thin the B-Tree 
c120: 73 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63 69  subsystem associ
c130: 61 74 65 64 20 77 69 74 68 20 73 68 61 72 65 64  ated with shared
c140: 0a 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65 6d  .  cache managem
c150: 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ent..}..COMPILE_
c160: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c170: 4d 49 54 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a  MIT_SUBQUERY} {.
c180: 20 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73 75    If defined, su
c190: 70 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73 65  pport for sub-se
c1a0: 6c 65 63 74 73 20 61 6e 64 20 74 68 65 20 49 4e  lects and the IN
c1b0: 28 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65 20  () operator are 
c1c0: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
c1d0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c1e0: 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49  TE_OMIT_TCL_VARI
c1f0: 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68 69  ABLE} {.  If thi
c200: 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  s macro is defin
c210: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70 65  ed, then the spe
c220: 63 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c 65  cial "$<variable
c230: 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20  -name>" syntax. 
c240: 20 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61 74   used to automat
c250: 69 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20  ically bind SQL 
c260: 76 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43 4c  variables to TCL
c270: 20 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f 6d   variables is om
c280: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
c290: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
c2a0: 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a  _OMIT_TEMPDB} {.
c2b0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
c2c0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
c2d0: 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41 52  TEMP or TEMPORAR
c2e0: 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d  Y tables..}..COM
c2f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c300: 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20  ITE_OMIT_TRACE} 
c310: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c320: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
c330: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70  r the [sqlite3_p
c340: 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20  rofile()] and.  
c350: 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29  [sqlite3_trace()
c360: 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64  ] interfaces and
c370: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
c380: 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  d logic..}..COMP
c390: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c3a0: 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d  TE_OMIT_TRIGGER}
c3b0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
c3c0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c3d0: 73 75 70 70 6f 72 74 20 66 6f 72 20 54 52 49 47  support for TRIG
c3e0: 47 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69  GER objects. Nei
c3f0: 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45  ther the .  [CRE
c400: 41 54 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20  ATE TRIGGER] or 
c410: 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20  [DROP TRIGGER]. 
c420: 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76   commands are av
c430: 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20  ailable in this 
c440: 63 61 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70  case, and attemp
c450: 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a  ting to execute.
c460: 20 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65    either will re
c470: 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20  sult in a parse 
c480: 65 72 72 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70  error..  This op
c490: 74 69 6f 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c  tion also disabl
c4a0: 65 73 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  es enforcement o
c4b0: 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  f [foreign key c
c4c0: 6f 6e 73 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73  onstraints],.  s
c4d0: 69 6e 63 65 20 74 68 65 20 63 6f 64 65 20 74 68  ince the code th
c4e0: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72  at implements tr
c4f0: 69 67 67 65 72 73 20 61 6e 64 20 77 68 69 63 68  iggers and which
c500: 20 69 73 20 6f 6d 69 74 74 65 64 20 62 79 20 74   is omitted by t
c510: 68 69 73 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20  his.  option is 
c520: 61 6c 73 6f 20 75 73 65 64 20 74 6f 20 69 6d 70  also used to imp
c530: 6c 65 6d 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20  lement [foreign 
c540: 6b 65 79 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a  key actions]..}.
c550: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c560: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55  {SQLITE_OMIT_TRU
c570: 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49  NCATE_OPTIMIZATI
c580: 4f 4e 7d 20 7b 0a 20 20 41 20 64 65 66 61 75 6c  ON} {.  A defaul
c590: 74 20 62 75 69 6c 64 20 6f 66 20 53 51 4c 69 74  t build of SQLit
c5a0: 65 2c 20 69 66 20 61 20 5b 44 45 4c 45 54 45 5d  e, if a [DELETE]
c5b0: 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 6e   statement has n
c5c0: 6f 20 57 48 45 52 45 20 63 6c 61 75 73 65 0a 20  o WHERE clause. 
c5d0: 20 61 6e 64 20 6f 70 65 72 61 74 65 73 20 6f 6e   and operates on
c5e0: 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 6e 6f   a table with no
c5f0: 20 74 72 69 67 67 65 72 73 2c 20 61 6e 20 6f 70   triggers, an op
c600: 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72  timization occur
c610: 73 20 74 68 61 74 0a 20 20 63 61 75 73 65 73 20  s that.  causes 
c620: 74 68 65 20 44 45 4c 45 54 45 20 74 6f 20 6f 63  the DELETE to oc
c630: 63 75 72 20 62 79 20 64 72 6f 70 70 69 6e 67 20  cur by dropping 
c640: 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 74  and recreating t
c650: 68 65 20 74 61 62 6c 65 2e 20 20 0a 20 20 44 72  he table.  .  Dr
c660: 6f 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65  opping and recre
c670: 61 74 69 6e 67 20 61 20 74 61 62 6c 65 20 69 73  ating a table is
c680: 20 75 73 75 61 6c 6c 79 20 6d 75 63 68 20 66 61   usually much fa
c690: 73 74 65 72 20 74 68 61 6e 20 64 65 6c 65 74 69  ster than deleti
c6a0: 6e 67 0a 20 20 74 68 65 20 74 61 62 6c 65 20 63  ng.  the table c
c6b0: 6f 6e 74 65 6e 74 20 72 6f 77 20 62 79 20 72 6f  ontent row by ro
c6c0: 77 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20  w.  This is the 
c6d0: 22 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69  "truncate optimi
c6e0: 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50  zation"..}..COMP
c6f0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c700: 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b  TE_OMIT_UTF16} {
c710: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73  .  This macro is
c720: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 73 75   used to omit su
c730: 70 70 6f 72 74 20 66 6f 72 20 55 54 46 31 36 20  pport for UTF16 
c740: 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57  text encoding. W
c750: 68 65 6e 20 74 68 69 73 20 69 73 0a 20 20 64 65  hen this is.  de
c760: 66 69 6e 65 64 20 61 6c 6c 20 41 50 49 20 66 75  fined all API fu
c770: 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74  nctions that ret
c780: 75 72 6e 20 6f 72 20 61 63 63 65 70 74 20 55 54  urn or accept UT
c790: 46 31 36 20 65 6e 63 6f 64 65 64 20 74 65 78 74  F16 encoded text
c7a0: 20 61 72 65 0a 20 20 75 6e 61 76 61 69 6c 61 62   are.  unavailab
c7b0: 6c 65 2e 20 54 68 65 73 65 20 66 75 6e 63 74 69  le. These functi
c7c0: 6f 6e 73 20 63 61 6e 20 62 65 20 69 64 65 6e 74  ons can be ident
c7d0: 69 66 69 65 64 20 62 79 20 74 68 65 20 66 61 63  ified by the fac
c7e0: 74 20 74 68 61 74 20 74 68 65 79 20 65 6e 64 0a  t that they end.
c7f0: 20 20 77 69 74 68 20 27 31 36 27 2c 20 66 6f 72    with '16', for
c800: 20 65 78 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65   example [sqlite
c810: 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c 20  3_prepare16()], 
c820: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
c830: 74 65 78 74 31 36 28 29 5d 20 61 6e 64 0a 20 20  text16()] and.  
c840: 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65  [sqlite3_bind_te
c850: 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50  xt16()]..}..COMP
c860: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
c870: 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20  TE_OMIT_VACUUM} 
c880: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
c890: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
c8a0: 20 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20   the [VACUUM].  
c8b0: 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69  command is not i
c8c0: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c  ncluded in the l
c8d0: 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74  ibrary..  Execut
c8e0: 69 6e 67 20 61 20 5b 56 41 43 55 55 4d 5d 20 73  ing a [VACUUM] s
c8f0: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20  tatement causes 
c900: 0a 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  .  a parse error
c910: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c920: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
c930: 5f 56 49 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e  _VIEW} {.  Defin
c940: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
c950: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
c960: 72 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20  r VIEW objects. 
c970: 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b  Neither the .  [
c980: 43 52 45 41 54 45 20 56 49 45 57 5d 20 6e 6f 72  CREATE VIEW] nor
c990: 20 74 68 65 20 5b 44 52 4f 50 20 56 49 45 57 5d   the [DROP VIEW]
c9a0: 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20  .  commands are 
c9b0: 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69  available in thi
c9c0: 73 20 63 61 73 65 2c 20 61 6e 64 0a 20 20 61 74  s case, and.  at
c9d0: 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63  tempting to exec
c9e0: 75 74 65 20 65 69 74 68 65 72 20 77 69 6c 6c 20  ute either will 
c9f0: 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73  result in a pars
ca00: 65 20 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e  e error...  WARN
ca10: 49 4e 47 3a 20 49 66 20 74 68 69 73 20 6d 61 63  ING: If this mac
ca20: 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69  ro is defined, i
ca30: 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f  t will not be po
ca40: 73 73 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61  ssible to open a
ca50: 20 64 61 74 61 62 61 73 65 0a 20 20 66 6f 72 20   database.  for 
ca60: 77 68 69 63 68 20 74 68 65 20 73 63 68 65 6d 61  which the schema
ca70: 20 63 6f 6e 74 61 69 6e 73 20 56 49 45 57 20 6f   contains VIEW o
ca80: 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50  bjects. .}..COMP
ca90: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
caa0: 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54  TE_OMIT_VIRTUALT
cab0: 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ABLE} {.  This o
cac0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
cad0: 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c  ort for the [sql
cae0: 69 74 65 33 5f 76 74 61 62 20 7c 20 56 69 72 74  ite3_vtab | Virt
caf0: 75 61 6c 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63  ual Table].  mec
cb00: 68 61 6e 69 73 6d 20 69 6e 20 53 51 4c 69 74 65  hanism in SQLite
cb10: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
cb20: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
cb30: 5f 57 41 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _WAL} {.  This o
cb40: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
cb50: 22 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f  "[write-ahead lo
cb60: 67 5d 22 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41  g]" (a.k.a. "[WA
cb70: 4c 5d 22 29 20 63 61 70 61 62 69 6c 69 74 79 2e  L]") capability.
cb80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
cb90: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
cba0: 57 53 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  WSD} {.  This op
cbb0: 74 69 6f 6e 20 62 75 69 6c 64 73 20 61 20 76 65  tion builds a ve
cbc0: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c  rsion of the SQL
cbd0: 69 74 65 20 6c 69 62 72 61 72 79 20 74 68 61 74  ite library that
cbe0: 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57   contains no.  W
cbf0: 72 69 74 61 62 6c 65 20 53 74 61 74 69 63 20 44  ritable Static D
cc00: 61 74 61 20 28 57 53 44 29 2e 20 20 57 53 44 20  ata (WSD).  WSD 
cc10: 69 73 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62  is global variab
cc20: 6c 65 73 20 61 6e 64 2f 6f 72 20 73 74 61 74 69  les and/or stati
cc30: 63 0a 20 20 76 61 72 69 61 62 6c 65 73 2e 20 20  c.  variables.  
cc40: 53 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20 64  Some platforms d
cc50: 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53  o not support WS
cc60: 44 2c 20 61 6e 64 20 74 68 69 73 20 6f 70 74 69  D, and this opti
cc70: 6f 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79 0a  on is necessary.
cc80: 20 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 53    in order for S
cc90: 51 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20 74 68  QLite to work th
cca0: 6f 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20  ose platforms.  
ccb0: 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72  ..  Unlike other
ccc0: 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77 68   OMIT options wh
ccd0: 69 63 68 20 6d 61 6b 65 20 74 68 65 20 53 51 4c  ich make the SQL
cce0: 69 74 65 20 6c 69 62 72 61 72 79 20 73 6d 61 6c  ite library smal
ccf0: 6c 65 72 2c 0a 20 20 74 68 69 73 20 6f 70 74 69  ler,.  this opti
cd00: 6f 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e 63 72  on actually incr
cd10: 65 61 73 65 73 20 74 68 65 20 73 69 7a 65 20 6f  eases the size o
cd20: 66 20 53 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b  f SQLite and mak
cd30: 65 73 20 69 74 20 72 75 6e 0a 20 20 61 20 6c 69  es it run.  a li
cd40: 74 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e  ttle slower.  On
cd50: 6c 79 20 75 73 65 20 74 68 69 73 20 6f 70 74 69  ly use this opti
cd60: 6f 6e 20 69 66 20 53 51 4c 69 74 65 20 69 73 20  on if SQLite is 
cd70: 62 65 69 6e 67 20 62 75 69 6c 74 20 66 6f 72 20  being built for 
cd80: 61 6e 0a 20 20 65 6d 62 65 64 64 65 64 20 74 61  an.  embedded ta
cd90: 72 67 65 74 20 74 68 61 74 20 64 6f 65 73 20 6e  rget that does n
cda0: 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44 2e 0a  ot support WSD..
cdb0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
cdc0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58  N {SQLITE_OMIT_X
cdd0: 46 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69  FER_OPT} {.  Thi
cde0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
cdf0: 75 70 70 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d  upport for optim
ce00: 69 7a 61 74 69 6f 6e 73 20 74 68 61 74 20 68 65  izations that he
ce10: 6c 70 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20  lp statements.  
ce20: 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 49 4e 53  of the form "INS
ce30: 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c  ERT INTO ... SEL
ce40: 45 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73  ECT ..." run fas
ce50: 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ter..}..COMPILE_
ce60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a  OPTION {SQLITE_Z
ce70: 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20  ERO_MALLOC} {.  
ce80: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
ce90: 73 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61  s both the [defa
cea0: 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ult memory alloc
ceb0: 61 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20  ator] and the.  
cec0: 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72  [debugging memor
ced0: 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f  y allocator] fro
cee0: 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20  m the build and 
cef0: 73 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74  substitutes a st
cf00: 75 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ub.  memory allo
cf10: 63 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79  cator that alway
cf20: 73 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65  s fails.  SQLite
cf30: 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69   will not run wi
cf40: 74 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d  th this.  stub m
cf50: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
cf60: 73 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65  since it will be
cf70: 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63   unable to alloc
cf80: 61 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74  ate memory.  But
cf90: 0a 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e  .  this stub can
cfa0: 20 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20   be replaced at 
cfb0: 73 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67  start-time using
cfc0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
cfd0: 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
cfe0: 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20  IG_MALLOC],...) 
cff0: 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  or.  [sqlite3_co
d000: 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f  nfig]([SQLITE_CO
d010: 4e 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e  NFIG_HEAP],...).
d020: 0a 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66  .  So the net ef
d030: 66 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d  fect of this com
d040: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
d050: 20 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f   is that it allo
d060: 77 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62  ws SQLite.  to b
d070: 65 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c  e compiled and l
d080: 69 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20  inked against a 
d090: 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74  system library t
d0a0: 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
d0b0: 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c  port.  malloc(),
d0c0: 20 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20   free(), and/or 
d0d0: 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f  realloc()..}..</
d0e0: 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65  tcl>.<a name="de
d0f0: 62 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e  bugoptions"></a>
d100: 0a 3c 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69  .<h2>1.7 Analysi
d110: 73 20 61 6e 64 20 44 65 62 75 67 67 69 6e 67 20  s and Debugging 
d120: 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63  Options</h2>.<tc
d130: 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  l>..COMPILE_OPTI
d140: 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 42 55 47  ON {SQLITE_DEBUG
d150: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 69 74 65  } {.  The SQLite
d160: 20 73 6f 75 72 63 65 20 63 6f 64 65 20 63 6f 6e   source code con
d170: 74 61 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20  tains literally 
d180: 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 61 73 73  thousands of ass
d190: 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73  ert() statements
d1a0: 0a 20 20 75 73 65 64 20 74 6f 20 76 65 72 69 66  .  used to verif
d1b0: 79 20 69 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d  y internal assum
d1c0: 70 74 69 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f  ptions and subro
d1d0: 75 74 69 6e 65 20 70 72 65 63 6f 6e 64 69 74 69  utine preconditi
d1e0: 6f 6e 73 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f  ons and.  postco
d1f0: 6e 64 69 74 69 6f 6e 73 2e 20 20 54 68 65 73 65  nditions.  These
d200: 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d   assert() statem
d210: 65 6e 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c  ents are normall
d220: 79 20 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 28  y turned off.  (
d230: 74 68 65 79 20 67 65 6e 65 72 61 74 65 20 6e 6f  they generate no
d240: 20 63 6f 64 65 29 20 73 69 6e 63 65 20 74 75 72   code) since tur
d250: 6e 69 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b  ning them on mak
d260: 65 73 20 53 51 4c 69 74 65 20 72 75 6e 20 61 70  es SQLite run ap
d270: 70 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68  proximately.  th
d280: 72 65 65 20 74 69 6d 65 73 20 73 6c 6f 77 65 72  ree times slower
d290: 2e 20 20 42 75 74 20 66 6f 72 20 74 65 73 74 69  .  But for testi
d2a0: 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c  ng and analysis,
d2b0: 20 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f   it is useful to
d2c0: 20 74 75 72 6e 0a 20 20 74 68 65 20 61 73 73 65   turn.  the asse
d2d0: 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20  rt() statements 
d2e0: 6f 6e 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f  on.  The SQLITE_
d2f0: 44 45 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69  DEBUG compile-ti
d300: 6d 65 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74  me option does t
d310: 68 69 73 2e 0a 20 20 3c 70 3e 53 51 4c 49 54 45  his..  <p>SQLITE
d320: 5f 44 45 42 55 47 20 61 6c 73 6f 20 65 6e 61 62  _DEBUG also enab
d330: 6c 65 73 20 73 6f 6d 65 20 6f 74 68 65 72 20 64  les some other d
d340: 65 62 75 67 67 69 6e 67 20 66 65 61 74 75 72 65  ebugging feature
d350: 73 2c 20 73 75 63 68 20 61 73 0a 20 20 73 70 65  s, such as.  spe
d360: 63 69 61 6c 20 5b 50 52 41 47 4d 41 5d 20 73 74  cial [PRAGMA] st
d370: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 74 75  atements that tu
d380: 72 6e 20 6f 6e 20 74 72 61 63 69 6e 67 20 61 6e  rn on tracing an
d390: 64 20 6c 69 73 74 69 6e 67 20 66 65 61 74 75 72  d listing featur
d3a0: 65 73 0a 20 20 75 73 65 64 20 66 6f 72 20 74 72  es.  used for tr
d3b0: 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20 61 6e  oubleshooting an
d3c0: 64 20 61 6e 61 6c 79 73 69 73 20 6f 66 20 74 68  d analysis of th
d3d0: 65 20 5b 56 44 42 45 5d 20 61 6e 64 20 63 6f 64  e [VDBE] and cod
d3e0: 65 20 67 65 6e 65 72 61 74 6f 72 2e 0a 7d 0a 0a  e generator..}..
d3f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
d400: 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d  SQLITE_MEMDEBUG}
d410: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
d420: 4d 45 4d 44 45 42 55 47 20 6f 70 74 69 6f 6e 20  MEMDEBUG option 
d430: 63 61 75 73 65 73 20 61 6e 20 69 6e 73 74 72 75  causes an instru
d440: 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65 62 75 67  mented .  [debug
d450: 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ging memory allo
d460: 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75  cator].  to be u
d470: 73 65 64 20 61 73 20 74 68 65 20 64 65 66 61 75  sed as the defau
d480: 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
d490: 74 6f 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74  tor within SQLit
d4a0: 65 2e 20 20 54 68 65 0a 20 20 69 6e 73 74 72 75  e.  The.  instru
d4b0: 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c  mented memory al
d4c0: 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b 73 20 66  locator checks f
d4d0: 6f 72 20 6d 69 73 75 73 65 20 6f 66 20 64 79 6e  or misuse of dyn
d4e0: 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74  amically allocat
d4f0: 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78  ed.  memory.  Ex
d500: 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75 73 65  amples of misuse
d510: 20 69 6e 63 6c 75 64 65 20 75 73 69 6e 67 20 6d   include using m
d520: 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74 20 69  emory after it i
d530: 73 20 66 72 65 65 64 2c 0a 20 20 77 72 69 74 69  s freed,.  writi
d540: 6e 67 20 6f 66 66 20 74 68 65 20 65 6e 64 73 20  ng off the ends 
d550: 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  of a memory allo
d560: 63 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20  cation, freeing 
d570: 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65 76 69  memory not previ
d580: 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64  ously.  obtained
d590: 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79   from the memory
d5a0: 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66   allocator, or f
d5b0: 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74 69 61  ailing to initia
d5c0: 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c  lize newly.  all
d5d0: 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d  ocated memory..}
d5e0: 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65  ..</tcl>.<a name
d5f0: 3d 22 77 69 6e 33 32 6f 70 74 69 6f 6e 73 22 3e  ="win32options">
d600: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 38 20 57 69 6e  </a>.<h2>1.8 Win
d610: 64 6f 77 73 2d 53 70 65 63 69 66 69 63 20 4f 70  dows-Specific Op
d620: 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e  tions</h2>.<tcl>
d630: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d640: 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 48   {SQLITE_WIN32_H
d650: 45 41 50 5f 43 52 45 41 54 45 7d 20 7b 0a 20 20  EAP_CREATE} {.  
d660: 54 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63  This option forc
d670: 65 73 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  es the Win32 nat
d680: 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ive memory alloc
d690: 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c  ator, when enabl
d6a0: 65 64 2c 20 74 6f 0a 20 20 63 72 65 61 74 65 20  ed, to.  create 
d6b0: 61 20 70 72 69 76 61 74 65 20 68 65 61 70 20 74  a private heap t
d6c0: 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d 65 6d 6f 72  o hold all memor
d6d0: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 7d  y allocations..}
d6e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
d6f0: 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d   {SQLITE_WIN32_M
d700: 41 4c 4c 4f 43 5f 56 41 4c 49 44 41 54 45 7d 20  ALLOC_VALIDATE} 
d710: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
d720: 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32  forces the Win32
d730: 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61   native memory a
d740: 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65  llocator, when e
d750: 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 6d 61 6b  nabled, to.  mak
d760: 65 20 73 74 72 61 74 65 67 69 63 20 63 61 6c 6c  e strategic call
d770: 73 20 69 6e 74 6f 20 74 68 65 20 48 65 61 70 56  s into the HeapV
d780: 61 6c 69 64 61 74 65 28 29 20 66 75 6e 63 74 69  alidate() functi
d790: 6f 6e 20 69 66 20 61 73 73 65 72 74 28 29 20 69  on if assert() i
d7a0: 73 20 61 6c 73 6f 0a 20 20 65 6e 61 62 6c 65 64  s also.  enabled
d7b0: 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a              ..}..</tcl>.