Documentation Source Text

Hex Artifact Content
Login

Artifact 611239b2b25b654b44b541e3b6a78e444863766c:


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 57 49 4e 33  ION {SQLITE_WIN3
2b90: 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68  2_MALLOC} {.  Th
2ba0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
2bb0: 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  s the use of the
2bc0: 20 57 69 6e 64 6f 77 73 20 48 65 61 70 20 41 50   Windows Heap AP
2bd0: 49 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20  I functions for 
2be0: 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61 74  memory.  allocat
2bf0: 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 74  ion instead of t
2c00: 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  he standard libr
2c10: 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64  ary malloc() and
2c20: 20 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 73   free() routines
2c30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2c40: 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54  ION {YYSTACKDEPT
2c50: 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70  H=<i>&lt;max_dep
2c60: 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  th&gt;</i>} {.  
2c70: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
2c80: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
2c90: 68 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29  h of the LALR(1)
2ca0: 20 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20   stack used by. 
2cb0: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
2cc0: 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20  within SQLite.  
2cd0: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
2ce0: 65 20 69 73 20 31 30 30 2e 20 20 41 20 74 79 70  e is 100.  A typ
2cf0: 69 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69  ical.  applicati
2d00: 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73  on will use less
2d10: 20 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c   than about 20 l
2d20: 65 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61  evels of the sta
2d30: 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73  ck..  Developers
2d40: 20 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69   whose applicati
2d50: 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20  ons contain SQL 
2d60: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
2d70: 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61  .  need more tha
2d80: 6e 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74  n 100 LALR(1) st
2d90: 61 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75  ack entries shou
2da0: 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63  ld seriously.  c
2db0: 6f 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f 72  onsider refactor
2dc0: 69 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61 73  ing their SQL as
2dd0: 20 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f   it is likely to
2de0: 20 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a   be well beyond.
2df0: 20 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66    the ability of
2e00: 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f   any human to co
2e10: 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63  mprehend..}.</tc
2e20: 6c 3e 0a 0a 3c 68 32 3e 31 2e 32 20 4f 70 74 69  l>..<h2>1.2 Opti
2e30: 6f 6e 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20  ons To Set Size 
2e40: 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  Limits</h2>..<p>
2e50: 54 68 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c  There are compil
2e60: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74  e-time options t
2e70: 68 61 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70  hat will set upp
2e80: 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65  er bounds.on the
2e90: 20 73 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75   sizes of variou
2ea0: 73 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 20  s structures in 
2eb0: 53 51 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d  SQLite.  The com
2ec0: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
2ed0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61  s normally set a
2ee0: 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
2ef0: 64 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 68  d that can be ch
2f00: 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d  anged.at run-tim
2f10: 65 20 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20  e on individual 
2f20: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
2f30: 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65  tions] using the
2f40: 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28  .[sqlite3_limit(
2f50: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70  )] interface.</p
2f60: 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c  >..<p>The compil
2f70: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66  e-time options f
2f80: 6f 72 20 73 65 74 74 69 6e 67 20 75 70 70 65 72  or setting upper
2f90: 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d   bounds are.[lim
2fa0: 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64  its | documented
2fb0: 20 73 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54   separately].  T
2fc0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20  he following is 
2fd0: 61 20 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76  a list of.the av
2fe0: 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73  ailable settings
2ff0: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
3000: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54   [SQLITE_MAX_ATT
3010: 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ACHED]  </li>.<l
3020: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
3030: 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  OLUMN]  </li>.<l
3040: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
3050: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20  OMPOUND_SELECT] 
3060: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
3070: 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  ITE_MAX_EXPR_DEP
3080: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
3090: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43  [SQLITE_MAX_FUNC
30a0: 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e  TION_ARG]  </li>
30b0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
30c0: 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  X_LENGTH]  </li>
30d0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
30e0: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
30f0: 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ENGTH]  </li>.<l
3100: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50  i> [SQLITE_MAX_P
3110: 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69  AGE_COUNT]  </li
3120: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
3130: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20  AX_SQL_LENGTH]  
3140: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
3150: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
3160: 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c  NUMBER]  </li>.<
3170: 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63  /ul>..<a name="c
3180: 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e  ontrolfeatures">
3190: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 33 20 4f 70 74  </a>.<h2>1.3 Opt
31a0: 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20  ions To Control 
31b0: 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72 61 63  Operating Charac
31c0: 74 65 72 69 73 74 69 63 73 3c 2f 68 32 3e 0a 0a  teristics</h2>..
31d0: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
31e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42  TION {SQLITE_4_B
31f0: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
3200: 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20  OC} {.  On most 
3210: 73 79 73 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c  systems, the mal
3220: 6c 6f 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c  loc() system cal
3230: 6c 20 72 65 74 75 72 6e 73 20 61 20 62 75 66 66  l returns a buff
3240: 65 72 20 74 68 61 74 20 69 73 0a 20 20 61 6c 69  er that is.  ali
3250: 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74  gned to an 8-byt
3260: 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 42 75 74  e boundary.  But
3270: 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73   on some systems
3280: 20 28 65 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d   (ex: windows) m
3290: 61 6c 6c 6f 63 28 29 0a 20 20 72 65 74 75 72 6e  alloc().  return
32a0: 73 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  s 4-byte aligned
32b0: 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 69 73 20   pointer.  This 
32c0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
32d0: 69 6f 6e 20 6d 75 73 74 20 62 65 20 75 73 65 64  ion must be used
32e0: 0a 20 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  .  on systems th
32f0: 61 74 20 72 65 74 75 72 6e 20 34 2d 62 79 74 65  at return 4-byte
3300: 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
3310: 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e  s from malloc().
3320: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3330: 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f  ON {SQLITE_CASE_
3340: 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20  SENSITIVE_LIKE} 
3350: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
3360: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  on is present, t
3370: 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hen the built-in
3380: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
3390: 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 73 65 20   will be.  case 
33a0: 73 65 6e 73 69 74 69 76 65 2e 20 20 54 68 69 73  sensitive.  This
33b0: 20 73 61 6d 65 20 65 66 66 65 63 74 20 63 61 6e   same effect can
33c0: 20 62 65 20 61 63 68 69 65 76 65 64 20 61 74 20   be achieved at 
33d0: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  run-time using. 
33e0: 20 74 68 65 20 5b 63 61 73 65 5f 73 65 6e 73 69   the [case_sensi
33f0: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
3400: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
3410: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 52  TION {SQLITE_DIR
3420: 45 43 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41  ECT_OVERFLOW_REA
3430: 44 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  D} {.  When this
3440: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
3450: 6e 74 2c 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74  nt, content cont
3460: 61 69 6e 65 64 20 69 6e 0a 20 20 5b 6f 76 65 72  ained in.  [over
3470: 66 6c 6f 77 20 70 61 67 65 73 5d 20 6f 66 20 74  flow pages] of t
3480: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
3490: 20 69 73 20 72 65 61 64 20 64 69 72 65 63 74 6c   is read directl
34a0: 79 20 66 72 6f 6d 20 64 69 73 6b 2c 0a 20 20 62  y from disk,.  b
34b0: 79 70 61 73 73 69 6e 67 20 74 68 65 20 5b 70 61  ypassing the [pa
34c0: 67 65 20 63 61 63 68 65 5d 2c 20 64 75 72 69 6e  ge cache], durin
34d0: 67 20 72 65 61 64 20 74 72 61 6e 73 61 63 74 69  g read transacti
34e0: 6f 6e 73 2e 20 20 49 6e 20 61 70 70 6c 69 63 61  ons.  In applica
34f0: 74 69 6f 6e 73 0a 20 20 74 68 61 74 20 64 6f 20  tions.  that do 
3500: 61 20 6c 6f 74 20 6f 66 20 72 65 61 64 73 20 6f  a lot of reads o
3510: 66 20 6c 61 72 67 65 20 42 4c 4f 42 73 2c 20 74  f large BLOBs, t
3520: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 69 67 68 74  his option might
3530: 20 69 6d 70 72 6f 76 65 20 72 65 61 64 0a 20 20   improve read.  
3540: 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 7d 0a 0a  performance..}..
3550: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3560: 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e 41  SQLITE_HAVE_ISNA
3570: 4e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  N} {.  If this o
3580: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
3590: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 77 69  , then SQLite wi
35a0: 6c 6c 20 75 73 65 20 74 68 65 20 69 73 6e 61 6e  ll use the isnan
35b0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d  () function from
35c0: 0a 20 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61  .  the system ma
35d0: 74 68 20 6c 69 62 72 61 72 79 2e 20 20 57 69 74  th library.  Wit
35e0: 68 6f 75 74 20 74 68 69 73 20 6f 70 74 69 6f 6e  hout this option
35f0: 20 28 74 68 65 20 64 65 66 61 75 6c 74 20 62 65   (the default be
3600: 68 61 76 69 6f 72 29 0a 20 20 53 51 4c 69 74 65  havior).  SQLite
3610: 20 75 73 65 73 20 69 74 73 20 6f 77 6e 20 69 6e   uses its own in
3620: 74 65 72 6e 61 6c 20 69 6d 70 6c 65 6d 65 6e 74  ternal implement
3630: 61 74 69 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29  ation of isnan()
3640: 2e 20 20 53 51 4c 69 74 65 20 75 73 65 73 0a 20  .  SQLite uses. 
3650: 20 69 74 73 20 6f 77 6e 20 69 6e 74 65 72 6e 61   its own interna
3660: 6c 20 69 73 6e 61 6e 28 29 20 69 6d 70 6c 65 6d  l isnan() implem
3670: 65 6e 74 61 74 69 6f 6e 20 62 79 20 64 65 66 61  entation by defa
3680: 75 6c 74 20 62 65 63 61 75 73 65 20 6f 66 20 70  ult because of p
3690: 61 73 74 0a 20 20 70 72 6f 62 6c 65 6d 73 20 77  ast.  problems w
36a0: 69 74 68 20 73 79 73 74 65 6d 20 69 73 6e 61 6e  ith system isnan
36b0: 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a  () functions..}.
36c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
36d0: 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52  {SQLITE_OS_OTHER
36e0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
36f0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  t;</i>} {.  The 
3700: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
3710: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69 74 73  Lite to omit its
3720: 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74   built-in operat
3730: 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
3740: 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e 69 78  faces.  for Unix
3750: 2c 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f  , Windows, and O
3760: 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75 6c 74  S/2.  The result
3770: 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ing library will
3780: 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75 6c 74   have no default
3790: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20  .  [sqlite3_vfs 
37a0: 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  | operating syst
37b0: 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e 20 20  em interface].  
37c0: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
37d0: 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74 65 33  t use.  [sqlite3
37e0: 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
37f0: 20 74 6f 20 72 65 67 69 73 74 65 72 20 61 6e 20   to register an 
3800: 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65  appropriate inte
3810: 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20 20 75  rface before.  u
3820: 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20 41 70  sing SQLite.  Ap
3830: 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20  plications must 
3840: 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c  also supply impl
3850: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20  ementations for 
3860: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f  the.  [sqlite3_o
3870: 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73  s_init()] and [s
3880: 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d  qlite3_os_end()]
3890: 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54 68   interfaces.  Th
38a0: 65 20 75 73 75 61 6c 20 70 72 61 63 74 69 63 65  e usual practice
38b0: 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20 73 75  .  is for the su
38c0: 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65 33 5f  pplied [sqlite3_
38d0: 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e  os_init()] to in
38e0: 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 66  voke [sqlite3_vf
38f0: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e 0a 20  s_register()].. 
3900: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 75 74   SQLite will aut
3910: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b  omatically invok
3920: 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  e [sqlite3_os_in
3930: 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20 69 6e  it()] when it in
3940: 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68  itializes...  Th
3950: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 79 70  is option is typ
3960: 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68 65 6e  ically used when
3970: 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65   building SQLite
3980: 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64 65 64   for an embedded
3990: 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69 74 68  .  platform with
39a0: 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72 61 74   a custom operat
39b0: 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43  ing system..}..C
39c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
39d0: 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c  QLITE_SECURE_DEL
39e0: 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f  ETE} {.  This co
39f0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
3a00: 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 65  n changes the de
3a10: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66  fault setting of
3a20: 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64   the.  [secure_d
3a30: 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e 20 20  elete pragma].  
3a40: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
3a50: 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 73 65   is not used, se
3a60: 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61  cure_delete defa
3a70: 75 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e 20 20  ults.  to off.  
3a80: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
3a90: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 73 65 63   is present, sec
3aa0: 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75  ure_delete defau
3ab0: 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54 68  lts to on...  Th
3ac0: 65 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  e secure_delete 
3ad0: 73 65 74 74 69 6e 67 20 63 61 75 73 65 73 20 64  setting causes d
3ae0: 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74 20 74  eleted content t
3af0: 6f 20 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e  o be overwritten
3b00: 20 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e 20 20   with.  zeros.  
3b10: 54 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c 6c  There is a small
3b20: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
3b30: 61 6c 74 79 20 66 6f 72 20 74 68 69 73 20 73 69  alty for this si
3b40: 6e 63 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 49  nce additional I
3b50: 2f 4f 0a 20 20 6d 75 73 74 20 6f 63 63 75 72 2e  /O.  must occur.
3b60: 20 20 4f 6e 20 74 68 65 20 6f 74 68 65 72 20 68    On the other h
3b70: 61 6e 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65  and, secure_dele
3b80: 74 65 20 63 61 6e 20 70 72 65 76 65 6e 74 20 73  te can prevent s
3b90: 65 6e 73 69 74 69 76 65 20 0a 20 20 69 6e 66 6f  ensitive .  info
3ba0: 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 6c 69 6e  rmation from lin
3bb0: 67 65 72 69 6e 67 20 69 6e 20 75 6e 75 73 65 64  gering in unused
3bc0: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 64 61   parts of the da
3bd0: 74 61 62 61 73 65 20 66 69 6c 65 20 61 66 74 65  tabase file afte
3be0: 72 20 69 74 0a 20 20 68 61 73 20 61 6c 6c 65 67  r it.  has alleg
3bf0: 65 64 6c 79 20 62 65 65 6e 20 64 65 6c 65 74 65  edly been delete
3c00: 64 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75  d.  See the docu
3c10: 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65  mentation on the
3c20: 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74  .  [secure_delet
3c30: 65 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61 64  e pragma] for ad
3c40: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
3c50: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
3c60: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3c70: 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c  THREADSAFE=<i>&l
3c80: 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74  t;0 or 1 or 2&gt
3c90: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
3ca0: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
3cb0: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63  whether or not c
3cc0: 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20  ode is included 
3cd0: 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65  in SQLite to.  e
3ce0: 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72  nable it to oper
3cf0: 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20  ate safely in a 
3d00: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
3d10: 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a  vironment.  The.
3d20: 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c    default is SQL
3d30: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
3d40: 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20 66   which is safe f
3d50: 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74  or use in a mult
3d60: 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69  ithreaded.  envi
3d70: 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63  ronment.  When c
3d80: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
3d90: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
3da0: 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f   all mutexing co
3db0: 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20  de.  is omitted 
3dc0: 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66 65  and it is unsafe
3dd0: 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69   to use SQLite i
3de0: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
3df0: 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65  d program..  Whe
3e00: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
3e10: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
3e20: 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20  E=2, SQLite can 
3e30: 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c  be used in a mul
3e40: 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f  tithreaded.  pro
3e50: 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20  gram so long as 
3e60: 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61  no two threads a
3e70: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
3e80: 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61  e same.  [databa
3e90: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28  se connection] (
3ea0: 6f 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65 64  or any [prepared
3eb0: 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65 72   statements] der
3ec0: 69 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61 74  ived from.  that
3ed0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
3ee0: 74 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61 6d  tion) at the sam
3ef0: 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75  e time...  To pu
3f00: 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61 79  t it another way
3f10: 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  , SQLITE_THREADS
3f20: 41 46 45 3d 31 20 73 65 74 73 20 74 68 65 20 64  AFE=1 sets the d
3f30: 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64  efault.  [thread
3f40: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72  ing mode] to Ser
3f50: 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54 45  ialized.  SQLITE
3f60: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 73 65  _THREADSAFE=2 se
3f70: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  ts the default. 
3f80: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
3f90: 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61  ] to Multi-threa
3fa0: 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54 45  ded.  And SQLITE
3fb0: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 73 65  _THREADSAFE=0 se
3fc0: 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61 64  ts the.  [thread
3fd0: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e  ing mode] to Sin
3fe0: 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20  gle-threaded... 
3ff0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53 51   The value of SQ
4000: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20  LITE_THREADSAFE 
4010: 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65  can be determine
4020: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20  d at run-time.  
4030: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
4040: 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d  e3_threadsafe()]
4050: 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 57   interface...  W
4060: 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20 62  hen SQLite has b
4070: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
4080: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
4090: 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54  AFE=1 or.  SQLIT
40a0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 74  E_THREADSAFE=2 t
40b0: 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64 69  hen the [threadi
40c0: 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62  ng mode].  can b
40d0: 65 20 61 6c 74 65 72 65 64 20 61 74 20 72 75 6e  e altered at run
40e0: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  -time using the 
40f0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
4100: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67  )] interface tog
4110: 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e 65  ether.  with one
4120: 20 6f 66 20 74 68 65 73 65 20 76 65 72 62 73 3a   of these verbs:
4130: 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b  ..  <ul>.  <li>[
4140: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49  SQLITE_CONFIG_SI
4150: 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c  NGLETHREAD].  <l
4160: 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  i>[SQLITE_CONFIG
4170: 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20 20  _MULTITHREAD].  
4180: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
4190: 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20  IG_SERIALIZED]. 
41a0: 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53   </ul>..  The [S
41b0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54  QLITE_OPEN_NOMUT
41c0: 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54  EX] and.  [SQLIT
41d0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
41e0: 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69  ] flags to [sqli
41f0: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63  te3_open_v2()] c
4200: 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 0a  an also be used.
4210: 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20    to adjust the 
4220: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
4230: 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 5b   of individual [
4240: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
4250: 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74  ions].  at run-t
4260: 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61  ime...  Note tha
4270: 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  t when SQLite is
4280: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
4290: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
42a0: 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20 74  =0, the code.  t
42b0: 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74 68  o make SQLite th
42c0: 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69 74  readsafe is omit
42d0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
42e0: 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  ld.  When this o
42f0: 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20 69  ccurs,.  it is i
4300: 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61  mpossible to cha
4310: 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  nge the [threadi
4320: 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61 72  ng mode] at star
4330: 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69  t-time or run-ti
4340: 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20 5b  me...  See the [
4350: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
4360: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
4370: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
4380: 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73  ormation.  on as
4390: 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20 53  pects of using S
43a0: 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69  QLite in a multi
43b0: 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e  threaded environ
43c0: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
43d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
43e0: 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c  TEMP_STORE=<i>&l
43f0: 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67 74  t;0 through 3&gt
4400: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
4410: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
4420: 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61 72  whether temporar
4430: 79 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72  y files are stor
4440: 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20  ed on disk or.  
4450: 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20  in memory.  The 
4460: 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61 72  meanings for var
4470: 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f 66  ious settings of
4480: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
4490: 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65 20  me.  option are 
44a0: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c  as follows:..  <
44b0: 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e  table cellpaddin
44c0: 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31 22  g="2" border="1"
44d0: 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49  >.  <tr><th>SQLI
44e0: 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74  TE_TEMP_STORE</t
44f0: 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74  h><th>Meaning</t
4500: 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  h></tr>.  <tr><t
4510: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
4520: 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79  >0</td><td>Alway
4530: 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20  s use temporary 
4540: 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  files</td></tr>.
4550: 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d    <tr><td align=
4560: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
4570: 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79 20  td>Use files by 
4580: 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f  default but allo
4590: 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  w the.  [PRAGMA 
45a0: 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d  temp_store] comm
45b0: 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c  and to override<
45c0: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
45d0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
45e0: 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65  r">2</td><td>Use
45f0: 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61 75   memory by defau
4600: 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65  lt but allow the
4610: 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f  .  [PRAGMA temp_
4620: 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74  store] command t
4630: 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c  o override</td><
4640: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
4650: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c  lign="center">3<
4660: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
4670: 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f  se memory</td></
4680: 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a  tr>.  </table>..
4690: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65    The default se
46a0: 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20 20  tting is 1.  .  
46b0: 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  Additional infor
46c0: 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f  mation can be fo
46d0: 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72  und in [tempstor
46e0: 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68 74  e | tempfiles.ht
46f0: 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ml]..}..COMPILE_
4700: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
4710: 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RACE_SIZE_LIMIT=
4720: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  <i>N</i>} {.  If
4730: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
4740: 65 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73 69  efined to a posi
4750: 74 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69 3e  tive integer <i>
4760: 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65 20  N</i>, then the 
4770: 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72 69  length of.  stri
4780: 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68 61  ngs and BLOB tha
4790: 74 20 61 72 65 20 65 78 70 61 6e 64 65 64 20 69  t are expanded i
47a0: 6e 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69  nto parameters i
47b0: 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 0a  n the output of.
47c0: 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65    [sqlite3_trace
47d0: 28 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20 74  ()] is limited t
47e0: 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73  o <i>N</i> bytes
47f0: 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  .  .}..COMPILE_O
4800: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
4810: 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73 20  E_URI} {.  This 
4820: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
4830: 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d  e [URI filename]
4840: 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20 74   process logic t
4850: 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20  o be enabled by 
4860: 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a  .  default.  .}.
4870: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
4880: 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73  ="enablefeatures
4890: 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f  "></a>.<h2>1.4 O
48a0: 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65  ptions To Enable
48b0: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
48c0: 6c 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68  ly Turned Off</h
48d0: 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  2>..<tcl>.COMPIL
48e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
48f0: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
4900: 52 49 54 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66  RITY} {.  [URI f
4910: 69 6c 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c  ilenames] normal
4920: 6c 79 20 74 68 72 6f 77 20 61 6e 20 65 72 72 6f  ly throw an erro
4930: 72 20 69 73 20 74 68 65 20 61 75 74 68 6f 72 69  r is the authori
4940: 74 79 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20  ty section is.  
4950: 6e 6f 74 20 65 69 74 68 65 72 20 65 6d 70 74 79  not either empty
4960: 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e   or "localhost".
4970: 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51    However, if SQ
4980: 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
4990: 20 77 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49   with.  the SQLI
49a0: 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54  TE_ALLOW_URI_AUT
49b0: 48 4f 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74  HORITY compile-t
49c0: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
49d0: 20 74 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f   the URI is.  co
49e0: 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55  nverted into a U
49f0: 6e 69 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f  niform Naming Co
4a00: 6e 76 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66  nvention (UNC) f
4a10: 69 6c 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73  ilename and pass
4a20: 65 64 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65  ed.  down to the
4a30: 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72   underlying oper
4a40: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61  ating system tha
4a50: 74 20 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20  t way.  .  <p>. 
4a60: 20 53 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72   Some future ver
4a70: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
4a80: 6d 61 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e  may change to en
4a90: 61 62 6c 65 20 74 68 69 73 20 66 65 61 74 75 72  able this featur
4aa0: 65 0a 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  e.  by default..
4ab0: 7d 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  }.COMPILE_OPTION
4ac0: 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43   {SQLITE_ALLOW_C
4ad0: 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
4ae0: 41 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  AN=<i>&lt;0 or 1
4af0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4b00: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20  is C-preprocess 
4b10: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
4b20: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74   the default set
4b30: 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53  ting of the.  [S
4b40: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56  QLITE_CONFIG_COV
4b50: 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
4b60: 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  ] configuration 
4b70: 73 65 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66  setting.  It def
4b80: 61 75 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e  aults.  to 1 (on
4b90: 29 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68  ) which means th
4ba0: 61 74 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69  at covering indi
4bb0: 63 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ces are used for
4bc0: 20 66 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63   full table.  sc
4bd0: 61 6e 73 20 77 68 65 72 65 20 70 6f 73 73 69 62  ans where possib
4be0: 6c 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  le, in order to 
4bf0: 72 65 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69  reduce I/O and i
4c00: 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e  mprove performan
4c10: 63 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74  ce..  However, t
4c20: 68 65 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65  he use of a cove
4c30: 72 69 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61  ring index for a
4c40: 20 66 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20   full scan will 
4c50: 63 61 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20  cause results.  
4c60: 74 6f 20 61 70 70 65 61 72 20 69 6e 20 61 20 64  to appear in a d
4c70: 69 66 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66  ifferent order f
4c80: 72 6f 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63  rom legacy, whic
4c90: 68 20 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f  h could cause so
4ca0: 6d 65 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c  me.  (incorrectl
4cb0: 79 2d 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20  y-coded) legacy 
4cc0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
4cd0: 62 72 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74  break.  Hence, t
4ce0: 68 65 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e  he covering.  in
4cf0: 64 65 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20  dex scan option 
4d00: 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20  can be disabled 
4d10: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
4d20: 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  on systems that 
4d30: 77 68 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69  what.  to minimi
4d40: 7a 65 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66  ze their risk of
4d50: 20 65 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73   exposing errors
4d60: 20 69 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69   in legacy appli
4d70: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
4d80: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4d90: 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41  TE_ENABLE_8_3_NA
4da0: 4d 45 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20  MES=<i>&lt;1 or 
4db0: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49  2&gt;</i>} {.  I
4dc0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
4dd0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
4de0: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74  efined, then ext
4df0: 72 61 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63  ra code is.  inc
4e00: 6c 75 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77  luded that allow
4e10: 73 20 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63  s SQLite to func
4e20: 74 69 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79  tion on a filesy
4e30: 73 74 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79  stem that.  only
4e40: 20 73 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c   support 8+3 fil
4e50: 65 6e 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20  enames.  If the 
4e60: 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61  value of this ma
4e70: 63 72 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e  cro is 1,.  then
4e80: 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   the default beh
4e90: 61 76 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74  avior is to cont
4ea0: 69 6e 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67  inue to use long
4eb0: 20 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20   filenames and. 
4ec0: 20 74 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33   to only use 8+3
4ed0: 20 66 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68   filenames if th
4ee0: 65 20 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f  e .  database co
4ef0: 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e  nnection is open
4f00: 65 64 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69  ed using [URI fi
4f10: 6c 65 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20  lenames] with.  
4f20: 74 68 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d  the "<tt>8_3_nam
4f30: 65 73 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79  es=1</tt>" query
4f40: 20 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20   parameter.  If 
4f50: 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74  the value of.  t
4f60: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20  his macro is 2, 
4f70: 74 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20  then the use of 
4f80: 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65  8+3 filenames be
4f90: 63 6f 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c  comes the defaul
4fa0: 74 0a 20 20 62 75 74 20 6d 61 79 20 62 65 20 64  t.  but may be d
4fb0: 69 73 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67  isabled on using
4fc0: 20 74 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d   the <tt>8_3_nam
4fd0: 65 73 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20  es=0</tt> query 
4fe0: 70 61 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65  parameter..  See
4ff0: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
5000: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
5010: 4c 45 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d  LE_ATOMIC_WRITE}
5020: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
5030: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
5040: 6f 20 69 73 20 64 65 66 69 6e 65 64 20 61 6e 64  o is defined and
5050: 20 69 66 20 74 68 65 0a 20 20 78 44 65 76 69 63   if the.  xDevic
5060: 65 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73  eCharacteristics
5070: 20 6d 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69   method of [sqli
5080: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
5090: 6f 62 6a 65 63 74 20 66 6f 72 0a 20 20 61 20 64  object for.  a d
50a0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 72 65 70  atabase file rep
50b0: 6f 72 74 73 20 28 76 69 61 20 6f 6e 65 20 6f 66  orts (via one of
50c0: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43   the [SQLITE_IOC
50d0: 41 50 5f 41 54 4f 4d 49 43 5d 20 62 69 74 73 29  AP_ATOMIC] bits)
50e0: 0a 20 20 74 68 61 74 20 74 68 65 20 66 69 6c 65  .  that the file
50f0: 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20  system supports 
5100: 61 74 6f 6d 69 63 20 77 72 69 74 65 73 20 61 6e  atomic writes an
5110: 64 20 69 66 20 61 20 74 72 61 6e 73 61 63 74 69  d if a transacti
5120: 6f 6e 0a 20 20 69 6e 76 6f 6c 76 65 73 20 61 20  on.  involves a 
5130: 63 68 61 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61  change to only a
5140: 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20   single page of 
5150: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
5160: 65 2c 0a 20 20 74 68 65 6e 20 74 68 65 20 74 72  e,.  then the tr
5170: 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74  ansaction commit
5180: 73 20 77 69 74 68 20 6a 75 73 74 20 61 20 73 69  s with just a si
5190: 6e 67 6c 65 20 77 72 69 74 65 20 72 65 71 75 65  ngle write reque
51a0: 73 74 20 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65  st of.  a single
51b0: 20 70 61 67 65 20 6f 66 20 74 68 65 20 64 61 74   page of the dat
51c0: 61 62 61 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c  abase and no rol
51d0: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73  lback journal is
51e0: 20 63 72 65 61 74 65 64 0a 20 20 6f 72 20 77 72   created.  or wr
51f0: 69 74 74 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73  itten.  On files
5200: 79 73 74 65 6d 73 20 74 68 61 74 20 73 75 70 70  ystems that supp
5210: 6f 72 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65  ort atomic write
5220: 73 2c 20 74 68 69 73 0a 20 20 6f 70 74 69 6d 69  s, this.  optimi
5230: 7a 61 74 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c  zation can resul
5240: 74 20 69 6e 20 73 69 67 6e 69 66 69 63 61 6e 74  t in significant
5250: 20 73 70 65 65 64 20 69 6d 70 72 6f 76 65 6d 65   speed improveme
5260: 6e 74 73 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20  nts for.  small 
5270: 75 70 64 61 74 65 73 2e 20 20 48 6f 77 65 76 65  updates.  Howeve
5280: 72 2c 20 66 65 77 20 66 69 6c 65 73 79 73 74 65  r, few filesyste
5290: 6d 73 20 73 75 70 70 6f 72 74 20 74 68 69 73 20  ms support this 
52a0: 63 61 70 61 62 69 6c 69 74 79 0a 20 20 61 6e 64  capability.  and
52b0: 20 74 68 65 20 63 6f 64 65 20 70 61 74 68 73 20   the code paths 
52c0: 74 68 61 74 20 63 68 65 63 6b 20 66 6f 72 20 74  that check for t
52d0: 68 69 73 20 63 61 70 61 62 69 6c 69 74 79 20 73  his capability s
52e0: 6c 6f 77 20 64 6f 77 6e 20 77 72 69 74 65 0a 20  low down write. 
52f0: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20   performance on 
5300: 73 79 73 74 65 6d 73 20 74 68 61 74 20 6c 61 63  systems that lac
5310: 6b 20 61 74 6f 6d 69 63 20 77 72 69 74 65 20 63  k atomic write c
5320: 61 70 61 62 69 6c 69 74 79 2c 20 73 6f 20 74 68  apability, so th
5330: 69 73 0a 20 20 66 65 61 74 75 72 65 20 69 73 20  is.  feature is 
5340: 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61  disabled by defa
5350: 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ult..}..COMPILE_
5360: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
5370: 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54  NABLE_COLUMN_MET
5380: 41 44 41 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20  ADATA} {.  When 
5390: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
53a0: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
53b0: 69 6e 65 64 2c 20 53 51 4c 69 74 65 20 69 6e 63  ined, SQLite inc
53c0: 6c 75 64 65 73 20 73 6f 6d 65 0a 20 20 61 64 64  ludes some.  add
53d0: 69 74 69 6f 6e 61 6c 20 41 50 49 73 20 74 68 61  itional APIs tha
53e0: 74 20 70 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e  t provide conven
53f0: 69 65 6e 74 20 61 63 63 65 73 73 20 74 6f 20 6d  ient access to m
5400: 65 74 61 2d 64 61 74 61 20 61 62 6f 75 74 0a 20  eta-data about. 
5410: 20 74 61 62 6c 65 73 20 61 6e 64 20 71 75 65 72   tables and quer
5420: 69 65 73 2e 20 20 54 68 65 20 41 50 49 73 20 74  ies.  The APIs t
5430: 68 61 74 20 61 72 65 20 65 6e 61 62 6c 65 64 20  hat are enabled 
5440: 62 79 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  by this option a
5450: 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c  re:..  <ul>.  <l
5460: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
5470: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
5480: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
5490: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
54a0: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36  _database_name16
54b0: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
54c0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
54d0: 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c  _table_name()] <
54e0: 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c  /li>.  <li> [sql
54f0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
5500: 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69  e_name16()] </li
5510: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
5520: 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
5530: 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  name()] </li>.  
5540: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
5550: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
5560: 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  16()] </li>.  <l
5570: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 74 61 62 6c  i> [sqlite3_tabl
5580: 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
5590: 61 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75  a()] </li>.  </u
55a0: 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  l>.}..COMPILE_OP
55b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
55c0: 42 4c 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d  BLE_EXPLAIN_COMM
55d0: 45 4e 54 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ENTS} {.  This o
55e0: 70 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61  ption adds extra
55f0: 20 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65   logic to SQLite
5600: 20 74 68 61 74 20 69 6e 73 65 72 74 73 20 63 6f   that inserts co
5610: 6d 6d 65 6e 74 20 74 65 78 74 20 69 6e 74 6f 20  mment text into 
5620: 74 68 65 0a 20 20 6f 75 74 70 75 74 20 6f 66 20  the.  output of 
5630: 5b 45 58 50 4c 41 49 4e 5d 2e 20 20 54 68 65 73  [EXPLAIN].  Thes
5640: 65 20 65 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73  e extra comments
5650: 20 75 73 65 20 65 78 74 72 61 20 6d 65 6d 6f 72   use extra memor
5660: 79 2c 20 74 68 75 73 0a 20 20 6d 61 6b 69 6e 67  y, thus.  making
5670: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
5680: 6d 65 6e 74 73 5d 20 6c 61 72 67 65 72 20 61 6e  ments] larger an
5690: 64 20 76 65 72 79 20 73 6c 69 67 68 74 6c 79 20  d very slightly 
56a0: 73 6c 6f 77 65 72 2c 20 61 6e 64 20 73 6f 20 74  slower, and so t
56b0: 68 65 79 20 61 72 65 0a 20 20 74 75 72 6e 65 64  hey are.  turned
56c0: 20 6f 66 66 20 62 79 20 64 65 66 61 75 6c 74 20   off by default 
56d0: 61 6e 64 20 69 6e 20 6d 6f 73 74 20 61 70 70 6c  and in most appl
56e0: 69 63 61 74 69 6f 6e 2e 20 20 42 75 74 20 73 6f  ication.  But so
56f0: 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c  me applications,
5700: 20 73 75 63 68 0a 20 20 61 73 20 74 68 65 20 5b   such.  as the [
5710: 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65  command-line she
5720: 6c 6c 5d 20 66 6f 72 20 53 51 4c 69 74 65 2c 20  ll] for SQLite, 
5730: 76 61 6c 75 65 20 63 6c 61 72 69 74 79 20 6f 66  value clarity of
5740: 20 45 58 50 4c 41 49 4e 20 6f 75 74 70 75 74 0a   EXPLAIN output.
5750: 20 20 6f 76 65 72 20 72 61 77 20 70 65 72 66 6f    over raw perfo
5760: 72 6d 61 6e 63 65 20 61 6e 64 20 73 6f 20 74 68  rmance and so th
5770: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
5780: 6f 70 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61  option is availa
5790: 62 6c 65 20 74 6f 20 74 68 65 6d 2e 0a 20 20 54  ble to them..  T
57a0: 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
57b0: 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54  _EXPLAIN_COMMENT
57c0: 53 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  S compile-time o
57d0: 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 65 6e  ption is also en
57e0: 61 62 6c 65 64 0a 20 20 61 75 74 6f 6d 61 74 69  abled.  automati
57f0: 63 61 6c 6c 79 20 69 66 20 5b 53 51 4c 49 54 45  cally if [SQLITE
5800: 5f 44 45 42 55 47 5d 20 69 73 20 65 6e 61 62 6c  _DEBUG] is enabl
5810: 65 64 2e 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f  ed..}...COMPILE_
5820: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
5830: 4e 41 42 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20  NABLE_FTS3} {.  
5840: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
5850: 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74   is defined in t
5860: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
5870: 5d 2c 20 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f  ], version 3.  o
5880: 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20  f the full-text 
5890: 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73  search engine is
58a0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
58b0: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
58c0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
58d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
58e0: 42 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48  BLE_FTS3_PARENTH
58f0: 45 53 49 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ESIS} {.  This o
5900: 70 74 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74  ption modifies t
5910: 68 65 20 71 75 65 72 79 20 70 61 74 74 65 72 6e  he query pattern
5920: 20 70 61 72 73 65 72 20 69 6e 20 46 54 53 33 20   parser in FTS3 
5930: 73 75 63 68 20 74 68 61 74 20 69 74 0a 20 20 73  such that it.  s
5940: 75 70 70 6f 72 74 73 20 6f 70 65 72 61 74 6f 72  upports operator
5950: 73 20 41 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69  s AND and NOT (i
5960: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  n addition to th
5970: 65 20 75 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e  e usual OR and N
5980: 45 41 52 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20  EAR).  and also 
5990: 61 6c 6c 6f 77 73 20 71 75 65 72 79 20 65 78 70  allows query exp
59a0: 72 65 73 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74  ressions to cont
59b0: 61 69 6e 20 6e 65 73 74 65 64 20 70 61 72 65 6e  ain nested paren
59c0: 74 68 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  thesis..}..COMPI
59d0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
59e0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b  E_ENABLE_FTS4} {
59f0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
5a00: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69  ion is defined i
5a10: 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  n the [amalgamat
5a20: 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33  ion], versions 3
5a30: 20 61 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20   and 4.  of the 
5a40: 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68  full-text search
5a50: 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64   engine is added
5a60: 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75   to the build au
5a70: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a  tomatically..}..
5a80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5a90: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43  SQLITE_ENABLE_IC
5aa0: 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  U} {.  This opti
5ab0: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 0a 20  on causes the . 
5ac0: 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 69 63 75   [http://www.icu
5ad0: 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 20 7c 20  -project.org/ | 
5ae0: 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f  International Co
5af0: 6d 70 6f 6e 65 6e 74 73 20 66 6f 72 20 55 6e 69  mponents for Uni
5b00: 63 6f 64 65 5d 0a 20 20 6f 72 20 22 49 43 55 22  code].  or "ICU"
5b10: 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 53 51   extension to SQ
5b20: 4c 69 74 65 20 74 6f 20 62 65 20 61 64 64 65 64  Lite to be added
5b30: 20 74 6f 20 74 68 65 20 62 75 69 6c 64 2e 20 20   to the build.  
5b40: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5b50: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
5b60: 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a 20 20 57  E_IOTRACE} {.  W
5b70: 68 65 6e 20 62 6f 74 68 20 74 68 65 20 53 51 4c  hen both the SQL
5b80: 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65  ite core and the
5b90: 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20 49   [Command Line I
5ba0: 6e 74 65 72 66 61 63 65 5d 20 28 43 4c 49 29 20  nterface] (CLI) 
5bb0: 61 72 65 20 62 6f 74 68 20 0a 20 20 63 6f 6d 70  are both .  comp
5bc0: 69 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 6f  iled with this o
5bd0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20  ption, then the 
5be0: 43 4c 49 20 70 72 6f 76 69 64 65 73 20 61 6e 20  CLI provides an 
5bf0: 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64 0a 20 20  extra command.  
5c00: 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61 63 65 22  named ".iotrace"
5c10: 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 61   that provides a
5c20: 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f   low-level log o
5c30: 66 20 49 2f 4f 20 61 63 74 69 76 69 74 79 2e 0a  f I/O activity..
5c40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
5c50: 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e   experimental an
5c60: 64 20 6d 61 79 20 62 65 20 64 69 73 63 6f 6e 74  d may be discont
5c70: 69 6e 75 65 64 20 69 6e 20 61 20 66 75 74 75 72  inued in a futur
5c80: 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f  e release..}..CO
5c90: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5ca0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b  LITE_ENABLE_LOCK
5cb0: 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a 20 20 54  ING_STYLE} {.  T
5cc0: 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
5cd0: 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  es additional lo
5ce0: 67 69 63 20 69 6e 20 74 68 65 20 4f 53 20 69 6e  gic in the OS in
5cf0: 74 65 72 66 61 63 65 20 6c 61 79 65 72 20 66 6f  terface layer fo
5d00: 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e 20 54 68  r.  Mac OS X. Th
5d10: 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67  e additional log
5d20: 69 63 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64  ic attempts to d
5d30: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 79 70  etermine the typ
5d40: 65 20 6f 66 20 74 68 65 0a 20 20 75 6e 64 65 72  e of the.  under
5d50: 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d  lying filesystem
5d60: 20 61 6e 64 20 63 68 6f 6f 73 65 20 61 6e 64 20   and choose and 
5d70: 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 63 6b  alternative lock
5d80: 69 6e 67 20 73 74 72 61 74 65 67 79 0a 20 20 74  ing strategy.  t
5d90: 68 61 74 20 77 6f 72 6b 73 20 63 6f 72 72 65 63  hat works correc
5da0: 74 6c 79 20 66 6f 72 20 74 68 61 74 20 66 69 6c  tly for that fil
5db0: 65 73 79 73 74 65 6d 20 74 79 70 65 2e 20 46 69  esystem type. Fi
5dc0: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74  ve locking strat
5dd0: 65 67 69 65 73 20 0a 20 20 61 72 65 20 61 76 61  egies .  are ava
5de0: 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a  ilable:..  <ul>.
5df0: 20 20 20 20 3c 6c 69 3e 20 50 4f 53 49 58 20 6c      <li> POSIX l
5e00: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68  ocking style. Th
5e10: 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  is is the defaul
5e20: 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20  t locking style 
5e30: 61 6e 64 20 74 68 65 0a 20 20 20 20 20 20 20 20  and the.        
5e40: 20 73 74 79 6c 65 20 75 73 65 64 20 62 79 20 6f   style used by o
5e50: 74 68 65 72 20 28 6e 6f 6e 20 4d 61 63 20 4f 53  ther (non Mac OS
5e60: 20 58 29 20 55 6e 69 78 65 73 2e 20 4c 6f 63 6b   X) Unixes. Lock
5e70: 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61  s are obtained a
5e80: 6e 64 20 0a 20 20 20 20 20 20 20 20 20 72 65 6c  nd .         rel
5e90: 65 61 73 65 64 20 75 73 69 6e 67 20 74 68 65 20  eased using the 
5ea0: 66 63 6e 74 6c 28 29 20 73 79 73 74 65 6d 20 63  fcntl() system c
5eb0: 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 41  all...    <li> A
5ec0: 46 50 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  FP locking style
5ed0: 2e 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73  . This locking s
5ee0: 74 79 6c 65 20 69 73 20 75 73 65 64 20 66 6f 72  tyle is used for
5ef0: 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 20 0a 20   network file . 
5f00: 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 73 20          systems 
5f10: 74 68 61 74 20 75 73 65 20 74 68 65 20 41 46 50  that use the AFP
5f20: 20 28 41 70 70 6c 65 20 46 69 6c 69 6e 67 20 50   (Apple Filing P
5f30: 72 6f 74 6f 63 6f 6c 29 20 70 72 6f 74 6f 63 6f  rotocol) protoco
5f40: 6c 2e 20 4c 6f 63 6b 73 0a 20 20 20 20 20 20 20  l. Locks.       
5f50: 20 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 62    are obtained b
5f60: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 6c 69  y calling the li
5f70: 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 5f  brary function _
5f80: 41 46 50 46 53 53 65 74 4c 6f 63 6b 28 29 2e 0a  AFPFSSetLock()..
5f90: 0a 20 20 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20  .    <li> Flock 
5fa0: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
5fb0: 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20  his is used for 
5fc0: 66 69 6c 65 2d 73 79 73 74 65 6d 73 20 74 68 61  file-systems tha
5fd0: 74 20 64 6f 20 6e 6f 74 0a 20 20 20 20 20 20 20  t do not.       
5fe0: 20 20 73 75 70 70 6f 72 74 20 50 4f 53 49 58 20    support POSIX 
5ff0: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 4c  locking style. L
6000: 6f 63 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65  ocks are obtaine
6010: 64 20 61 6e 64 20 72 65 6c 65 61 73 65 64 20 75  d and released u
6020: 73 69 6e 67 0a 20 20 20 20 20 20 20 20 20 74 68  sing.         th
6030: 65 20 66 6c 6f 63 6b 28 29 20 73 79 73 74 65 6d  e flock() system
6040: 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e   call...    <li>
6050: 20 44 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e   Dot-file lockin
6060: 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f  g style. This lo
6070: 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75  cking style is u
6080: 73 65 64 20 77 68 65 6e 20 6e 65 69 74 68 65 72  sed when neither
6090: 0a 20 20 20 20 20 20 20 20 20 66 6c 6f 63 6b 20  .         flock 
60a0: 6e 6f 72 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e  nor POSIX lockin
60b0: 67 20 73 74 79 6c 65 73 20 61 72 65 20 73 75 70  g styles are sup
60c0: 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 66 69  ported by the fi
60d0: 6c 65 20 73 79 73 74 65 6d 2e 0a 20 20 20 20 20  le system..     
60e0: 20 20 20 20 44 61 74 61 62 61 73 65 20 6c 6f 63      Database loc
60f0: 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20  ks are obtained 
6100: 62 79 20 63 72 65 61 74 69 6e 67 20 61 6e 64 20  by creating and 
6110: 65 6e 74 72 79 20 69 6e 20 74 68 65 20 66 69 6c  entry in the fil
6120: 65 2d 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20  e-system.       
6130: 20 20 61 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77    at a well-know
6140: 6e 20 6c 6f 63 61 74 69 6f 6e 20 72 65 6c 61 74  n location relat
6150: 69 76 65 20 74 6f 20 74 68 65 20 64 61 74 61 62  ive to the datab
6160: 61 73 65 20 66 69 6c 65 20 28 61 20 22 64 6f 74  ase file (a "dot
6170: 2d 66 69 6c 65 22 29 0a 20 20 20 20 20 20 20 20  -file").        
6180: 20 61 6e 64 20 72 65 6c 69 6e 71 75 69 73 68 65   and relinquishe
6190: 64 20 62 79 20 64 65 6c 65 74 69 6e 67 20 74 68  d by deleting th
61a0: 65 20 73 61 6d 65 20 66 69 6c 65 2e 0a 0a 20 20  e same file...  
61b0: 20 20 3c 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e    <li> No lockin
61c0: 67 20 73 74 79 6c 65 2e 20 49 66 20 6e 6f 6e 65  g style. If none
61d0: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 63 61   of the above ca
61e0: 6e 20 62 65 20 73 75 70 70 6f 72 74 65 64 2c 20  n be supported, 
61f0: 74 68 69 73 20 0a 20 20 20 20 20 20 20 20 20 6c  this .         l
6200: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
6210: 75 73 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73  used. No databas
6220: 65 20 6c 6f 63 6b 69 6e 67 20 6d 65 63 68 61 6e  e locking mechan
6230: 69 73 6d 20 69 73 20 75 73 65 64 2e 20 57 68 65  ism is used. Whe
6240: 6e 0a 20 20 20 20 20 20 20 20 20 74 68 69 73 20  n.         this 
6250: 73 79 73 74 65 6d 20 69 73 20 75 73 65 64 20 69  system is used i
6260: 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20 66 6f  t is not safe fo
6270: 72 20 61 20 73 69 6e 67 6c 65 20 64 61 74 61 62  r a single datab
6280: 61 73 65 20 74 6f 20 62 65 0a 20 20 20 20 20 20  ase to be.      
6290: 20 20 20 61 63 63 65 73 73 65 64 20 62 79 20 6d     accessed by m
62a0: 75 6c 74 69 70 6c 65 20 63 6c 69 65 6e 74 73 2e  ultiple clients.
62b0: 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64 69  .  </ul>..  Addi
62c0: 74 69 6f 6e 61 6c 6c 79 2c 20 66 69 76 65 20 65  tionally, five e
62d0: 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65  xtra [VFS] imple
62e0: 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 70  mentations are p
62f0: 72 6f 76 69 64 65 64 20 61 73 20 77 65 6c 6c 20  rovided as well 
6300: 61 73 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74  as the.  default
6310: 2e 20 42 79 20 73 70 65 63 69 66 79 69 6e 67 20  . By specifying 
6320: 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 74 72 61  one of the extra
6330: 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74   VFS implementat
6340: 69 6f 6e 73 20 0a 20 20 77 68 65 6e 20 63 61 6c  ions .  when cal
6350: 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ling [sqlite3_op
6360: 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 20 61 70 70  en_v2()], an app
6370: 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 62 79 70  lication may byp
6380: 61 73 73 20 74 68 65 20 66 69 6c 65 2d 73 79 73  ass the file-sys
6390: 74 65 6d 0a 20 20 64 65 74 65 63 74 69 6f 6e 20  tem.  detection 
63a0: 6c 6f 67 69 63 20 61 6e 64 20 65 78 70 6c 69 63  logic and explic
63b0: 69 74 6c 79 20 73 65 6c 65 63 74 20 6f 6e 65 20  itly select one 
63c0: 6f 66 20 74 68 65 20 61 62 6f 76 65 20 6c 6f 63  of the above loc
63d0: 6b 69 6e 67 20 73 74 79 6c 65 73 2e 20 54 68 65  king styles. The
63e0: 0a 20 20 66 69 76 65 20 65 78 74 72 61 20 5b 56  .  five extra [V
63f0: 46 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  FS] implementati
6400: 6f 6e 73 20 61 72 65 20 63 61 6c 6c 65 64 20 22  ons are called "
6410: 75 6e 69 78 2d 70 6f 73 69 78 22 2c 20 22 75 6e  unix-posix", "un
6420: 69 78 2d 61 66 70 22 2c 0a 20 20 22 75 6e 69 78  ix-afp",.  "unix
6430: 2d 66 6c 6f 63 6b 22 2c 20 22 75 6e 69 78 2d 64  -flock", "unix-d
6440: 6f 74 66 69 6c 65 22 20 61 6e 64 20 22 75 6e 69  otfile" and "uni
6450: 78 2d 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50  x-none"..}..COMP
6460: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
6470: 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59  TE_ENABLE_MEMORY
6480: 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20 7b 0a 20  _MANAGEMENT} {. 
6490: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64   This option add
64a0: 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74 6f  s extra logic to
64b0: 20 53 51 4c 69 74 65 20 74 68 61 74 20 61 6c 6c   SQLite that all
64c0: 6f 77 73 20 69 74 20 74 6f 20 72 65 6c 65 61 73  ows it to releas
64d0: 65 20 75 6e 75 73 65 64 0a 20 20 6d 65 6d 6f 72  e unused.  memor
64e0: 79 20 75 70 6f 6e 20 72 65 71 75 65 73 74 2e 20  y upon request. 
64f0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 75 73   This option mus
6500: 74 20 62 65 20 65 6e 61 62 6c 65 64 20 69 6e 20  t be enabled in 
6510: 6f 72 64 65 72 20 66 6f 72 20 74 68 65 0a 20 20  order for the.  
6520: 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65  [sqlite3_release
6530: 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72  _memory()] inter
6540: 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e 20 20 49  face to work.  I
6550: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
6560: 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20  ime.  option is 
6570: 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20 5b 73  not used, the [s
6580: 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d  qlite3_release_m
6590: 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61  emory()] interfa
65a0: 63 65 20 69 73 20 61 20 0a 20 20 6e 6f 2d 6f 70  ce is a .  no-op
65b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
65c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
65d0: 4c 45 5f 4d 45 4d 53 59 53 33 7d 20 7b 0a 20 20  LE_MEMSYS3} {.  
65e0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
65f0: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
6600: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
6610: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
6620: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
6630: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
6640: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
6650: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
6660: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
6670: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
6680: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
6690: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
66a0: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
66b0: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
66c0: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
66d0: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
66e0: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
66f0: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
6700: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 33 20  ..  The MEMSYS3 
6710: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
6720: 20 75 73 65 73 20 61 20 68 79 62 72 69 64 20 61   uses a hybrid a
6730: 6c 6c 6f 63 61 74 69 6f 6e 20 61 6c 67 6f 72 69  llocation algori
6740: 74 68 6d 20 0a 20 20 70 61 74 74 65 72 6e 65 64  thm .  patterned
6750: 20 61 66 74 65 72 20 64 6c 6d 61 6c 6c 6f 63 28   after dlmalloc(
6760: 29 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66  ).   Only one of
6770: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
6780: 45 4d 53 59 53 33 20 61 6e 64 20 0a 20 20 53 51  EMSYS3 and .  SQ
6790: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
67a0: 59 53 35 20 6d 61 79 20 62 65 20 65 6e 61 62 6c  YS5 may be enabl
67b0: 65 64 20 61 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43  ed at once..}..C
67c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
67d0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
67e0: 53 59 53 35 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SYS5} {.  This o
67f0: 70 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63  ption includes c
6800: 6f 64 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68  ode in SQLite th
6810: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e  at implements an
6820: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d   alternative.  m
6830: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e  emory allocator.
6840: 20 20 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69    This alternati
6850: 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ve memory alloca
6860: 74 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61  tor is only enga
6870: 67 65 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b  ged.  when the [
6880: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
6890: 41 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73  AP] option to [s
68a0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
68b0: 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75   is used to.  su
68c0: 70 70 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75  pply a large chu
68d0: 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f  nk of memory fro
68e0: 6d 20 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f  m which all memo
68f0: 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61  ry allocations a
6900: 72 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68  re.  taken..  Th
6910: 65 20 4d 45 4d 53 59 53 35 20 6d 6f 64 75 6c 65  e MEMSYS5 module
6920: 20 72 6f 75 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f   rounds all allo
6930: 63 61 74 69 6f 6e 73 20 75 70 20 74 6f 20 74 68  cations up to th
6940: 65 20 6e 65 78 74 20 70 6f 77 65 72 0a 20 20 6f  e next power.  o
6950: 66 20 74 77 6f 20 61 6e 64 20 75 73 65 73 20 61  f two and uses a
6960: 20 66 69 72 73 74 2d 66 69 74 2c 20 62 75 64 64   first-fit, budd
6970: 79 2d 61 6c 6c 6f 63 61 74 6f 72 20 61 6c 67 6f  y-allocator algo
6980: 72 69 74 68 6d 0a 20 20 74 68 61 74 20 70 72 6f  rithm.  that pro
6990: 76 69 64 65 73 20 73 74 72 6f 6e 67 20 67 75 61  vides strong gua
69a0: 72 61 6e 74 65 65 73 20 61 67 61 69 6e 73 74 20  rantees against 
69b0: 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e  fragmentation an
69c0: 64 20 62 72 65 61 6b 64 6f 77 6e 0a 20 20 73 75  d breakdown.  su
69d0: 62 6a 65 63 74 20 74 6f 20 63 65 72 74 61 69 6e  bject to certain
69e0: 20 6f 70 65 72 61 74 69 6e 67 20 63 6f 6e 73 74   operating const
69f0: 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  raints..}..COMPI
6a00: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6a10: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20  E_ENABLE_RTREE} 
6a20: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6a30: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
6a40: 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f 72 74   include support
6a50: 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74 72 65   for the.  [rtre
6a60: 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64 65 78  e | R*Tree index
6a70: 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a   extension]..}..
6a80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6a90: 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e 54  SQLITE_RTREE_INT
6aa0: 5f 4f 4e 4c 59 7d 20 7b 0a 20 20 49 66 20 74 68  _ONLY} {.  If th
6ab0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
6ac0: 64 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20  d together with 
6ad0: 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52  [SQLITE_ENABLE_R
6ae0: 54 52 45 45 5d 20 74 68 65 6e 20 74 68 65 0a 20  TREE] then the. 
6af0: 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65   [rtree | R*Tree
6b00: 20 65 78 74 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c   extension] will
6b10: 20 6f 6e 6c 79 20 73 74 6f 72 65 20 33 32 2d 62   only store 32-b
6b20: 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
6b30: 72 0a 20 20 63 6f 6f 72 64 69 6e 61 74 65 73 20  r.  coordinates 
6b40: 61 6e 64 20 61 6c 6c 20 69 6e 74 65 72 6e 61 6c  and all internal
6b50: 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 77 69   computations wi
6b60: 6c 6c 20 62 65 20 64 6f 6e 65 20 75 73 69 6e 67  ll be done using
6b70: 20 69 6e 74 65 67 65 72 73 0a 20 20 69 6e 73 74   integers.  inst
6b80: 65 61 64 20 6f 66 20 66 6c 6f 61 74 69 6e 67 20  ead of floating 
6b90: 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2e 0a 7d  point numbers..}
6ba0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
6bb0: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
6bc0: 53 51 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69 73  SQLLOG} {.  This
6bd0: 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20   option enables 
6be0: 65 78 74 72 61 20 63 6f 64 65 20 28 65 73 70 65  extra code (espe
6bf0: 63 69 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c 49  cially the [SQLI
6c00: 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47  TE_CONFIG_SQLLOG
6c10: 5d 0a 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73  ].  option to [s
6c20: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
6c30: 29 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 73  ) that can be us
6c40: 65 64 20 74 6f 20 63 72 65 61 74 65 20 6c 6f 67  ed to create log
6c50: 73 20 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69 74  s of all.  SQLit
6c60: 65 20 70 72 6f 63 65 73 73 69 6e 67 20 70 65 72  e processing per
6c70: 66 6f 72 6d 65 64 20 62 79 20 61 6e 20 61 70 70  formed by an app
6c80: 6c 69 63 61 74 69 6f 6e 2e 20 20 54 68 65 73 65  lication.  These
6c90: 20 6c 6f 67 73 20 63 61 6e 20 62 65 20 75 73 65   logs can be use
6ca0: 66 75 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20 6f  ful.  in doing o
6cb0: 66 66 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69 73  ff-line analysis
6cc0: 20 6f 66 20 74 68 65 20 62 65 68 61 76 69 6f 72   of the behavior
6cd0: 20 6f 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69   of an applicati
6ce0: 6f 6e 2c 20 61 6e 64 20 65 73 70 65 63 69 61 6c  on, and especial
6cf0: 6c 79 0a 20 20 66 6f 72 20 70 65 72 66 6f 72 6d  ly.  for perform
6d00: 61 6e 63 65 20 61 6e 61 6c 79 73 69 73 2e 20 20  ance analysis.  
6d10: 49 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65  In order for the
6d20: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53   SQLITE_ENABLE_S
6d30: 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f 20  QLLOG option to 
6d40: 0a 20 20 62 65 20 75 73 65 66 75 6c 2c 20 73 6f  .  be useful, so
6d50: 6d 65 20 65 78 74 72 61 20 63 6f 64 65 20 69 73  me extra code is
6d60: 20 72 65 71 75 69 72 65 64 2e 20 20 54 68 65 20   required.  The 
6d70: 0a 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70  .  <a href="http
6d80: 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72  ://www.sqlite.or
6d90: 67 2f 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f  g/src/doc/trunk/
6da0: 73 72 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67 2e  src/test_sqllog.
6db0: 63 22 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e  c">"test_sqllog.
6dc0: 63 22 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65 20  c"</a>.  source 
6dd0: 63 6f 64 65 0a 20 20 66 69 6c 65 20 69 6e 20 74  code.  file in t
6de0: 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  he SQLite source
6df0: 20 74 72 65 65 20 69 73 20 61 20 77 6f 72 6b 69   tree is a worki
6e00: 6e 67 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68  ng example of th
6e10: 65 20 72 65 71 75 69 72 65 64 20 65 78 74 72 61  e required extra
6e20: 0a 20 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e 69  .  code.  On uni
6e30: 78 20 61 6e 64 20 77 69 6e 64 6f 77 73 20 73 79  x and windows sy
6e40: 73 74 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f 70  stems, a develop
6e50: 65 72 20 63 61 6e 20 61 70 70 65 6e 64 20 74 68  er can append th
6e60: 65 20 74 65 78 74 20 6f 66 20 74 68 65 0a 20 20  e text of the.  
6e70: 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20  "test_sqllog.c" 
6e80: 73 6f 75 72 63 65 20 63 6f 64 65 20 66 69 6c 65  source code file
6e90: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 61   to the end of a
6ea0: 6e 20 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d  n "sqlite3.c" am
6eb0: 61 6c 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72 65  algamation,.  re
6ec0: 63 6f 6d 70 69 6c 65 20 74 68 65 20 61 70 70 6c  compile the appl
6ed0: 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68  ication using th
6ee0: 65 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c  e -DSQLITE_ENABL
6ef0: 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c  E_SQLLOG option,
6f00: 20 74 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c   then .  control
6f10: 20 6c 6f 67 67 69 6e 67 20 75 73 69 6e 67 20 65   logging using e
6f20: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
6f30: 62 6c 65 73 2e 20 20 53 65 65 20 74 68 65 20 68  bles.  See the h
6f40: 65 61 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e  eader comment on
6f50: 20 0a 20 20 74 68 65 20 22 74 65 73 74 5f 73 71   .  the "test_sq
6f60: 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66  llog.c" source f
6f70: 69 6c 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  ile for addition
6f80: 61 6c 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a  al detail.  .}..
6f90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6fa0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
6fb0: 41 54 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  AT2} {.  This op
6fc0: 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 63 61 75  tion used to cau
6fd0: 73 65 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  se the [ANALYZE]
6fe0: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c   command to coll
6ff0: 65 63 74 0a 20 20 69 6e 64 65 78 20 68 69 73 74  ect.  index hist
7000: 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20 74 68  ogram data in th
7010: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74  e <b>sqlite_stat
7020: 32 3c 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42 75  2</b> table.  Bu
7030: 74 20 74 68 61 74 0a 20 20 66 75 6e 63 74 69 6f  t that.  functio
7040: 6e 61 6c 69 74 79 20 77 61 73 20 73 75 70 65 72  nality was super
7050: 63 65 64 65 64 20 62 79 20 5b 53 51 4c 49 54 45  ceded by [SQLITE
7060: 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 61  _ENABLE_STAT3] a
7070: 73 20 6f 66 0a 20 20 53 51 4c 69 74 65 20 76 65  s of.  SQLite ve
7080: 72 73 69 6f 6e 20 33 2e 37 2e 39 2e 20 20 54 68  rsion 3.7.9.  Th
7090: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
70a0: 53 54 41 54 32 20 63 6f 6d 70 69 6c 65 2d 74 69  STAT2 compile-ti
70b0: 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 6e  me option.  is n
70c0: 6f 77 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43  ow a no-op..}..C
70d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
70e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
70f0: 54 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  T3} {.  This opt
7100: 69 6f 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f  ion adds additio
7110: 6e 61 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65  nal logic to the
7120: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
7130: 6e 64 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20  nd and to.  the 
7140: 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20  [query planner] 
7150: 74 68 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51  that can help SQ
7160: 4c 69 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20  Lite to chose a 
7170: 62 65 74 74 65 72 20 71 75 65 72 79 20 70 6c 61  better query pla
7180: 6e 0a 20 20 75 6e 64 65 72 20 63 65 72 74 61 69  n.  under certai
7190: 6e 20 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54  n situations.  T
71a0: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
71b0: 6d 61 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64  mand is enhanced
71c0: 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69   to collect.  hi
71d0: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f  stogram data fro
71e0: 6d 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20  m the left-most 
71f0: 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69  column of each i
7200: 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74  ndex and store t
7210: 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68  hat data.  in th
7220: 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74 33 5d  e [sqlite_stat3]
7230: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65   table.  The que
7240: 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20  ry planner will 
7250: 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68  then use the.  h
7260: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f  istogram data to
7270: 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20 62 65   help it make be
7280: 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63  tter index choic
7290: 65 73 2e 20 20 4e 6f 74 65 2c 20 68 6f 77 65 76  es.  Note, howev
72a0: 65 72 2c 0a 20 20 74 68 61 74 20 74 68 65 20 75  er,.  that the u
72b0: 73 65 20 6f 66 20 68 69 73 74 6f 67 72 61 6d 20  se of histogram 
72c0: 64 61 74 61 20 69 6e 20 71 75 65 72 79 20 70 6c  data in query pl
72d0: 61 6e 6e 65 72 20 76 69 6f 6c 61 74 65 73 20 74  anner violates t
72e0: 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e  he.  [query plan
72f0: 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67 75  ner stability gu
7300: 61 72 61 6e 74 65 65 5d 20 77 68 69 63 68 20 69  arantee] which i
7310: 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 6f 20 73  s important to s
7320: 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ome applications
7330: 2e 0a 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50 49  ..  <p>.}..COMPI
7340: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7350: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 7d 20  E_ENABLE_STAT4} 
7360: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7370: 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20  adds additional 
7380: 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e  logic to the [AN
7390: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61  ALYZE] command a
73a0: 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65  nd to.  the [que
73b0: 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74  ry planner] that
73c0: 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65   can help SQLite
73d0: 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74   to chose a bett
73e0: 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20  er query plan.  
73f0: 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 73 69  under certain si
7400: 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b  tuations.  The [
7410: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
7420: 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20   is enhanced to 
7430: 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67  collect.  histog
7440: 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 61 6c  ram data from al
7450: 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 65 76 65  l columns of eve
7460: 72 79 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f  ry index and sto
7470: 72 65 20 74 68 61 74 20 64 61 74 61 0a 20 20 69  re that data.  i
7480: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74  n the [sqlite_st
7490: 61 74 34 5d 20 74 61 62 6c 65 2e 20 20 54 68 65  at4] table.  The
74a0: 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77   query planner w
74b0: 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65  ill then use the
74c0: 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74  .  histogram dat
74d0: 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b  a to help it mak
74e0: 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20 63  e better index c
74f0: 68 6f 69 63 65 73 2e 20 20 54 68 65 20 64 6f 77  hoices.  The dow
7500: 6e 73 69 64 65 20 6f 66 0a 20 20 74 68 69 73 20  nside of.  this 
7510: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
7520: 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20 76  ion is that it v
7530: 69 6f 6c 61 74 65 73 20 74 68 65 0a 20 20 5b 71  iolates the.  [q
7540: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 74 61  uery planner sta
7550: 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74 65 65  bility guarantee
7560: 5d 20 6d 61 6b 69 6e 67 20 69 74 20 6d 6f 72 65  ] making it more
7570: 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 65 6e   difficult to en
7580: 73 75 72 65 0a 20 20 63 6f 6e 73 69 73 74 65 6e  sure.  consisten
7590: 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e  t performance in
75a0: 20 6d 61 73 73 2d 70 72 6f 64 75 63 65 64 20 61   mass-produced a
75b0: 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c  pplications..  <
75c0: 70 3e 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42  p>.  SQLITE_ENAB
75d0: 4c 45 5f 53 54 41 54 34 20 69 73 20 61 6e 20 65  LE_STAT4 is an e
75e0: 6e 68 61 6e 63 65 6d 65 6e 74 20 6f 66 20 5b 53  nhancement of [S
75f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
7600: 54 33 5d 2e 20 20 53 54 41 54 33 0a 20 20 6f 6e  T3].  STAT3.  on
7610: 6c 79 20 72 65 63 6f 72 64 65 64 20 68 69 73 74  ly recorded hist
7620: 6f 67 72 61 6d 20 64 61 74 61 20 66 6f 72 20 74  ogram data for t
7630: 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c  he left-most col
7640: 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64 65  umn of each inde
7650: 78 0a 20 20 77 68 65 72 65 61 73 20 74 68 65 20  x.  whereas the 
7660: 53 54 41 54 34 20 65 6e 68 61 6e 63 65 6d 65 6e  STAT4 enhancemen
7670: 74 20 72 65 63 6f 72 64 73 20 68 69 73 74 6f 67  t records histog
7680: 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20 61 6c  ram data from al
7690: 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66 20 65  l columns.  of e
76a0: 61 63 68 20 69 6e 64 65 78 2e 0a 20 20 54 68 65  ach index..  The
76b0: 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
76c0: 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74  STAT3] compile-t
76d0: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 61 20  ime option is a 
76e0: 6e 6f 2d 6f 70 20 61 6e 64 20 69 73 20 69 67 6e  no-op and is ign
76f0: 6f 72 65 64 0a 20 20 69 66 20 74 68 65 20 53 51  ored.  if the SQ
7700: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
7710: 34 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  4 compile-time o
7720: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 7d  ption is used..}
7730: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7740: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
7750: 54 52 45 45 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a  TREE_EXPLAIN} {.
7760: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
7770: 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ds support for t
7780: 68 65 20 5b 53 51 4c 49 54 45 5f 54 45 53 54 43  he [SQLITE_TESTC
7790: 54 52 4c 5f 45 58 50 4c 41 49 4e 5f 53 54 4d 54  TRL_EXPLAIN_STMT
77a0: 5d 20 74 65 73 74 2d 63 6f 6e 74 72 6f 6c 0a 20  ] test-control. 
77b0: 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 63   in the SQLite c
77c0: 6f 72 65 2e 20 20 57 68 65 6e 20 74 68 65 20 5b  ore.  When the [
77d0: 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65  command-line she
77e0: 6c 6c 5d 20 69 73 20 61 6c 73 6f 20 63 6f 6d 70  ll] is also comp
77f0: 69 6c 65 64 20 77 69 74 68 0a 20 20 74 68 69 73  iled with.  this
7800: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 20 22 2e 65   option, the ".e
7810: 78 70 6c 61 69 6e 22 20 64 6f 74 2d 63 6f 6d 6d  xplain" dot-comm
7820: 61 6e 64 20 65 6e 61 62 6c 65 73 20 61 20 6d 6f  and enables a mo
7830: 64 65 20 74 68 61 74 20 75 73 65 73 20 74 68 65  de that uses the
7840: 0a 20 20 5b 53 51 4c 49 54 45 5f 54 45 53 54 43  .  [SQLITE_TESTC
7850: 54 52 4c 5f 45 58 50 4c 41 49 4e 5f 53 54 4d 54  TRL_EXPLAIN_STMT
7860: 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 64  ] interface to d
7870: 69 73 70 6c 61 79 20 61 6e 20 41 53 43 49 49 2d  isplay an ASCII-
7880: 61 72 74 20 64 69 61 67 72 61 6d 0a 20 20 6f 66  art diagram.  of
7890: 20 74 68 65 20 70 61 72 73 65 20 74 72 65 65 20   the parse tree 
78a0: 66 6f 72 20 65 61 63 68 20 53 51 4c 20 71 75 65  for each SQL que
78b0: 72 79 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  ry statement tha
78c0: 74 20 69 73 20 72 75 6e 20 69 6e 20 74 68 65 20  t is run in the 
78d0: 73 68 65 6c 6c 2e 0a 20 20 54 68 69 73 20 6d 65  shell..  This me
78e0: 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65 66 75  chanism is usefu
78f0: 6c 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 20  l for debugging 
7900: 74 68 65 20 53 51 4c 69 74 65 20 70 61 72 73 65  the SQLite parse
7910: 72 20 61 6e 64 20 63 6f 64 65 0a 20 20 67 65 6e  r and code.  gen
7920: 65 72 61 74 6f 72 2e 20 20 54 68 69 73 20 77 68  erator.  This wh
7930: 6f 6c 65 20 6d 65 63 68 61 6e 69 73 6d 20 69 73  ole mechanism is
7940: 20 68 69 67 68 6c 79 20 65 78 70 65 72 69 6d 65   highly experime
7950: 6e 74 61 6c 20 61 6e 64 20 63 6f 75 6c 64 20 63  ntal and could c
7960: 68 61 6e 67 65 0a 20 20 64 72 61 73 74 69 63 61  hange.  drastica
7970: 6c 6c 79 20 6f 72 20 62 65 20 65 6c 69 6d 69 6e  lly or be elimin
7980: 61 74 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  ated in future r
7990: 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
79a0: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
79b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
79c0: 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54  BLE_UPDATE_DELET
79d0: 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20 20 54 68 69  E_LIMIT} {.  Thi
79e0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
79f0: 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44   an optional ORD
7a00: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
7a10: 63 6c 61 75 73 65 20 6f 6e 20 0a 20 20 5b 55 50  clause on .  [UP
7a20: 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54  DATE] and [DELET
7a30: 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a  E] statements...
7a40: 20 20 3c 70 3e 49 66 20 74 68 69 73 20 6f 70 74    <p>If this opt
7a50: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
7a60: 74 68 65 6e 20 69 74 20 6d 75 73 74 20 61 6c 73  then it must als
7a70: 6f 20 62 65 20 0a 20 20 64 65 66 69 6e 65 64 20  o be .  defined 
7a80: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27  when using the '
7a90: 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67  lemon' tool to g
7aa0: 65 6e 65 72 61 74 65 20 61 20 70 61 72 73 65 2e  enerate a parse.
7ab0: 63 0a 20 20 66 69 6c 65 2e 20 42 65 63 61 75 73  c.  file. Becaus
7ac0: 65 20 6f 66 20 74 68 69 73 2c 20 74 68 69 73 20  e of this, this 
7ad0: 6f 70 74 69 6f 6e 20 6d 61 79 20 6f 6e 6c 79 20  option may only 
7ae0: 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  be used when the
7af0: 20 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c   library is buil
7b00: 74 0a 20 20 66 72 6f 6d 20 73 6f 75 72 63 65 2c  t.  from source,
7b10: 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61   not from the [a
7b20: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20  malgamation] or 
7b30: 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74  from the collect
7b40: 69 6f 6e 20 6f 66 0a 20 20 70 72 65 2d 70 61 63  ion of.  pre-pac
7b50: 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70 72  kaged C files pr
7b60: 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55  ovided for non-U
7b70: 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72  nix like platfor
7b80: 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74  ms on the websit
7b90: 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d  e..  </p>.}..COM
7ba0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7bb0: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43  ITE_ENABLE_UNLOC
7bc0: 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a 20 20 54 68  K_NOTIFY} {.  Th
7bd0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
7be0: 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 75  s the [sqlite3_u
7bf0: 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79 28 29 5d 20  nlock_notify()] 
7c00: 69 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 20 20  interface and.  
7c10: 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 66  its associated f
7c20: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 20 53  unctionality.  S
7c30: 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61  ee the documenta
7c40: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 20 20 5b 55  tion titled.  [U
7c50: 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
7c60: 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66 69 63 61 74  Unlock Notificat
7c70: 69 6f 6e 20 46 65 61 74 75 72 65 5d 20 66 6f 72  ion Feature] for
7c80: 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 69 6e   additional.  in
7c90: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  formation..}..CO
7ca0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7cb0: 4c 49 54 45 5f 53 4f 55 4e 44 45 58 7d 20 7b 0a  LITE_SOUNDEX} {.
7cc0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
7cd0: 61 62 6c 65 73 20 74 68 65 20 5b 73 6f 75 6e 64  ables the [sound
7ce0: 65 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ex() SQL functio
7cf0: 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  n]..}..COMPILE_O
7d00: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
7d10: 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 7d 20 7b  E_FCNTL_TRACE} {
7d20: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
7d30: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
7d40: 69 73 73 75 65 20 65 78 74 72 61 20 5b 53 51 4c  issue extra [SQL
7d50: 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d  ITE_FCNTL_TRACE]
7d60: 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 73 0a 20   file controls. 
7d70: 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75 70 70   to provide supp
7d80: 6c 65 6d 65 6e 74 61 72 79 20 69 6e 66 6f 72 6d  lementary inform
7d90: 61 74 69 6f 6e 20 74 6f 20 74 68 65 20 56 46 53  ation to the VFS
7da0: 2e 20 20 54 68 65 20 22 76 66 73 6c 6f 67 2e 63  .  The "vfslog.c
7db0: 22 20 65 78 74 65 6e 73 69 6f 6e 0a 20 20 6d 61  " extension.  ma
7dc0: 6b 65 73 20 75 73 65 20 6f 66 20 74 68 69 73 20  kes use of this 
7dd0: 74 6f 20 70 72 6f 76 69 64 65 20 65 6e 68 61 6e  to provide enhan
7de0: 63 65 64 20 6c 6f 67 73 20 6f 66 20 56 46 53 20  ced logs of VFS 
7df0: 61 63 74 69 76 69 74 79 2e 0a 7d 0a 0a 43 4f 4d  activity..}..COM
7e00: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54  PILE_OPTION {YYT
7e10: 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45 50 54  RACKMAXSTACKDEPT
7e20: 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  H} {.  This opti
7e30: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 4c 41  on causes the LA
7e40: 4c 52 28 31 29 20 70 61 72 73 65 72 20 73 74 61  LR(1) parser sta
7e50: 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65 20 74  ck depth to be t
7e60: 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72 65 70  racked.  and rep
7e70: 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  orted using the 
7e80: 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73 5d  [sqlite3_status]
7e90: 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f  ([SQLITE_STATUS_
7ea0: 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e  PARSER_STACK],..
7eb0: 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20  .).  interface. 
7ec0: 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52 28 31   SQLite's LALR(1
7ed0: 29 20 70 61 72 73 65 72 20 68 61 73 20 61 20 66  ) parser has a f
7ee0: 69 78 65 64 20 73 74 61 63 6b 20 64 65 70 74 68  ixed stack depth
7ef0: 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64 20 61  .  (determined a
7f00: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75  t compile-time u
7f10: 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54 41 43  sing the [YYSTAC
7f20: 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29  KDEPTH] options)
7f30: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
7f40: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 68  can be used to h
7f50: 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66  elp determine if
7f60: 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   an application 
7f70: 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63 6c 6f  is.  getting clo
7f80: 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e 67 20  se to exceeding 
7f90: 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52  the maximum LALR
7fa0: 28 31 29 20 73 74 61 63 6b 20 64 65 70 74 68 2e  (1) stack depth.
7fb0: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61  .}.</tcl>..<a na
7fc0: 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61 74 75  me="disablefeatu
7fd0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  res"></a>.<h2>1.
7fe0: 35 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69 73  5 Options To Dis
7ff0: 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f  able Features No
8000: 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e  rmally Turned On
8010: 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d  </h2>..<tcl>.COM
8020: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8030: 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d  ITE_DISABLE_LFS}
8040: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
8050: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8060: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 6c 61  o is defined, la
8070: 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74  rge file support
8080: 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a  .  is disabled..
8090: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
80a0: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
80b0: 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49  E_DIRSYNC} {.  I
80c0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
80d0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
80e0: 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74 6f 72  efined, director
80f0: 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20 64 69  y syncs.  are di
8100: 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74 65 20  sabled.  SQLite 
8110: 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65 6d 70  typically attemp
8120: 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65 20 70  ts to sync the p
8130: 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74 6f 72  arent.  director
8140: 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20 69 73  y when a file is
8150: 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e 73 75   deleted to ensu
8160: 72 65 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  re the directory
8170: 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65 20 75  .  entries are u
8180: 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61 74 65  pdated immediate
8190: 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43  ly on disk..}..C
81a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
81b0: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54  QLITE_DISABLE_FT
81c0: 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20  S3_UNICODE} {.  
81d0: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
81e0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
81f0: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e  defined, the [un
8200: 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a  icode61] tokeniz
8210: 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20 69  er.  in [FTS3] i
8220: 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  s omitted from t
8230: 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69 73 20  he build and is 
8240: 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a  unavailable to .
8250: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a    applications..
8260: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8270: 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  N {SQLITE_DISABL
8280: 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44 7d  E_FTS4_DEFERRED}
8290: 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70   {.  If this C-p
82a0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
82b0: 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 22  o disables the "
82c0: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
82d0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69  optimization.  i
82e0: 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65 20 22  n [FTS4].  The "
82f0: 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20  deferred token" 
8300: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f  optimization avo
8310: 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73  ids loading mass
8320: 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69  ive.  posting li
8330: 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20 74 68  sts for terms th
8340: 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74 20 64  at are in most d
8350: 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68 65 20  ocuments of the 
8360: 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64  collection.  and
8370: 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c 79 20   instead simply 
8380: 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73 65 20  scans for those 
8390: 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20 64 6f  tokens in the do
83a0: 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20 20  cument source.  
83b0: 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20  [FTS4].  should 
83c0: 67 65 74 20 65 78 61 63 74 6c 79 20 74 68 65 20  get exactly the 
83d0: 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f 74 68  same answer both
83e0: 20 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75   with and withou
83f0: 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74  t this optimizat
8400: 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  ion..}.</tcl>..<
8410: 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65  tcl>.  hd_fragme
8420: 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73  nt "omitfeatures
8430: 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20  ".  hd_keywords 
8440: 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c  "omitfeatures".<
8450: 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70  /tcl>.<h2>1.6 Op
8460: 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65  tions To Omit Fe
8470: 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  atures</h2>..<p>
8480: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70  The following op
8490: 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65  tions can be use
84a0: 64 20 74 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70 72  d to .[relfootpr
84b0: 69 6e 74 20 7c 20 72 65 64 75 63 65 20 74 68 65  int | reduce the
84c0: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d   size of the com
84d0: 70 69 6c 65 64 20 6c 69 62 72 61 72 79 5d 0a 62  piled library].b
84e0: 79 20 6f 6d 69 74 74 69 6e 67 20 75 6e 75 73 65  y omitting unuse
84f0: 64 20 66 65 61 74 75 72 65 73 2e 20 54 68 69 73  d features. This
8500: 20 69 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c   is probably onl
8510: 79 20 75 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65  y useful.in embe
8520: 64 64 65 64 20 73 79 73 74 65 6d 73 20 77 68 65  dded systems whe
8530: 72 65 20 73 70 61 63 65 20 69 73 20 65 73 70 65  re space is espe
8540: 63 69 61 6c 6c 79 20 74 69 67 68 74 2c 20 61 73  cially tight, as
8550: 20 65 76 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66   even with all.f
8560: 65 61 74 75 72 65 73 20 69 6e 63 6c 75 64 65 64  eatures included
8570: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
8580: 61 72 79 20 69 73 20 72 65 6c 61 74 69 76 65 6c  ary is relativel
8590: 79 20 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66  y small. Don't f
85a0: 6f 72 67 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f  orget.to tell yo
85b0: 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f  ur compiler to o
85c0: 70 74 69 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61  ptimize for bina
85d0: 72 79 20 73 69 7a 65 21 20 28 74 68 65 20 2d 4f  ry size! (the -O
85e0: 73 20 6f 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e  s option if.usin
85f0: 67 20 47 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67  g GCC).  Telling
8600: 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74   your compiler t
8610: 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 73  o optimize for s
8620: 69 7a 65 20 75 73 75 61 6c 6c 79 20 68 61 73 0a  ize usually has.
8630: 61 20 6d 75 63 68 20 6c 61 72 67 65 72 20 69 6d  a much larger im
8640: 70 61 63 74 20 6f 6e 20 6c 69 62 72 61 72 79 20  pact on library 
8650: 66 6f 6f 74 70 72 69 6e 74 20 74 68 61 6e 20 65  footprint than e
8660: 6d 70 6c 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20  mploying any of 
8670: 74 68 65 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69  these.compile-ti
8680: 6d 65 20 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75  me options.  You
8690: 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72   should also ver
86a0: 69 66 79 20 74 68 61 74 20 0a 3c 61 20 68 72 65  ify that .<a hre
86b0: 66 3d 22 23 64 65 62 75 67 6f 70 74 69 6f 6e 73  f="#debugoptions
86c0: 22 3e 64 65 62 75 67 67 69 6e 67 20 6f 70 74 69  ">debugging opti
86d0: 6f 6e 73 3c 2f 61 3e 20 61 72 65 20 64 69 73 61  ons</a> are disa
86e0: 62 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  bled.</p>..<p>Th
86f0: 65 20 6d 61 63 72 6f 73 20 69 6e 20 74 68 69 73  e macros in this
8700: 20 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20   section do not 
8710: 72 65 71 75 69 72 65 20 76 61 6c 75 65 73 2e 20  require values. 
8720: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63  The following .c
8730: 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69 74 63  ompilation switc
8740: 68 65 73 20 61 6c 6c 20 68 61 76 65 20 74 68 65  hes all have the
8750: 20 73 61 6d 65 20 65 66 66 65 63 74 3a 3c 62 72   same effect:<br
8760: 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  >.-DSQLITE_OMIT_
8770: 41 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d  ALTERTABLE<br>.-
8780: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
8790: 45 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44  ERTABLE=1<br>.-D
87a0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
87b0: 52 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c  RTABLE=0.</p>..<
87c0: 70 3e 49 66 20 61 6e 79 20 6f 66 20 74 68 65 73  p>If any of thes
87d0: 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 64 65  e options are de
87e0: 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20  fined, then the 
87f0: 73 61 6d 65 20 73 65 74 20 6f 66 20 53 51 4c 49  same set of SQLI
8800: 54 45 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e  TE_OMIT_*.option
8810: 73 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 64  s must also be d
8820: 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e  efined when usin
8830: 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f  g the 'lemon' to
8840: 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74  ol to generate t
8850: 68 65 0a 70 61 72 73 65 2e 63 20 66 69 6c 65 20  he.parse.c file 
8860: 61 6e 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69  and when compili
8870: 6e 67 20 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72  ng the 'mkkeywor
8880: 64 68 61 73 68 27 20 74 6f 6f 6c 20 77 68 69 63  dhash' tool whic
8890: 68 20 67 65 6e 65 72 61 74 65 73 20 0a 74 68 65  h generates .the
88a0: 20 6b 65 79 77 6f 72 64 68 61 73 68 2e 68 20 66   keywordhash.h f
88b0: 69 6c 65 2e 0a 42 65 63 61 75 73 65 20 6f 66 20  ile..Because of 
88c0: 74 68 69 73 2c 20 74 68 65 73 65 20 6f 70 74 69  this, these opti
88d0: 6f 6e 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ons may only be 
88e0: 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69  used when the li
88f0: 62 72 61 72 79 20 69 73 20 62 75 69 6c 74 0a 66  brary is built.f
8900: 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f  rom canonical so
8910: 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74  urce, not from t
8920: 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  he [amalgamation
8930: 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f  ] or from the co
8940: 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d  llection of.pre-
8950: 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73  packaged C files
8960: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f   provided for no
8970: 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74  n-Unix like plat
8980: 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62  forms on the web
8990: 73 69 74 65 2e 0a 41 6e 79 20 53 51 4c 49 54 45  site..Any SQLITE
89a0: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
89b0: 77 68 69 63 68 20 63 61 6e 20 62 65 20 75 73 65  which can be use
89c0: 64 20 64 69 72 65 63 74 6c 79 20 77 69 74 68 20  d directly with 
89d0: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
89e0: 6e 5d 20 0a 61 72 65 20 6c 69 73 74 65 64 20 62  n] .are listed b
89f0: 65 6c 6f 77 2c 20 68 6f 77 65 76 65 72 2c 20 74  elow, however, t
8a00: 68 65 20 77 61 72 6e 69 6e 67 73 20 69 6e 20 74  he warnings in t
8a10: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72  he following par
8a20: 61 67 72 61 70 68 20 73 68 6f 75 6c 64 20 62 65  agraph should be
8a30: 20 6e 6f 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62   noted..</p>..<b
8a40: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62  lockquote>.<i><b
8a50: 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a  >Important Note:
8a60: 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54 45 5f  </b> The SQLITE_
8a70: 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 64  OMIT_* options d
8a80: 6f 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20  o not work with 
8a90: 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the.[amalgamatio
8aa0: 6e 5d 20 6f 72 20 77 69 74 68 20 70 72 65 2d 70  n] or with pre-p
8ab0: 61 63 6b 61 67 65 64 20 43 20 63 6f 64 65 20 66  ackaged C code f
8ac0: 69 6c 65 73 2e 20 20 53 51 4c 49 54 45 5f 4f 4d  iles.  SQLITE_OM
8ad0: 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  IT_* compile-tim
8ae0: 65 0a 6f 70 74 69 6f 6e 73 20 6f 6e 6c 79 20 77  e.options only w
8af0: 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 77 68  ork correctly wh
8b00: 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69  en SQLite is bui
8b10: 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61  lt from canonica
8b20: 6c 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a  l source files..
8b30: 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  </i>.</blockquot
8b40: 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20  e>...<p>Special 
8b50: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
8b60: 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74  SQLite amalgamat
8b70: 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b  ion that do work
8b80: 20 77 69 74 68 20 61 0a 70 72 65 64 65 74 65 72   with a.predeter
8b90: 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c  mined set of SQL
8ba0: 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f  ITE_OMIT_* optio
8bb0: 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61  ns can be genera
8bc0: 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a  ted.  To do so,.
8bd0: 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74  make a copy of t
8be0: 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75  he Makefile.linu
8bf0: 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74  x-gcc makefile t
8c00: 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63  emplate in the c
8c10: 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20  anonical.source 
8c20: 63 6f 64 65 20 64 69 73 74 72 69 62 75 74 69 6f  code distributio
8c30: 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e  n.  Change the n
8c40: 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79  ame of your copy
8c50: 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65   to simply "Make
8c60: 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74  file"..Then edit
8c70: 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73   "Makefile" to s
8c80: 65 74 20 75 70 20 61 70 70 72 6f 70 72 69 61 74  et up appropriat
8c90: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
8ca0: 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79  ptions.  Then.ty
8cb0: 70 65 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  pe:.<blockquote>
8cc0: 3c 74 74 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20  <tt>make clean; 
8cd0: 6d 61 6b 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f  make sqlite3.c</
8ce0: 74 74 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  tt></blockquote>
8cf0: 0a 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 22  .The resulting "
8d00: 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67  sqlite3.c" amalg
8d10: 61 6d 61 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c  amation code fil
8d20: 65 20 28 61 6e 64 20 69 74 73 20 61 73 73 6f 63  e (and its assoc
8d30: 69 61 74 65 64 0a 68 65 61 64 65 72 20 66 69 6c  iated.header fil
8d40: 65 20 22 73 71 6c 69 74 65 33 2e 68 22 29 20 63  e "sqlite3.h") c
8d50: 61 6e 20 74 68 65 6e 20 62 65 20 6d 6f 76 65 64  an then be moved
8d60: 20 74 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70   to a non-unix p
8d70: 6c 61 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61  latform.for fina
8d80: 6c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73  l compilation us
8d90: 69 6e 67 20 61 20 6e 61 74 69 76 65 20 63 6f 6d  ing a native com
8da0: 70 69 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  piler.</p>..<p>A
8db0: 6c 6c 20 6f 66 20 74 68 65 20 53 51 4c 49 54 45  ll of the SQLITE
8dc0: 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20  _OMIT_* options 
8dd0: 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e  are unsupported.
8de0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
8df0: 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61  e>.<i><b>Importa
8e00: 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65  nt Note:</b>.The
8e10: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63   SQLITE_OMIT_* c
8e20: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
8e30: 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72  ons are unsuppor
8e40: 74 65 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b  ted..</i></block
8e50: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  quote>..<p>.The 
8e60: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
8e70: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
8e80: 6e 73 20 61 72 65 20 75 73 75 61 6c 6c 79 20 75  ns are usually u
8e90: 6e 74 65 73 74 65 64 20 61 6e 64 0a 61 72 65 20  ntested and.are 
8ea0: 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79  almost certainly
8eb0: 20 75 6e 74 65 73 74 65 64 20 69 6e 20 63 6f 6d   untested in com
8ec0: 62 69 6e 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72  bination..Any or
8ed0: 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 6f 70   all of these op
8ee0: 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 72 65 6d  tions may be rem
8ef0: 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f  oved from the co
8f00: 64 65 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  de in future rel
8f10: 65 61 73 65 73 0a 61 6e 64 20 77 69 74 68 6f 75  eases.and withou
8f20: 74 20 77 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20  t warning.  For 
8f30: 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 72  any particular r
8f40: 65 6c 65 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20  elease, some of 
8f50: 74 68 65 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61  these.options ma
8f60: 79 20 63 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d  y cause compile-
8f70: 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65  time or run-time
8f80: 20 66 61 69 6c 75 72 65 73 2c 20 70 61 72 74 69   failures, parti
8f90: 63 75 6c 61 72 6c 79 0a 77 68 65 6e 20 75 73 65  cularly.when use
8fa0: 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  d in combination
8fb0: 20 77 69 74 68 20 6f 74 68 65 72 20 6f 70 74 69   with other opti
8fc0: 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ons.</p>..<tcl>.
8fd0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8fe0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
8ff0: 52 54 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e  RTABLE} {.  When
9000: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
9010: 64 65 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20  defined, the .  
9020: 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f  [ALTER TABLE] co
9030: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63  mmand is not inc
9040: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20  luded in the .  
9050: 6c 69 62 72 61 72 79 2e 20 45 78 65 63 75 74 69  library. Executi
9060: 6e 67 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42  ng an [ALTER TAB
9070: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61  LE] statement ca
9080: 75 73 65 73 20 61 20 70 61 72 73 65 20 65 72 72  uses a parse err
9090: 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  or..}..COMPILE_O
90a0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
90b0: 49 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20  IT_ANALYZE} {.  
90c0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
90d0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
90e0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
90f0: 6e 64 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  nd is omitted fr
9100: 6f 6d 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  om.  the build..
9110: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
9120: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  N {SQLITE_OMIT_A
9130: 54 54 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20  TTACH} {.  When 
9140: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
9150: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54  efined, the [ATT
9160: 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48  ACH] and [DETACH
9170: 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20  ] commands are. 
9180: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
9190: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
91a0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
91b0: 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a  TE_OMIT_AUTHORIZ
91c0: 41 54 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  ATION} {.  Defin
91d0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
91e0: 6f 6d 69 74 73 20 74 68 65 20 61 75 74 68 6f 72  omits the author
91f0: 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b  ization callback
9200: 20 66 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68   feature from th
9210: 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65  e.  library. The
9220: 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75   [sqlite3_set_au
9230: 74 68 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20  thorizer()] API 
9240: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20  function is not 
9250: 70 72 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65  present.  in the
9260: 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d   library..}..COM
9270: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9280: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43  ITE_OMIT_AUTOINC
9290: 52 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73  REMENT} {.  This
92a0: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
92b0: 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b  to omit the .  [
92c0: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 66  AUTOINCREMENT] f
92d0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 57 68  unctionality. Wh
92e0: 65 6e 20 74 68 69 73 20 0a 20 20 69 73 20 6d 61  en this .  is ma
92f0: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
9300: 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64  columns declared
9310: 20 61 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52   as .  "[INTEGER
9320: 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55   PRIMARY KEY] AU
9330: 54 4f 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62  TOINCREMENT".  b
9340: 65 68 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d  ehave in the sam
9350: 65 20 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73  e way as columns
9360: 20 64 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49   declared as "[I
9370: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
9380: 45 59 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e  EY]" when a .  N
9390: 55 4c 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e  ULL is inserted.
93a0: 20 54 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75   The sqlite_sequ
93b0: 65 6e 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c  ence system tabl
93c0: 65 20 69 73 20 6e 65 69 74 68 65 72 20 63 72 65  e is neither cre
93d0: 61 74 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70  ated, nor.  resp
93e0: 65 63 74 65 64 20 69 66 20 69 74 20 61 6c 72 65  ected if it alre
93f0: 61 64 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43  ady exists..}..C
9400: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9410: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
9420: 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63  NIT} {.  For bac
9430: 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69  kwards compatibi
9440: 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20  lity with older 
9450: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
9460: 74 65 20 74 68 61 74 20 6c 61 63 6b 0a 20 20 74  te that lack.  t
9470: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  he [sqlite3_init
9480: 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66  ialize()] interf
9490: 61 63 65 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ace, the [sqlite
94a0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
94b0: 69 6e 74 65 72 66 61 63 65 0a 20 20 69 73 20 63  interface.  is c
94c0: 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61  alled automatica
94d0: 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72 79 20 74  lly upon entry t
94e0: 6f 20 63 65 72 74 61 69 6e 20 6b 65 79 20 69 6e  o certain key in
94f0: 74 65 72 66 61 63 65 73 20 73 75 63 68 20 61 73  terfaces such as
9500: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .  [sqlite3_open
9510: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66  ()], [sqlite3_vf
9520: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2c 20 61  s_register()], a
9530: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69  nd [sqlite3_mpri
9540: 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76  ntf()]..  The ov
9550: 65 72 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69  erhead of invoki
9560: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  ng [sqlite3_init
9570: 69 61 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61  ialize()] automa
9580: 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a  tically in this.
9590: 20 20 77 61 79 20 6d 61 79 20 62 65 20 6f 6d 69    way may be omi
95a0: 74 74 65 64 20 62 79 20 62 75 69 6c 64 69 6e 67  tted by building
95b0: 20 53 51 4c 69 74 65 20 77 69 74 68 20 74 68 65   SQLite with the
95c0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
95d0: 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65 70 72 6f  OINIT.  C-prepro
95e0: 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57  cessor macro.  W
95f0: 68 65 6e 20 62 75 69 6c 74 20 75 73 69 6e 67 20  hen built using 
9600: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
9610: 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a 20 20 77  INIT, SQLite.  w
9620: 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69  ill not automati
9630: 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65  cally initialize
9640: 20 69 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20   itself and the 
9650: 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72  application is r
9660: 65 71 75 69 72 65 64 0a 20 20 74 6f 20 69 6e 76  equired.  to inv
9670: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  oke [sqlite3_ini
9680: 74 69 61 6c 69 7a 65 28 29 5d 20 64 69 72 65 63  tialize()] direc
9690: 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 62 65 67  tly prior to beg
96a0: 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66 20 74 68  inning use of th
96b0: 65 0a 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61  e.  SQLite libra
96c0: 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ry..}..COMPILE_O
96d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
96e0: 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  IT_AUTOMATIC_IND
96f0: 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  EX} {.  This opt
9700: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f  ion is used to o
9710: 6d 69 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f  mit the .  [auto
9720: 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20  matic indexing] 
9730: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 20  functionality.. 
9740: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49   See also: [SQLI
9750: 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d  TE_DEFAULT_AUTOM
9760: 41 54 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a  ATIC_INDEX]..}..
9770: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9780: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
9790: 52 45 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65  RESET} {.  By de
97a0: 66 61 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69  fault, the [sqli
97b0: 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65  te3_step()] inte
97c0: 72 66 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d  rface will autom
97d0: 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a  atically invoke.
97e0: 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74    [sqlite3_reset
97f0: 28 29 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65  ()] to reset the
9800: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
9810: 6d 65 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61  ment] if necessa
9820: 72 79 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70  ry.  This.  comp
9830: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
9840: 63 68 61 6e 67 65 73 20 74 68 61 74 20 62 65 68  changes that beh
9850: 61 76 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73  avior so that [s
9860: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77  qlite3_step()] w
9870: 69 6c 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51  ill.  return [SQ
9880: 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20  LITE_MISUSE] if 
9890: 69 74 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20  it called again 
98a0: 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20  after returning 
98b0: 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20  anything other. 
98c0: 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f   than [SQLITE_RO
98d0: 57 5d 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  W], [SQLITE_BUSY
98e0: 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f  ], or [SQLITE_LO
98f0: 43 4b 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65  CKED] unless the
9900: 72 65 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65  re was an.  inte
9910: 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20  rvening call to 
9920: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
9930: 5d 2e 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20  ]...  In SQLite 
9940: 76 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31  version 3.6.23.1
9950: 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b 73   and earlier, [s
9960: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 75  qlite3_step()] u
9970: 73 65 64 20 74 6f 20 61 6c 77 61 79 73 0a 20 20  sed to always.  
9980: 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d  return [SQLITE_M
9990: 49 53 55 53 45 5d 20 69 66 20 69 74 20 77 61 73  ISUSE] if it was
99a0: 20 69 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20 61   invoked again a
99b0: 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61  fter returning a
99c0: 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68 65 72 20  nything.  other 
99d0: 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57  than [SQLITE_ROW
99e0: 5d 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74  ] without an int
99f0: 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f  ervening call to
9a00: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
9a10: 29 5d 2e 0a 20 20 54 68 69 73 20 63 61 75 73 65  )]..  This cause
9a20: 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f  d problems on so
9a30: 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69 74 74 65  me poorly writte
9a40: 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70  n smartphone app
9a50: 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68 0a  lications which.
9a60: 20 20 64 69 64 20 6e 6f 74 20 63 6f 72 72 65 63    did not correc
9a70: 74 6c 79 20 68 61 6e 64 6c 65 20 74 68 65 20 5b  tly handle the [
9a80: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61  SQLITE_LOCKED] a
9a90: 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  nd [SQLITE_BUSY]
9aa0: 20 65 72 72 6f 72 20 0a 20 20 72 65 74 75 72 6e   error .  return
9ab0: 73 2e 20 20 52 61 74 68 65 72 20 74 68 61 6e 20  s.  Rather than 
9ac0: 66 69 78 20 74 68 65 20 6d 61 6e 79 20 64 65 66  fix the many def
9ad0: 65 63 74 69 76 65 20 73 6d 61 72 74 70 68 6f 6e  ective smartphon
9ae0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20  e applications, 
9af0: 0a 20 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  .  the behavior 
9b00: 6f 66 20 53 51 4c 69 74 65 20 77 61 73 20 63 68  of SQLite was ch
9b10: 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e  anged in 3.6.23.
9b20: 32 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c  2 to automatical
9b30: 6c 79 20 72 65 73 65 74 0a 20 20 74 68 65 20 70  ly reset.  the p
9b40: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
9b50: 74 2e 20 20 42 75 74 20 74 68 61 74 20 63 68 61  t.  But that cha
9b60: 6e 67 65 64 20 63 61 75 73 65 64 20 69 73 73 75  nged caused issu
9b70: 65 73 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 69  es in other .  i
9b80: 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d  mproperly implem
9b90: 65 6e 74 65 64 20 61 70 70 6c 69 63 61 74 69 6f  ented applicatio
9ba0: 6e 73 20 74 68 61 74 20 77 65 72 65 20 61 63 74  ns that were act
9bb0: 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20  ually looking.  
9bc0: 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d  for an [SQLITE_M
9bd0: 49 53 55 53 45 5d 20 72 65 74 75 72 6e 20 74 6f  ISUSE] return to
9be0: 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 69 72   terminate their
9bf0: 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28   query loops.  (
9c00: 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20 61 70 70  Anytime.  an app
9c10: 6c 69 63 61 74 69 6f 6e 20 67 65 74 73 20 61 6e  lication gets an
9c20: 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65   SQLITE_MISUSE e
9c30: 72 72 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20 53  rror code from S
9c40: 51 4c 69 74 65 2c 20 74 68 61 74 20 6d 65 61 6e  QLite, that mean
9c50: 73 20 74 68 65 0a 20 20 61 70 70 6c 69 63 61 74  s the.  applicat
9c60: 69 6f 6e 20 69 73 20 6d 69 73 75 73 69 6e 67 20  ion is misusing 
9c70: 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72  the SQLite inter
9c80: 66 61 63 65 20 61 6e 64 20 69 73 20 74 68 75 73  face and is thus
9c90: 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20 69   incorrectly.  i
9ca0: 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54 68  mplemented.)  Th
9cb0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  e SQLITE_OMIT_AU
9cc0: 54 4f 52 45 53 45 54 20 69 6e 74 65 72 66 61 63  TORESET interfac
9cd0: 65 20 77 61 73 20 61 64 64 65 64 20 74 6f 20 53  e was added to S
9ce0: 51 4c 69 74 65 0a 20 20 76 65 72 73 69 6f 6e 20  QLite.  version 
9cf0: 33 2e 37 2e 35 20 69 6e 20 61 6e 20 65 66 66 6f  3.7.5 in an effo
9d00: 72 74 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f 66  rt to get all of
9d10: 20 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20 20   the (broken).  
9d20: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
9d30: 77 6f 72 6b 20 61 67 61 69 6e 20 77 69 74 68 6f  work again witho
9d40: 75 74 20 68 61 76 69 6e 67 20 74 6f 20 61 63 74  ut having to act
9d50: 75 61 6c 6c 79 20 66 69 78 20 74 68 65 20 61 70  ually fix the ap
9d60: 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  plications..}..C
9d70: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9d80: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56  QLITE_OMIT_AUTOV
9d90: 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68  ACUUM} {.  If th
9da0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
9db0: 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72  ined, the librar
9dc0: 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20  y cannot create 
9dd0: 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20 20 64  or write to .  d
9de0: 61 74 61 62 61 73 65 73 20 74 68 61 74 20 73 75  atabases that su
9df0: 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63 75  pport [auto_vacu
9e00: 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  um]..  Executing
9e10: 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f   a [PRAGMA auto_
9e20: 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e  vacuum] statemen
9e30: 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  t is not an erro
9e40: 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f  r.  (since unkno
9e50: 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65 20 73  wn PRAGMAs are s
9e60: 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29  ilently ignored)
9e70: 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 72  , but does not r
9e80: 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a 20 20  eturn a value.  
9e90: 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20 61 75  or modify the au
9ea0: 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67 20 69  to-vacuum flag i
9eb0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
9ec0: 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61 62 61  ile. If a databa
9ed0: 73 65 20 74 68 61 74 0a 20 20 73 75 70 70 6f 72  se that.  suppor
9ee0: 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69  ts auto-vacuum i
9ef0: 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20 6c 69  s opened by a li
9f00: 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64 20 77  brary compiled w
9f10: 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c  ith this option,
9f20: 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d 61 74   it.  is automat
9f30: 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e  ically opened in
9f40: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e   read-only mode.
9f50: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9f60: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9f70: 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41  BETWEEN_OPTIMIZA
9f80: 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TION} {.  This o
9f90: 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
9fa0: 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65  he use of indice
9fb0: 73 20 77 69 74 68 20 57 48 45 52 45 20 63 6c 61  s with WHERE cla
9fc0: 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68 61 74  use terms.  that
9fd0: 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45 54 57   employ the BETW
9fe0: 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  EEN operator..}.
9ff0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a000: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f  {SQLITE_OMIT_BLO
a010: 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57  B_LITERAL} {.  W
a020: 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  hen this option 
a030: 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 69  is defined, it i
a040: 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
a050: 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c 6f 62  o specify a blob
a060: 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74 61   in.  an SQL sta
a070: 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74 68 65  tement using the
a080: 20 58 27 41 42 43 44 27 20 73 79 6e 74 61 78 2e   X'ABCD' syntax.
a090: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
a0a0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
a0b0: 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20 20  BTREECOUNT} {.  
a0c0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
a0d0: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61 6e 20   is defined, an 
a0e0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61  optimization tha
a0f0: 74 20 61 63 63 65 6c 65 72 61 74 65 73 20 63 6f  t accelerates co
a100: 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e 74  unting.  all ent
a110: 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c 65 20  ries in a table 
a120: 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  (in other words,
a130: 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e   an optimization
a140: 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20 22 53   that helps.  "S
a150: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
a160: 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e 20 66  ROM table" run f
a170: 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74 74 65  aster) is omitte
a180: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
a190: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
a1a0: 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20  T_BUILTIN_TEST} 
a1b0: 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20 53  {.  A standard S
a1c0: 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c  QLite build incl
a1d0: 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f  udes a small amo
a1e0: 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f 6e  unt of logic con
a1f0: 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68 65  trolled.  by the
a200: 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63   [sqlite3_test_c
a210: 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66  ontrol()] interf
a220: 61 63 65 20 74 68 61 74 20 69 73 20 75 73 65 64  ace that is used
a230: 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70   to exercise.  p
a240: 61 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69  arts of the SQLi
a250: 74 65 20 63 6f 72 65 20 74 68 61 74 20 61 72 65  te core that are
a260: 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 63 6f   difficult to co
a270: 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75 72  ntrol and measur
a280: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 73 74  e using.  the st
a290: 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54 68 69  andard API.  Thi
a2a0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
a2b0: 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74 65 73  hat built-in tes
a2c0: 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  t logic..}..COMP
a2d0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a2e0: 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a  TE_OMIT_CAST} {.
a2f0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
a300: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
a310: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
a320: 74 68 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f  the CAST operato
a330: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
a340: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
a350: 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69  T_CHECK} {.  Thi
a360: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
a370: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
a380: 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b  upport for CHECK
a390: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20   constraints..  
a3a0: 54 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20  The parser will 
a3b0: 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45  still accept CHE
a3c0: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69  CK constraints i
a3d0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
a3e0: 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75  ,.  they will ju
a3f0: 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63  st not be enforc
a400: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
a410: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a420: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
a430: 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73  _DIAGS} {.  This
a440: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
a450: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70  to omit the comp
a460: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
a470: 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69  diagnostics avai
a480: 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74  lable.  in SQLit
a490: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  e, including the
a4a0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c   [sqlite3_compil
a4b0: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20  eoption_used()] 
a4c0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
a4d0: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
a4e0: 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69  ()] C/C++ functi
a4f0: 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69  ons, the.  [sqli
a500: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
a510: 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71  _used()] and [sq
a520: 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
a530: 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75  on_get()] SQL fu
a540: 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74  nctions,.  and t
a550: 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69  he [compile_opti
a560: 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  ons pragma]..}..
a570: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a580: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
a590: 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LETE} {.  This o
a5a0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
a5b0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65   [sqlite3_comple
a5c0: 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  te()] and [sqlit
a5d0: 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d  e3_complete16()]
a5e0: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f  .  interfaces to
a5f0: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
a600: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a610: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
a620: 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20  OUND_SELECT} {. 
a630: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
a640: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
a650: 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43   compound [SELEC
a660: 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  T] functionality
a670: 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74  . .  [SELECT] st
a680: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73  atements that us
a690: 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20  e the .  UNION, 
a6a0: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
a6b0: 53 45 43 54 20 6f 72 20 45 58 43 45 50 54 20 63  SECT or EXCEPT c
a6c0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f  ompound SELECT o
a6d0: 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20  perators will . 
a6e0: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 20 65   cause a parse e
a6f0: 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53  rror...  An [INS
a700: 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 77  ERT] statement w
a710: 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c  ith multiple val
a720: 75 65 73 20 69 6e 20 74 68 65 20 56 41 4c 55 45  ues in the VALUE
a730: 53 20 63 6c 61 75 73 65 20 69 73 0a 20 20 69 6d  S clause is.  im
a740: 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e  plemented intern
a750: 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f 75  ally as a compou
a760: 6e 64 20 53 45 4c 45 43 54 2e 20 20 48 65 6e 63  nd SELECT.  Henc
a770: 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  e, this option a
a780: 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65 73 20 74  lso.  disables t
a790: 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e  he ability to in
a7a0: 73 65 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 61  sert more than a
a7b0: 20 73 69 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e   single row usin
a7c0: 67 20 61 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e  g an.  INSERT IN
a7d0: 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e  TO ... VALUES ..
a7e0: 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a  . statement..}..
a7f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a800: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 54 45 7d  SQLITE_OMIT_CTE}
a810: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a820: 20 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20   causes support 
a830: 66 6f 72 20 5b 63 6f 6d 6d 6f 6e 20 74 61 62 6c  for [common tabl
a840: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 5d 20 74  e expressions] t
a850: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
a860: 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  ...COMPILE_OPTIO
a870: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  N {SQLITE_OMIT_D
a880: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b  ATETIME_FUNCS} {
a890: 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
a8a0: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  n is defined, SQ
a8b0: 4c 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e 20  Lite's built-in 
a8c0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d 61  date and time ma
a8d0: 6e 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e  nipulation.  fun
a8e0: 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74  ctions are omitt
a8f0: 65 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ed. Specifically
a900: 2c 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  , the SQL functi
a910: 6f 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c  ons julianday(),
a920: 20 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65 28   date(),.  time(
a930: 29 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61 6e  ), datetime() an
a940: 64 20 73 74 72 66 74 69 6d 65 28 29 20 61 72 65  d strftime() are
a950: 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20   not available. 
a960: 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 75  The default colu
a970: 6d 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52 52  mn.  values CURR
a980: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
a990: 54 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52 45  T_DATE and CURRE
a9a0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 61 72 65  NT_TIMESTAMP are
a9b0: 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65   still available
a9c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a9d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
a9e0: 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54  _DECLTYPE} {.  T
a9f0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
aa00: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
aa10: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
aa20: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .  [sqlite3_colu
aa30: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61  mn_decltype()] a
aa40: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  nd [sqlite3_colu
aa50: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d  mn_decltype16()]
aa60: 0a 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  .  interfaces..}
aa70: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
aa80: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45   {SQLITE_OMIT_DE
aa90: 50 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68  PRECATED} {.  Th
aaa0: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
aab0: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
aac0: 73 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65  support for inte
aad0: 72 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20  rfaces.  marked 
aae0: 61 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20  as deprecated.  
aaf0: 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20  This includes . 
ab00: 20 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67   [sqlite3_aggreg
ab10: 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20  ate_count()],.  
ab20: 5b 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64  [sqlite3_expired
ab30: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
ab40: 74 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67  transfer_binding
ab50: 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33  s()],.  [sqlite3
ab60: 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28  _global_recover(
ab70: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  )],.  [sqlite3_t
ab80: 68 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d  hread_cleanup()]
ab90: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
aba0: 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20  memory_alarm()] 
abb0: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
abc0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
abd0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49  QLITE_OMIT_DISKI
abe0: 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  O} {.  This opti
abf0: 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70  on omits all sup
ac00: 70 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67  port for writing
ac10: 20 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64   to the disk and
ac20: 20 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61   forces.  databa
ac30: 73 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20  ses to exist in 
ac40: 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68  memory only.  Th
ac50: 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f  is option has no
ac60: 74 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61  t been .  mainta
ac70: 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c  ined and probabl
ac80: 79 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20  y does not work 
ac90: 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73 69  with newer versi
aca0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d  ons of SQLite..}
acb0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
acc0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58   {SQLITE_OMIT_EX
acd0: 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e  PLAIN} {.  Defin
ace0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
acf0: 63 61 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c  causes the [EXPL
ad00: 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  AIN] command to 
ad10: 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  be omitted from 
ad20: 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41  the.  library. A
ad30: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
ad40: 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e  cute an [EXPLAIN
ad50: 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  ] statement will
ad60: 20 63 61 75 73 65 20 61 20 70 61 72 73 65 0a 20   cause a parse. 
ad70: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
ad80: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
ad90: 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47  E_OMIT_FLAG_PRAG
ada0: 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  MAS} {.  This op
adb0: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
adc0: 72 74 20 66 6f 72 20 61 20 73 75 62 73 65 74 20  rt for a subset 
add0: 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  of [PRAGMA] comm
ade0: 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65 72  ands that.  quer
adf0: 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61  y and set boolea
ae00: 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a  n properties..}.
ae10: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ae20: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f  {SQLITE_OMIT_FLO
ae30: 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20  ATING_POINT} {. 
ae40: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
ae50: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f  used to omit flo
ae60: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62  ating-point numb
ae70: 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20  er support from 
ae80: 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62  the SQLite.  lib
ae90: 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69  rary. When speci
aea0: 66 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67  fied, specifying
aeb0: 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
aec0: 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69  t number as a li
aed0: 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22  teral .  (i.e. "
aee0: 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20 69  1.01") results i
aef0: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
af00: 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75  ..  <p>In the fu
af10: 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f  ture, this optio
af20: 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62  n may also disab
af30: 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e  le other floatin
af40: 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74  g point .  funct
af50: 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78  ionality, for ex
af60: 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74  ample the [sqlit
af70: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
af80: 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33  ()], .  [sqlite3
af90: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c  _bind_double()],
afa0: 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
afb0: 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20  double()] and.  
afc0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
afd0: 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75  double()] API fu
afe0: 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a  nctions..  </p>.
aff0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b000: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  N {SQLITE_OMIT_F
b010: 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20  OREIGN_KEY} {.  
b020: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
b030: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
b040: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
b050: 73 74 72 61 69 6e 74 5d 20 73 79 6e 74 61 78 20  straint] syntax 
b060: 69 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69  is.  not recogni
b070: 7a 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  zed..}..COMPILE_
b080: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b090: 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b  MIT_GET_TABLE} {
b0a0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
b0b0: 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f  auses support fo
b0c0: 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  r [sqlite3_get_t
b0d0: 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73  able()] and.  [s
b0e0: 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
b0f0: 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74  e()] to be omitt
b100: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
b110: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b120: 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20  IT_INCRBLOB} {. 
b130: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
b140: 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ses support for 
b150: 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20  [sqlite3_blob | 
b160: 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42  incremental BLOB
b170: 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d   I/O].  to be om
b180: 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  itted..}..COMPIL
b190: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b1a0: 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f  _OMIT_INTEGRITY_
b1b0: 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  CHECK} {.  This 
b1c0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
b1d0: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e  port for the [in
b1e0: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72  tegrity_check pr
b1f0: 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  agma]..}..COMPIL
b200: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b210: 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d  _OMIT_LIKE_OPTIM
b220: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
b230: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
b240: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66  s the ability of
b250: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69   SQLite to use i
b260: 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20  ndices to help. 
b270: 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20   resolve [LIKE] 
b280: 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61  and [GLOB] opera
b290: 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45 20  tors in a WHERE 
b2a0: 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  clause..}..COMPI
b2b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b2c0: 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45  E_OMIT_LOAD_EXTE
b2d0: 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  NSION} {.  This 
b2e0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
b2f0: 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f   entire extensio
b300: 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e  n loading mechan
b310: 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74  ism from.  SQLit
b320: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71  e, including [sq
b330: 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
b340: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61  d_extension()] a
b350: 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  nd.  [sqlite3_lo
b360: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
b370: 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43  interfaces..}..C
b380: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b390: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c  QLITE_OMIT_LOCAL
b3a0: 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TIME} {.  This o
b3b0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
b3c0: 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69  "localtime" modi
b3d0: 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61  fier from the da
b3e0: 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75  te and time.  fu
b3f0: 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f  nctions.  This o
b400: 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d  ption is sometim
b410: 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74  es useful when t
b420: 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65  rying to compile
b430: 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  .  the date and 
b440: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f  time functions o
b450: 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61  n a platform tha
b460: 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f  t does not suppo
b470: 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74  rt the.  concept
b480: 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a   of local time..
b490: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b4a0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
b4b0: 4f 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54 68  OOKASIDE} {.  Th
b4c0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
b4d0: 74 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  the [lookaside m
b4e0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
b4f0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
b500: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
b510: 5f 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57  _MEMORYDB} {.  W
b520: 68 65 6e 20 74 68 69 73 20 69 73 20 64 65 66 69  hen this is defi
b530: 6e 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79  ned, the library
b540: 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63   does not respec
b550: 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61  t the special da
b560: 74 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a  tabase.  name ":
b570: 6d 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c  memory:" (normal
b580: 6c 79 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  ly used to creat
b590: 65 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20  e an [in-memory 
b5a0: 64 61 74 61 62 61 73 65 5d 29 2e 20 49 66 20 0a  database]). If .
b5b0: 20 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20    ":memory:" is 
b5c0: 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
b5d0: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
b5e0: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
b5f0: 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70  or.  [sqlite3_op
b600: 65 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c 65  en_v2()], a file
b610: 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20   with this name 
b620: 77 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65  will be .  opene
b630: 64 20 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a  d or created..}.
b640: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b650: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f  {SQLITE_OMIT_OR_
b660: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
b670: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69    This option di
b680: 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69  sables the abili
b690: 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20  ty of SQLite to 
b6a0: 75 73 65 20 61 6e 20 69 6e 64 65 78 20 74 6f 67  use an index tog
b6b0: 65 74 68 65 72 0a 20 20 77 69 74 68 20 74 65 72  ether.  with ter
b6c0: 6d 73 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c  ms of a WHERE cl
b6d0: 61 75 73 65 20 63 6f 6e 6e 65 63 74 65 64 20 62  ause connected b
b6e0: 79 20 74 68 65 20 4f 52 20 6f 70 65 72 61 74 6f  y the OR operato
b6f0: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
b700: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b710: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 7d  T_PAGER_PRAGMAS}
b720: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
b730: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
b740: 70 72 61 67 6d 61 73 20 72 65 6c 61 74 65 64 20  pragmas related 
b750: 74 6f 20 74 68 65 20 70 61 67 65 72 20 73 75 62  to the pager sub
b760: 73 79 73 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74  system from .  t
b770: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
b780: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b790: 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d  ITE_OMIT_PRAGMA}
b7a0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
b7b0: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
b7c0: 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
b7d0: 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65  mmand.  from the
b7e0: 20 6c 69 62 72 61 72 79 2e 20 4e 6f 74 65 20 74   library. Note t
b7f0: 68 61 74 20 69 74 20 69 73 20 75 73 65 66 75 6c  hat it is useful
b800: 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20 6d   to define the m
b810: 61 63 72 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a  acros that omit.
b820: 20 20 73 70 65 63 69 66 69 63 20 70 72 61 67 6d    specific pragm
b830: 61 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  as in addition t
b840: 6f 20 74 68 69 73 2c 20 61 73 20 74 68 65 79 20  o this, as they 
b850: 6d 61 79 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20  may also remove 
b860: 73 75 70 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a  supporting code.
b870: 20 20 69 6e 20 6f 74 68 65 72 20 73 75 62 2d 73    in other sub-s
b880: 79 73 74 65 6d 73 2e 20 54 68 69 73 20 6d 61 63  ystems. This mac
b890: 72 6f 20 72 65 6d 6f 76 65 73 20 74 68 65 20 5b  ro removes the [
b8a0: 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20  PRAGMA] command 
b8b0: 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  only..}..COMPILE
b8c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b8d0: 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41  OMIT_PROGRESS_CA
b8e0: 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73  LLBACK} {.  This
b8f0: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 64   option may be d
b900: 65 66 69 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74  efined to omit t
b910: 68 65 20 63 61 70 61 62 69 6c 69 74 79 20 74 6f  he capability to
b920: 20 69 73 73 75 65 20 22 70 72 6f 67 72 65 73 73   issue "progress
b930: 22 20 0a 20 20 63 61 6c 6c 62 61 63 6b 73 20 64  " .  callbacks d
b940: 75 72 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69  uring long-runni
b950: 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
b960: 73 2e 20 54 68 65 20 0a 20 20 5b 73 71 6c 69 74  s. The .  [sqlit
b970: 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64  e3_progress_hand
b980: 6c 65 72 28 29 5d 0a 20 20 41 50 49 20 66 75 6e  ler()].  API fun
b990: 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65  ction is not pre
b9a0: 73 65 6e 74 20 69 6e 20 74 68 65 20 6c 69 62 72  sent in the libr
b9b0: 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ary..}..COMPILE_
b9c0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b9d0: 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45  MIT_QUICKBALANCE
b9e0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b9f0: 6e 20 6f 6d 69 74 73 20 61 6e 20 61 6c 74 65 72  n omits an alter
ba00: 6e 61 74 69 76 65 2c 20 66 61 73 74 65 72 20 42  native, faster B
ba10: 2d 54 72 65 65 20 62 61 6c 61 6e 63 69 6e 67 20  -Tree balancing 
ba20: 72 6f 75 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67  routine..  Using
ba30: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b   this option mak
ba40: 65 73 20 53 51 4c 69 74 65 20 73 6c 69 67 68 74  es SQLite slight
ba50: 6c 79 20 73 6d 61 6c 6c 65 72 20 61 74 20 74 68  ly smaller at th
ba60: 65 20 65 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d  e expense of.  m
ba70: 61 6b 69 6e 67 20 69 74 20 72 75 6e 20 73 6c 69  aking it run sli
ba80: 67 68 74 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a  ghtly slower..}.
ba90: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
baa0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49  {SQLITE_OMIT_REI
bab0: 4e 44 45 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74  NDEX} {.  When t
bac0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
bad0: 66 69 6e 65 64 2c 20 74 68 65 20 5b 52 45 49 4e  fined, the [REIN
bae0: 44 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69  DEX].  command i
baf0: 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
bb00: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20  n the library.. 
bb10: 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 52 45   Executing a [RE
bb20: 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e 74  INDEX] statement
bb30: 20 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72   causes .  a par
bb40: 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d  se error..}..COM
bb50: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
bb60: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
bb70: 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66  PRAGMAS} {.  Def
bb80: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
bb90: 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20  n omits pragmas 
bba0: 66 6f 72 20 71 75 65 72 79 69 6e 67 20 74 68 65  for querying the
bbb0: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
bbc0: 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69   from .  the bui
bbd0: 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ld..}..COMPILE_O
bbe0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bbf0: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
bc00: 4e 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44  N_PRAGMAS} {.  D
bc10: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
bc20: 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61  ion omits pragma
bc30: 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20 61  s for querying a
bc40: 6e 64 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65  nd modifying the
bc50: 20 0a 20 20 64 61 74 61 62 61 73 65 20 73 63 68   .  database sch
bc60: 65 6d 61 20 76 65 72 73 69 6f 6e 20 61 6e 64 20  ema version and 
bc70: 75 73 65 72 20 76 65 72 73 69 6f 6e 20 66 72 6f  user version fro
bc80: 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 53 70 65  m the build. Spe
bc90: 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a  cifically, the .
bca0: 20 20 5b 73 63 68 65 6d 61 5f 76 65 72 73 69 6f    [schema_versio
bcb0: 6e 5d 20 61 6e 64 20 5b 75 73 65 72 5f 76 65 72  n] and [user_ver
bcc0: 73 69 6f 6e 5d 20 50 52 41 47 4d 41 73 20 61 72  sion] PRAGMAs ar
bcd0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
bce0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
bcf0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44  LITE_OMIT_SHARED
bd00: 5f 43 41 43 48 45 7d 20 7b 0a 20 20 54 68 69 73  _CACHE} {.  This
bd10: 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 53   option builds S
bd20: 51 4c 69 74 65 20 77 69 74 68 6f 75 74 20 73 75  QLite without su
bd30: 70 70 6f 72 74 20 66 6f 72 20 73 68 61 72 65 64  pport for shared
bd40: 2d 63 61 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54  -cache mode..  T
bd50: 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  he [sqlite3_enab
bd60: 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
bd70: 29 5d 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6c  )] is omitted al
bd80: 6f 6e 67 20 77 69 74 68 20 61 20 66 61 69 72 0a  ong with a fair.
bd90: 20 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69    amount of logi
bda0: 63 20 77 69 74 68 69 6e 20 74 68 65 20 42 2d 54  c within the B-T
bdb0: 72 65 65 20 73 75 62 73 79 73 74 65 6d 20 61 73  ree subsystem as
bdc0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 73 68  sociated with sh
bdd0: 61 72 65 64 0a 20 20 63 61 63 68 65 20 6d 61 6e  ared.  cache man
bde0: 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50  agement..}..COMP
bdf0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
be00: 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52 59  TE_OMIT_SUBQUERY
be10: 7d 20 7b 0a 20 20 49 66 20 64 65 66 69 6e 65 64  } {.  If defined
be20: 2c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 75  , support for su
be30: 62 2d 73 65 6c 65 63 74 73 20 61 6e 64 20 74 68  b-selects and th
be40: 65 20 49 4e 28 29 20 6f 70 65 72 61 74 6f 72 20  e IN() operator 
be50: 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a  are omitted..}..
be60: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
be70: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f  SQLITE_OMIT_TCL_
be80: 56 41 52 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66  VARIABLE} {.  If
be90: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
bea0: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65  efined, then the
beb0: 20 73 70 65 63 69 61 6c 20 22 24 3c 76 61 72 69   special "$<vari
bec0: 61 62 6c 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74  able-name>" synt
bed0: 61 78 0a 20 20 75 73 65 64 20 74 6f 20 61 75 74  ax.  used to aut
bee0: 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20  omatically bind 
bef0: 53 51 4c 20 76 61 72 69 61 62 6c 65 73 20 74 6f  SQL variables to
bf00: 20 54 43 4c 20 76 61 72 69 61 62 6c 65 73 20 69   TCL variables i
bf10: 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  s omitted..}..CO
bf20: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
bf30: 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42  LITE_OMIT_TEMPDB
bf40: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
bf50: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
bf60: 66 6f 72 20 54 45 4d 50 20 6f 72 20 54 45 4d 50  for TEMP or TEMP
bf70: 4f 52 41 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a  ORARY tables..}.
bf80: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
bf90: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41  {SQLITE_OMIT_TRA
bfa0: 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CE} {.  This opt
bfb0: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
bfc0: 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74  t for the [sqlit
bfd0: 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e  e3_profile()] an
bfe0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61  d.  [sqlite3_tra
bff0: 63 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  ce()] interfaces
c000: 20 61 6e 64 20 74 68 65 69 72 20 61 73 73 6f 63   and their assoc
c010: 69 61 74 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a  iated logic..}..
c020: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c030: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47  SQLITE_OMIT_TRIG
c040: 47 45 52 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  GER} {.  Definin
c050: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
c060: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
c070: 54 52 49 47 47 45 52 20 6f 62 6a 65 63 74 73 2e  TRIGGER objects.
c080: 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20   Neither the .  
c090: 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d  [CREATE TRIGGER]
c0a0: 20 6f 72 20 5b 44 52 4f 50 20 54 52 49 47 47 45   or [DROP TRIGGE
c0b0: 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72  R].  commands ar
c0c0: 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74  e available in t
c0d0: 68 69 73 20 63 61 73 65 2c 20 61 6e 64 20 61 74  his case, and at
c0e0: 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63  tempting to exec
c0f0: 75 74 65 0a 20 20 65 69 74 68 65 72 20 77 69 6c  ute.  either wil
c100: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61  l result in a pa
c110: 72 73 65 20 65 72 72 6f 72 2e 0a 20 20 54 68 69  rse error..  Thi
c120: 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 20 64 69  s option also di
c130: 73 61 62 6c 65 73 20 65 6e 66 6f 72 63 65 6d 65  sables enforceme
c140: 6e 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b  nt of [foreign k
c150: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2c  ey constraints],
c160: 0a 20 20 73 69 6e 63 65 20 74 68 65 20 63 6f 64  .  since the cod
c170: 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  e that implement
c180: 73 20 74 72 69 67 67 65 72 73 20 61 6e 64 20 77  s triggers and w
c190: 68 69 63 68 20 69 73 20 6f 6d 69 74 74 65 64 20  hich is omitted 
c1a0: 62 79 20 74 68 69 73 0a 20 20 6f 70 74 69 6f 6e  by this.  option
c1b0: 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 74 6f   is also used to
c1c0: 20 69 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f 72 65   implement [fore
c1d0: 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d  ign key actions]
c1e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c1f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
c200: 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49  _TRUNCATE_OPTIMI
c210: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 41 20 64 65  ZATION} {.  A de
c220: 66 61 75 6c 74 20 62 75 69 6c 64 20 6f 66 20 53  fault build of S
c230: 51 4c 69 74 65 2c 20 69 66 20 61 20 5b 44 45 4c  QLite, if a [DEL
c240: 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 68  ETE] statement h
c250: 61 73 20 6e 6f 20 57 48 45 52 45 20 63 6c 61 75  as no WHERE clau
c260: 73 65 0a 20 20 61 6e 64 20 6f 70 65 72 61 74 65  se.  and operate
c270: 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74  s on a table wit
c280: 68 20 6e 6f 20 74 72 69 67 67 65 72 73 2c 20 61  h no triggers, a
c290: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f  n optimization o
c2a0: 63 63 75 72 73 20 74 68 61 74 0a 20 20 63 61 75  ccurs that.  cau
c2b0: 73 65 73 20 74 68 65 20 44 45 4c 45 54 45 20 74  ses the DELETE t
c2c0: 6f 20 6f 63 63 75 72 20 62 79 20 64 72 6f 70 70  o occur by dropp
c2d0: 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69  ing and recreati
c2e0: 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20 0a  ng the table.  .
c2f0: 20 20 44 72 6f 70 70 69 6e 67 20 61 6e 64 20 72    Dropping and r
c300: 65 63 72 65 61 74 69 6e 67 20 61 20 74 61 62 6c  ecreating a tabl
c310: 65 20 69 73 20 75 73 75 61 6c 6c 79 20 6d 75 63  e is usually muc
c320: 68 20 66 61 73 74 65 72 20 74 68 61 6e 20 64 65  h faster than de
c330: 6c 65 74 69 6e 67 0a 20 20 74 68 65 20 74 61 62  leting.  the tab
c340: 6c 65 20 63 6f 6e 74 65 6e 74 20 72 6f 77 20 62  le content row b
c350: 79 20 72 6f 77 2e 20 20 54 68 69 73 20 69 73 20  y row.  This is 
c360: 74 68 65 20 22 74 72 75 6e 63 61 74 65 20 6f 70  the "truncate op
c370: 74 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a  timization"..}..
c380: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c390: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31  SQLITE_OMIT_UTF1
c3a0: 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  6} {.  This macr
c3b0: 6f 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  o is used to omi
c3c0: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 55 54  t support for UT
c3d0: 46 31 36 20 74 65 78 74 20 65 6e 63 6f 64 69 6e  F16 text encodin
c3e0: 67 2e 20 57 68 65 6e 20 74 68 69 73 20 69 73 0a  g. When this is.
c3f0: 20 20 64 65 66 69 6e 65 64 20 61 6c 6c 20 41 50    defined all AP
c400: 49 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74  I functions that
c410: 20 72 65 74 75 72 6e 20 6f 72 20 61 63 63 65 70   return or accep
c420: 74 20 55 54 46 31 36 20 65 6e 63 6f 64 65 64 20  t UTF16 encoded 
c430: 74 65 78 74 20 61 72 65 0a 20 20 75 6e 61 76 61  text are.  unava
c440: 69 6c 61 62 6c 65 2e 20 54 68 65 73 65 20 66 75  ilable. These fu
c450: 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 69  nctions can be i
c460: 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65  dentified by the
c470: 20 66 61 63 74 20 74 68 61 74 20 74 68 65 79 20   fact that they 
c480: 65 6e 64 0a 20 20 77 69 74 68 20 27 31 36 27 2c  end.  with '16',
c490: 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b 73 71   for example [sq
c4a0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
c4b0: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  )], [sqlite3_col
c4c0: 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20 61 6e  umn_text16()] an
c4d0: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  d.  [sqlite3_bin
c4e0: 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a  d_text16()]..}..
c4f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c500: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55  SQLITE_OMIT_VACU
c510: 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  UM} {.  When thi
c520: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
c530: 6e 65 64 2c 20 74 68 65 20 5b 56 41 43 55 55 4d  ned, the [VACUUM
c540: 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  ].  command is n
c550: 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
c560: 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78  he library..  Ex
c570: 65 63 75 74 69 6e 67 20 61 20 5b 56 41 43 55 55  ecuting a [VACUU
c580: 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  M] statement cau
c590: 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65  ses .  a parse e
c5a0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
c5b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c5c0: 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20 20 44  OMIT_VIEW} {.  D
c5d0: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
c5e0: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
c5f0: 74 20 66 6f 72 20 56 49 45 57 20 6f 62 6a 65 63  t for VIEW objec
c600: 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20  ts. Neither the 
c610: 0a 20 20 5b 43 52 45 41 54 45 20 56 49 45 57 5d  .  [CREATE VIEW]
c620: 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50 20 56   nor the [DROP V
c630: 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20  IEW].  commands 
c640: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e  are available in
c650: 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 0a   this case, and.
c660: 20 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20    attempting to 
c670: 65 78 65 63 75 74 65 20 65 69 74 68 65 72 20 77  execute either w
c680: 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20  ill result in a 
c690: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20  parse error...  
c6a0: 57 41 52 4e 49 4e 47 3a 20 49 66 20 74 68 69 73  WARNING: If this
c6b0: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
c6c0: 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62  d, it will not b
c6d0: 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70  e possible to op
c6e0: 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a 20 20  en a database.  
c6f0: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 73 63  for which the sc
c700: 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20 56 49  hema contains VI
c710: 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a  EW objects. .}..
c720: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c730: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54  SQLITE_OMIT_VIRT
c740: 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68  UALTABLE} {.  Th
c750: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c760: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
c770: 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 20 7c 20  [sqlite3_vtab | 
c780: 56 69 72 74 75 61 6c 20 54 61 62 6c 65 5d 0a 20  Virtual Table]. 
c790: 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20 53 51   mechanism in SQ
c7a0: 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  Lite..}..COMPILE
c7b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c7c0: 4f 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20 20 54 68  OMIT_WAL} {.  Th
c7d0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c7e0: 74 68 65 20 22 5b 77 72 69 74 65 2d 61 68 65 61  the "[write-ahea
c7f0: 64 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e 20  d log]" (a.k.a. 
c800: 22 5b 57 41 4c 5d 22 29 20 63 61 70 61 62 69 6c  "[WAL]") capabil
c810: 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ity..}..COMPILE_
c820: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
c830: 4d 49 54 5f 57 53 44 7d 20 7b 0a 20 20 54 68 69  MIT_WSD} {.  Thi
c840: 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20  s option builds 
c850: 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  a version of the
c860: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
c870: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f  that contains no
c880: 0a 20 20 57 72 69 74 61 62 6c 65 20 53 74 61 74  .  Writable Stat
c890: 69 63 20 44 61 74 61 20 28 57 53 44 29 2e 20 20  ic Data (WSD).  
c8a0: 57 53 44 20 69 73 20 67 6c 6f 62 61 6c 20 76 61  WSD is global va
c8b0: 72 69 61 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73  riables and/or s
c8c0: 74 61 74 69 63 0a 20 20 76 61 72 69 61 62 6c 65  tatic.  variable
c8d0: 73 2e 20 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72  s.  Some platfor
c8e0: 6d 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72  ms do not suppor
c8f0: 74 20 57 53 44 2c 20 61 6e 64 20 74 68 69 73 20  t WSD, and this 
c900: 6f 70 74 69 6f 6e 20 69 73 20 6e 65 63 65 73 73  option is necess
c910: 61 72 79 0a 20 20 69 6e 20 6f 72 64 65 72 20 66  ary.  in order f
c920: 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 77 6f 72  or SQLite to wor
c930: 6b 20 74 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d  k those platform
c940: 73 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f  s.  ..  Unlike o
c950: 74 68 65 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e  ther OMIT option
c960: 73 20 77 68 69 63 68 20 6d 61 6b 65 20 74 68 65  s which make the
c970: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
c980: 73 6d 61 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20  smaller,.  this 
c990: 6f 70 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20  option actually 
c9a0: 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 73 69  increases the si
c9b0: 7a 65 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64  ze of SQLite and
c9c0: 20 6d 61 6b 65 73 20 69 74 20 72 75 6e 0a 20 20   makes it run.  
c9d0: 61 20 6c 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e  a little slower.
c9e0: 20 20 4f 6e 6c 79 20 75 73 65 20 74 68 69 73 20    Only use this 
c9f0: 6f 70 74 69 6f 6e 20 69 66 20 53 51 4c 69 74 65  option if SQLite
ca00: 20 69 73 20 62 65 69 6e 67 20 62 75 69 6c 74 20   is being built 
ca10: 66 6f 72 20 61 6e 0a 20 20 65 6d 62 65 64 64 65  for an.  embedde
ca20: 64 20 74 61 72 67 65 74 20 74 68 61 74 20 64 6f  d target that do
ca30: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57  es not support W
ca40: 53 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  SD..}..COMPILE_O
ca50: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
ca60: 49 54 5f 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20  IT_XFER_OPT} {. 
ca70: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
ca80: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6f  ts support for o
ca90: 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61  ptimizations tha
caa0: 74 20 68 65 6c 70 20 73 74 61 74 65 6d 65 6e 74  t help statement
cab0: 73 0a 20 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  s.  of the form 
cac0: 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e  "INSERT INTO ...
cad0: 20 53 45 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e   SELECT ..." run
cae0: 20 66 61 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50   faster..}..COMP
caf0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
cb00: 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20  TE_ZERO_MALLOC} 
cb10: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
cb20: 6f 6d 69 74 73 20 62 6f 74 68 20 74 68 65 20 5b  omits both the [
cb30: 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
cb40: 6c 6c 6f 63 61 74 6f 72 5d 20 61 6e 64 20 74 68  llocator] and th
cb50: 65 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20 6d  e.  [debugging m
cb60: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
cb70: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20   from the build 
cb80: 61 6e 64 20 73 75 62 73 74 69 74 75 74 65 73 20  and substitutes 
cb90: 61 20 73 74 75 62 0a 20 20 6d 65 6d 6f 72 79 20  a stub.  memory 
cba0: 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20 61  allocator that a
cbb0: 6c 77 61 79 73 20 66 61 69 6c 73 2e 20 20 53 51  lways fails.  SQ
cbc0: 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20 72 75  Lite will not ru
cbd0: 6e 20 77 69 74 68 20 74 68 69 73 0a 20 20 73 74  n with this.  st
cbe0: 75 62 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ub memory alloca
cbf0: 74 6f 72 20 73 69 6e 63 65 20 69 74 20 77 69 6c  tor since it wil
cc00: 6c 20 62 65 20 75 6e 61 62 6c 65 20 74 6f 20 61  l be unable to a
cc10: 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79 2e 20  llocate memory. 
cc20: 20 42 75 74 0a 20 20 74 68 69 73 20 73 74 75 62   But.  this stub
cc30: 20 63 61 6e 20 62 65 20 72 65 70 6c 61 63 65 64   can be replaced
cc40: 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75   at start-time u
cc50: 73 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f  sing.  [sqlite3_
cc60: 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f  config]([SQLITE_
cc70: 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e  CONFIG_MALLOC],.
cc80: 2e 2e 29 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65  ..) or.  [sqlite
cc90: 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54  3_config]([SQLIT
cca0: 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 2c 2e  E_CONFIG_HEAP],.
ccb0: 2e 2e 29 2e 0a 20 20 53 6f 20 74 68 65 20 6e 65  ..)..  So the ne
ccc0: 74 20 65 66 66 65 63 74 20 6f 66 20 74 68 69 73  t effect of this
ccd0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
cce0: 74 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20  tion is that it 
ccf0: 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65 0a 20 20  allows SQLite.  
cd00: 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61  to be compiled a
cd10: 6e 64 20 6c 69 6e 6b 65 64 20 61 67 61 69 6e 73  nd linked agains
cd20: 74 20 61 20 73 79 73 74 65 6d 20 6c 69 62 72 61  t a system libra
cd30: 72 79 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  ry that does not
cd40: 20 73 75 70 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f   support.  mallo
cd50: 63 28 29 2c 20 66 72 65 65 28 29 2c 20 61 6e 64  c(), free(), and
cd60: 2f 6f 72 20 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d  /or realloc()..}
cd70: 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65  ..</tcl>.<a name
cd80: 3d 22 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e  ="debugoptions">
cd90: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 37 20 41 6e 61  </a>.<h2>1.7 Ana
cda0: 6c 79 73 69 73 20 61 6e 64 20 44 65 62 75 67 67  lysis and Debugg
cdb0: 69 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e  ing Options</h2>
cdc0: 0a 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f  .<tcl>..COMPILE_
cdd0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
cde0: 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51  EBUG} {.  The SQ
cdf0: 4c 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65  Lite source code
ce00: 20 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72 61   contains litera
ce10: 6c 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f 66  lly thousands of
ce20: 20 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d   assert() statem
ce30: 65 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20 76  ents.  used to v
ce40: 65 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20 61  erify internal a
ce50: 73 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20 73  ssumptions and s
ce60: 75 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f 6e  ubroutine precon
ce70: 64 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70 6f  ditions and.  po
ce80: 73 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20 54  stconditions.  T
ce90: 68 65 73 65 20 61 73 73 65 72 74 28 29 20 73 74  hese assert() st
cea0: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 72  atements are nor
ceb0: 6d 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66 66  mally turned off
cec0: 0a 20 20 28 74 68 65 79 20 67 65 6e 65 72 61 74  .  (they generat
ced0: 65 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63 65  e no code) since
cee0: 20 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f 6e   turning them on
cef0: 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72 75   makes SQLite ru
cf00: 6e 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a  n approximately.
cf10: 20 20 74 68 72 65 65 20 74 69 6d 65 73 20 73 6c    three times sl
cf20: 6f 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20 74  ower.  But for t
cf30: 65 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79  esting and analy
cf40: 73 69 73 2c 20 69 74 20 69 73 20 75 73 65 66 75  sis, it is usefu
cf50: 6c 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65 20  l to turn.  the 
cf60: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
cf70: 6e 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51 4c  nts on.  The SQL
cf80: 49 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69 6c  ITE_DEBUG compil
cf90: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 6f  e-time option do
cfa0: 65 73 20 74 68 69 73 2e 0a 20 20 3c 70 3e 53 51  es this..  <p>SQ
cfb0: 4c 49 54 45 5f 44 45 42 55 47 20 61 6c 73 6f 20  LITE_DEBUG also 
cfc0: 65 6e 61 62 6c 65 73 20 73 6f 6d 65 20 6f 74 68  enables some oth
cfd0: 65 72 20 64 65 62 75 67 67 69 6e 67 20 66 65 61  er debugging fea
cfe0: 74 75 72 65 73 2c 20 73 75 63 68 20 61 73 0a 20  tures, such as. 
cff0: 20 73 70 65 63 69 61 6c 20 5b 50 52 41 47 4d 41   special [PRAGMA
d000: 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61  ] statements tha
d010: 74 20 74 75 72 6e 20 6f 6e 20 74 72 61 63 69 6e  t turn on tracin
d020: 67 20 61 6e 64 20 6c 69 73 74 69 6e 67 20 66 65  g and listing fe
d030: 61 74 75 72 65 73 0a 20 20 75 73 65 64 20 66 6f  atures.  used fo
d040: 72 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e  r troubleshootin
d050: 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 20 6f  g and analysis o
d060: 66 20 74 68 65 20 5b 56 44 42 45 5d 20 61 6e 64  f the [VDBE] and
d070: 20 63 6f 64 65 20 67 65 6e 65 72 61 74 6f 72 2e   code generator.
d080: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
d090: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45  ON {SQLITE_MEMDE
d0a0: 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  BUG} {.  The SQL
d0b0: 49 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74  ITE_MEMDEBUG opt
d0c0: 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e  ion causes an in
d0d0: 73 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64  strumented .  [d
d0e0: 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20  ebugging memory 
d0f0: 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20  allocator].  to 
d100: 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 64  be used as the d
d110: 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c  efault memory al
d120: 6c 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53  locator within S
d130: 51 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e  QLite.  The.  in
d140: 73 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72  strumented memor
d150: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63  y allocator chec
d160: 6b 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66  ks for misuse of
d170: 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c   dynamically all
d180: 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e  ocated.  memory.
d190: 20 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69    Examples of mi
d1a0: 73 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69  suse include usi
d1b0: 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20  ng memory after 
d1c0: 69 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77  it is freed,.  w
d1d0: 72 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65  riting off the e
d1e0: 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20  nds of a memory 
d1f0: 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65  allocation, free
d200: 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70  ing memory not p
d210: 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61  reviously.  obta
d220: 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65  ined from the me
d230: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20  mory allocator, 
d240: 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e  or failing to in
d250: 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20  itialize newly. 
d260: 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72   allocated memor
d270: 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 61 20  y..}..</tcl>.<a 
d280: 6e 61 6d 65 3d 22 77 69 6e 33 32 6f 70 74 69 6f  name="win32optio
d290: 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 38  ns"></a>.<h2>1.8
d2a0: 20 57 69 6e 64 6f 77 73 2d 53 70 65 63 69 66 69   Windows-Specifi
d2b0: 63 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c  c Options</h2>.<
d2c0: 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  tcl>..COMPILE_OP
d2d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
d2e0: 33 32 5f 48 45 41 50 5f 43 52 45 41 54 45 7d 20  32_HEAP_CREATE} 
d2f0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
d300: 66 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32  forces the Win32
d310: 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61   native memory a
d320: 6c 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65  llocator, when e
d330: 6e 61 62 6c 65 64 2c 20 74 6f 0a 20 20 63 72 65  nabled, to.  cre
d340: 61 74 65 20 61 20 70 72 69 76 61 74 65 20 68 65  ate a private he
d350: 61 70 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 6d  ap to hold all m
d360: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
d370: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
d380: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e  TION {SQLITE_WIN
d390: 33 32 5f 4d 41 4c 4c 4f 43 5f 56 41 4c 49 44 41  32_MALLOC_VALIDA
d3a0: 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
d3b0: 69 6f 6e 20 66 6f 72 63 65 73 20 74 68 65 20 57  ion forces the W
d3c0: 69 6e 33 32 20 6e 61 74 69 76 65 20 6d 65 6d 6f  in32 native memo
d3d0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 77 68  ry allocator, wh
d3e0: 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 6f 0a 20  en enabled, to. 
d3f0: 20 6d 61 6b 65 20 73 74 72 61 74 65 67 69 63 20   make strategic 
d400: 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 48  calls into the H
d410: 65 61 70 56 61 6c 69 64 61 74 65 28 29 20 66 75  eapValidate() fu
d420: 6e 63 74 69 6f 6e 20 69 66 20 61 73 73 65 72 74  nction if assert
d430: 28 29 20 69 73 20 61 6c 73 6f 0a 20 20 65 6e 61  () is also.  ena
d440: 62 6c 65 64 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  bled..}..</tcl>.