Documentation Source Text

Hex Artifact Content
Login

Artifact 0a1e2cb6e49587eeae3f239cdcc78794b73f5554:


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 63 6f 6d 70 69 6c 65 2d 74    This compile-t
7770: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f  ime option is no
7780: 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a   longer used..}.
7790: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
77a0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55  {SQLITE_ENABLE_U
77b0: 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d  PDATE_DELETE_LIM
77c0: 49 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  IT} {.  This opt
77d0: 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f  ion enables an o
77e0: 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59  ptional ORDER BY
77f0: 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73   and LIMIT claus
7800: 65 20 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d  e on .  [UPDATE]
7810: 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74   and [DELETE] st
7820: 61 74 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e  atements...  <p>
7830: 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
7840: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20  s defined, then 
7850: 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20  it must also be 
7860: 0a 20 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20  .  defined when 
7870: 75 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e  using the 'lemon
7880: 27 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61  ' tool to genera
7890: 74 65 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66  te a parse.c.  f
78a0: 69 6c 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20  ile. Because of 
78b0: 74 68 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f  this, this optio
78c0: 6e 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  n may only be us
78d0: 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72  ed when the libr
78e0: 61 72 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66  ary is built.  f
78f0: 72 6f 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20  rom source, not 
7900: 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61  from the [amalga
7910: 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20  mation] or from 
7920: 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f  the collection o
7930: 66 0a 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64  f.  pre-packaged
7940: 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65   C files provide
7950: 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c  d for non-Unix l
7960: 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e  ike platforms on
7970: 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20   the website..  
7980: 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  </p>.}..COMPILE_
7990: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
79a0: 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54  NABLE_UNLOCK_NOT
79b0: 49 46 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  IFY} {.  This op
79c0: 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65  tion enables the
79d0: 20 5b 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b   [sqlite3_unlock
79e0: 5f 6e 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72  _notify()] inter
79f0: 66 61 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61  face and.  its a
7a00: 73 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69  ssociated functi
7a10: 6f 6e 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68  onality.  See th
7a20: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  e documentation 
7a30: 74 69 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20  titled.  [Using 
7a40: 74 68 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63  the SQLite Unloc
7a50: 6b 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46  k Notification F
7a60: 65 61 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69  eature] for addi
7a70: 74 69 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61  tional.  informa
7a80: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
7a90: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7aa0: 53 4f 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69  SOUNDEX} {.  Thi
7ab0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
7ac0: 20 74 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20   the [soundex() 
7ad0: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d  SQL function]..}
7ae0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7af0: 20 7b 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e   {SQLITE_USE_FCN
7b00: 54 4c 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68  TL_TRACE} {.  Th
7b10: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
7b20: 20 53 51 4c 69 74 65 20 74 6f 20 69 73 73 75 65   SQLite to issue
7b30: 20 65 78 74 72 61 20 5b 53 51 4c 49 54 45 5f 46   extra [SQLITE_F
7b40: 43 4e 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65  CNTL_TRACE] file
7b50: 20 63 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70   controls.  to p
7b60: 72 6f 76 69 64 65 20 73 75 70 70 6c 65 6d 65 6e  rovide supplemen
7b70: 74 61 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tary information
7b80: 20 74 6f 20 74 68 65 20 56 46 53 2e 20 20 54 68   to the VFS.  Th
7b90: 65 20 22 76 66 73 6c 6f 67 2e 63 22 20 65 78 74  e "vfslog.c" ext
7ba0: 65 6e 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75  ension.  makes u
7bb0: 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20 70 72  se of this to pr
7bc0: 6f 76 69 64 65 20 65 6e 68 61 6e 63 65 64 20 6c  ovide enhanced l
7bd0: 6f 67 73 20 6f 66 20 56 46 53 20 61 63 74 69 76  ogs of VFS activ
7be0: 69 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ity..}..COMPILE_
7bf0: 4f 50 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d  OPTION {YYTRACKM
7c00: 41 58 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a  AXSTACKDEPTH} {.
7c10: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
7c20: 75 73 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29  uses the LALR(1)
7c30: 20 70 61 72 73 65 72 20 73 74 61 63 6b 20 64 65   parser stack de
7c40: 70 74 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65  pth to be tracke
7c50: 64 0a 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64  d.  and reported
7c60: 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69   using the [sqli
7c70: 74 65 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c  te3_status]([SQL
7c80: 49 54 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45  ITE_STATUS_PARSE
7c90: 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20  R_STACK],...).  
7ca0: 69 6e 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69  interface.  SQLi
7cb0: 74 65 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72  te's LALR(1) par
7cc0: 73 65 72 20 68 61 73 20 61 20 66 69 78 65 64 20  ser has a fixed 
7cd0: 73 74 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64  stack depth.  (d
7ce0: 65 74 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d  etermined at com
7cf0: 70 69 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20  pile-time using 
7d00: 74 68 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54  the [YYSTACKDEPT
7d10: 48 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54  H] options)..  T
7d20: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  his option can b
7d30: 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64  e used to help d
7d40: 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61  etermine if an a
7d50: 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20  pplication is.  
7d60: 67 65 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f  getting close to
7d70: 20 65 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d   exceeding the m
7d80: 61 78 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73  aximum LALR(1) s
7d90: 74 61 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f  tack depth..}.</
7da0: 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64  tcl>..<a name="d
7db0: 69 73 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e  isablefeatures">
7dc0: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74  </a>.<h2>1.5 Opt
7dd0: 69 6f 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20  ions To Disable 
7de0: 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c  Features Normall
7df0: 79 20 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e  y Turned On</h2>
7e00: 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f  ..<tcl>.COMPILE_
7e10: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
7e20: 49 53 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20  ISABLE_LFS} {.  
7e30: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
7e40: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
7e50: 64 65 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66  defined, large f
7e60: 69 6c 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73  ile support.  is
7e70: 20 64 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f   disabled..}..CO
7e80: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7e90: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52  LITE_DISABLE_DIR
7ea0: 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69  SYNC} {.  If thi
7eb0: 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72  s C-preprocessor
7ec0: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
7ed0: 64 2c 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e  d, directory syn
7ee0: 63 73 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65  cs.  are disable
7ef0: 64 2e 20 20 53 51 4c 69 74 65 20 74 79 70 69 63  d.  SQLite typic
7f00: 61 6c 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f  ally attempts to
7f10: 20 73 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74   sync the parent
7f20: 0a 20 20 64 69 72 65 63 74 6f 72 79 20 77 68 65  .  directory whe
7f30: 6e 20 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65  n a file is dele
7f40: 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68  ted to ensure th
7f50: 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e  e directory.  en
7f60: 74 72 69 65 73 20 61 72 65 20 75 70 64 61 74 65  tries are update
7f70: 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e  d immediately on
7f80: 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   disk..}..COMPIL
7f90: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7fa0: 5f 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e  _DISABLE_FTS3_UN
7fb0: 49 43 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74 68  ICODE} {.  If th
7fc0: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
7fd0: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
7fe0: 65 64 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64 65  ed, the [unicode
7ff0: 36 31 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20  61] tokenizer.  
8000: 69 6e 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69  in [FTS3] is omi
8010: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
8020: 69 6c 64 20 61 6e 64 20 69 73 20 75 6e 61 76 61  ild and is unava
8030: 69 6c 61 62 6c 65 20 74 6f 20 0a 20 20 61 70 70  ilable to .  app
8040: 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f  lications..}..CO
8050: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8060: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53  LITE_DISABLE_FTS
8070: 34 5f 44 45 46 45 52 52 45 44 7d 20 7b 0a 20 20  4_DEFERRED} {.  
8080: 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f  If this C-prepro
8090: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 69 73  cessor macro dis
80a0: 61 62 6c 65 73 20 74 68 65 20 22 64 65 66 65 72  ables the "defer
80b0: 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d  red token" optim
80c0: 69 7a 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54  ization.  in [FT
80d0: 53 34 5d 2e 20 20 54 68 65 20 22 64 65 66 65 72  S4].  The "defer
80e0: 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d  red token" optim
80f0: 69 7a 61 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c  ization avoids l
8100: 6f 61 64 69 6e 67 20 6d 61 73 73 69 76 65 0a 20  oading massive. 
8110: 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 66   posting lists f
8120: 6f 72 20 74 65 72 6d 73 20 74 68 61 74 20 61 72  or terms that ar
8130: 65 20 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65  e in most docume
8140: 6e 74 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65  nts of the colle
8150: 63 74 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74  ction.  and inst
8160: 65 61 64 20 73 69 6d 70 6c 79 20 73 63 61 6e 73  ead simply scans
8170: 20 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e   for those token
8180: 73 20 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e  s in the documen
8190: 74 20 73 6f 75 72 63 65 2e 20 20 5b 46 54 53 34  t source.  [FTS4
81a0: 5d 0a 20 20 73 68 6f 75 6c 64 20 67 65 74 20 65  ].  should get e
81b0: 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20  xactly the same 
81c0: 61 6e 73 77 65 72 20 62 6f 74 68 20 77 69 74 68  answer both with
81d0: 20 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68 69   and without thi
81e0: 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a  s optimization..
81f0: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a  }.</tcl>..<tcl>.
8200: 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f    hd_fragment "o
8210: 6d 69 74 66 65 61 74 75 72 65 73 22 0a 20 20 68  mitfeatures".  h
8220: 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74  d_keywords "omit
8230: 66 65 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e  features".</tcl>
8240: 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73  .<h2>1.6 Options
8250: 20 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65   To Omit Feature
8260: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66  s</h2>..<p>The f
8270: 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73  ollowing options
8280: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
8290: 0a 5b 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c  .[relfootprint |
82a0: 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65   reduce the size
82b0: 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64   of the compiled
82c0: 20 6c 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69   library].by omi
82d0: 74 74 69 6e 67 20 75 6e 75 73 65 64 20 66 65 61  tting unused fea
82e0: 74 75 72 65 73 2e 20 54 68 69 73 20 69 73 20 70  tures. This is p
82f0: 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65  robably only use
8300: 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64 20  ful.in embedded 
8310: 73 79 73 74 65 6d 73 20 77 68 65 72 65 20 73 70  systems where sp
8320: 61 63 65 20 69 73 20 65 73 70 65 63 69 61 6c 6c  ace is especiall
8330: 79 20 74 69 67 68 74 2c 20 61 73 20 65 76 65 6e  y tight, as even
8340: 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74 75 72   with all.featur
8350: 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20  es included the 
8360: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69  SQLite library i
8370: 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6d 61  s relatively sma
8380: 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65 74  ll. Don't forget
8390: 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f  .to tell your co
83a0: 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69  mpiler to optimi
83b0: 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20 73 69  ze for binary si
83c0: 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f 70 74  ze! (the -Os opt
83d0: 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47 43 43  ion if.using GCC
83e0: 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72  ).  Telling your
83f0: 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74   compiler to opt
8400: 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65 20 75  imize for size u
8410: 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63  sually has.a muc
8420: 68 20 6c 61 72 67 65 72 20 69 6d 70 61 63 74 20  h larger impact 
8430: 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70  on library footp
8440: 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79  rint than employ
8450: 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65  ing any of these
8460: 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
8470: 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75  tions.  You shou
8480: 6c 64 20 61 6c 73 6f 20 76 65 72 69 66 79 20 74  ld also verify t
8490: 68 61 74 20 0a 3c 61 20 68 72 65 66 3d 22 23 64  hat .<a href="#d
84a0: 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62  ebugoptions">deb
84b0: 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f  ugging options</
84c0: 61 3e 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e  a> are disabled.
84d0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63  </p>..<p>The mac
84e0: 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65 63 74  ros in this sect
84f0: 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75 69  ion do not requi
8500: 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66  re values. The f
8510: 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c  ollowing .compil
8520: 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73 20 61  ation switches a
8530: 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61 6d 65  ll have the same
8540: 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53   effect:<br>.-DS
8550: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52  QLITE_OMIT_ALTER
8560: 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49  TABLE<br>.-DSQLI
8570: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
8580: 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54  LE=1<br>.-DSQLIT
8590: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
85a0: 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  E=0.</p>..<p>If 
85b0: 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f 70 74  any of these opt
85c0: 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64  ions are defined
85d0: 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d 65 20  , then the same 
85e0: 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d  set of SQLITE_OM
85f0: 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73  IT_*.options mus
8600: 74 20 61 6c 73 6f 20 62 65 20 64 65 66 69 6e 65  t also be define
8610: 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65  d when using the
8620: 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f   'lemon' tool to
8630: 20 67 65 6e 65 72 61 74 65 20 74 68 65 0a 70 61   generate the.pa
8640: 72 73 65 2e 63 20 66 69 6c 65 20 61 6e 64 20 77  rse.c file and w
8650: 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68  hen compiling th
8660: 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68  e 'mkkeywordhash
8670: 27 20 74 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e  ' tool which gen
8680: 65 72 61 74 65 73 20 0a 74 68 65 20 6b 65 79 77  erates .the keyw
8690: 6f 72 64 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a  ordhash.h file..
86a0: 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c  Because of this,
86b0: 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d   these options m
86c0: 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20  ay only be used 
86d0: 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79  when the library
86e0: 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63   is built.from c
86f0: 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c  anonical source,
8700: 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61   not from the [a
8710: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20  malgamation] or 
8720: 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74  from the collect
8730: 69 6f 6e 20 6f 66 0a 70 72 65 2d 70 61 63 6b 61  ion of.pre-packa
8740: 67 65 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76  ged C files prov
8750: 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69  ided for non-Uni
8760: 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73  x like platforms
8770: 20 6f 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e   on the website.
8780: 0a 41 6e 79 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .Any SQLITE_OMIT
8790: 5f 2a 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68  _* options which
87a0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 64 69 72   can be used dir
87b0: 65 63 74 6c 79 20 77 69 74 68 20 74 68 65 20 5b  ectly with the [
87c0: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a 61  amalgamation] .a
87d0: 72 65 20 6c 69 73 74 65 64 20 62 65 6c 6f 77 2c  re listed below,
87e0: 20 68 6f 77 65 76 65 72 2c 20 74 68 65 20 77 61   however, the wa
87f0: 72 6e 69 6e 67 73 20 69 6e 20 74 68 65 20 66 6f  rnings in the fo
8800: 6c 6c 6f 77 69 6e 67 20 70 61 72 61 67 72 61 70  llowing paragrap
8810: 68 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65  h should be note
8820: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  d..</p>..<blockq
8830: 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f  uote>.<i><b>Impo
8840: 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20  rtant Note:</b> 
8850: 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  The SQLITE_OMIT_
8860: 2a 20 6f 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74  * options do not
8870: 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65 0a 5b   work with the.[
8880: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72  amalgamation] or
8890: 20 77 69 74 68 20 70 72 65 2d 70 61 63 6b 61 67   with pre-packag
88a0: 65 64 20 43 20 63 6f 64 65 20 66 69 6c 65 73 2e  ed C code files.
88b0: 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20    SQLITE_OMIT_* 
88c0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74  compile-time.opt
88d0: 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 63  ions only work c
88e0: 6f 72 72 65 63 74 6c 79 20 77 68 65 6e 20 53 51  orrectly when SQ
88f0: 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20 66 72  Lite is built fr
8900: 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75  om canonical sou
8910: 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a  rce files..</i>.
8920: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a  </blockquote>...
8930: 3c 70 3e 53 70 65 63 69 61 6c 20 76 65 72 73 69  <p>Special versi
8940: 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ons of the SQLit
8950: 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74  e amalgamation t
8960: 68 61 74 20 64 6f 20 77 6f 72 6b 20 77 69 74 68  hat do work with
8970: 20 61 0a 70 72 65 64 65 74 65 72 6d 69 6e 65 64   a.predetermined
8980: 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f   set of SQLITE_O
8990: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61  MIT_* options ca
89a0: 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20  n be generated. 
89b0: 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20   To do so,.make 
89c0: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 4d 61  a copy of the Ma
89d0: 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63  kefile.linux-gcc
89e0: 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61   makefile templa
89f0: 74 65 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69  te in the canoni
8a00: 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65 20  cal.source code 
8a10: 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 20 20 43  distribution.  C
8a20: 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f  hange the name o
8a30: 66 20 79 6f 75 72 20 63 6f 70 79 20 74 6f 20 73  f your copy to s
8a40: 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22  imply "Makefile"
8a50: 2e 0a 54 68 65 6e 20 65 64 69 74 20 22 4d 61 6b  ..Then edit "Mak
8a60: 65 66 69 6c 65 22 20 74 6f 20 73 65 74 20 75 70  efile" to set up
8a70: 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 6d   appropriate com
8a80: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8a90: 73 2e 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c  s.  Then.type:.<
8aa0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d  blockquote><tt>m
8ab0: 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20  ake clean; make 
8ac0: 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f  sqlite3.c</tt></
8ad0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20  blockquote>.The 
8ae0: 72 65 73 75 6c 74 69 6e 67 20 22 73 71 6c 69 74  resulting "sqlit
8af0: 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69  e3.c" amalgamati
8b00: 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20 28 61 6e  on code file (an
8b10: 64 20 69 74 73 20 61 73 73 6f 63 69 61 74 65 64  d its associated
8b20: 0a 68 65 61 64 65 72 20 66 69 6c 65 20 22 73 71  .header file "sq
8b30: 6c 69 74 65 33 2e 68 22 29 20 63 61 6e 20 74 68  lite3.h") can th
8b40: 65 6e 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61  en be moved to a
8b50: 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f   non-unix platfo
8b60: 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d  rm.for final com
8b70: 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20 61  pilation using a
8b80: 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72   native compiler
8b90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f 66  .</p>..<p>All of
8ba0: 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   the SQLITE_OMIT
8bb0: 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75  _* options are u
8bc0: 6e 73 75 70 70 6f 72 74 65 64 2e 3c 2f 70 3e 0a  nsupported.</p>.
8bd0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69  .<blockquote>.<i
8be0: 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f  ><b>Important No
8bf0: 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49  te:</b>.The SQLI
8c00: 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c  TE_OMIT_* compil
8c10: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61  e-time options a
8c20: 72 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a  re unsupported..
8c30: 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </i></blockquote
8c40: 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53 51 4c 49 54  >..<p>.The SQLIT
8c50: 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65  E_OMIT_* compile
8c60: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72  -time options ar
8c70: 65 20 75 73 75 61 6c 6c 79 20 75 6e 74 65 73 74  e usually untest
8c80: 65 64 20 61 6e 64 0a 61 72 65 20 61 6c 6d 6f 73  ed and.are almos
8c90: 74 20 63 65 72 74 61 69 6e 6c 79 20 75 6e 74 65  t certainly unte
8ca0: 73 74 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74  sted in combinat
8cb0: 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c 20  ion..Any or all 
8cc0: 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  of these options
8cd0: 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20   may be removed 
8ce0: 66 72 6f 6d 20 74 68 65 20 63 6f 64 65 20 69 6e  from the code in
8cf0: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
8d00: 0a 61 6e 64 20 77 69 74 68 6f 75 74 20 77 61 72  .and without war
8d10: 6e 69 6e 67 2e 20 20 46 6f 72 20 61 6e 79 20 70  ning.  For any p
8d20: 61 72 74 69 63 75 6c 61 72 20 72 65 6c 65 61 73  articular releas
8d30: 65 2c 20 73 6f 6d 65 20 6f 66 20 74 68 65 73 65  e, some of these
8d40: 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20 63 61 75  .options may cau
8d50: 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  se compile-time 
8d60: 6f 72 20 72 75 6e 2d 74 69 6d 65 20 66 61 69 6c  or run-time fail
8d70: 75 72 65 73 2c 20 70 61 72 74 69 63 75 6c 61 72  ures, particular
8d80: 6c 79 0a 77 68 65 6e 20 75 73 65 64 20 69 6e 20  ly.when used in 
8d90: 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74 68  combination with
8da0: 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e 73 2e 3c   other options.<
8db0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49  /p>..<tcl>.COMPI
8dc0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
8dd0: 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c  E_OMIT_ALTERTABL
8de0: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  E} {.  When this
8df0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
8e00: 65 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54 45  ed, the .  [ALTE
8e10: 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64  R TABLE] command
8e20: 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64   is not included
8e30: 20 69 6e 20 74 68 65 20 0a 20 20 6c 69 62 72 61   in the .  libra
8e40: 72 79 2e 20 45 78 65 63 75 74 69 6e 67 20 61 6e  ry. Executing an
8e50: 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 73   [ALTER TABLE] s
8e60: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20  tatement causes 
8e70: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d  a parse error..}
8e80: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
8e90: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e   {SQLITE_OMIT_AN
8ea0: 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20  ALYZE} {.  When 
8eb0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
8ec0: 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41  efined, the [ANA
8ed0: 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  LYZE] command is
8ee0: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20 20   omitted from.  
8ef0: 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f  the build..}..CO
8f00: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8f10: 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48  LITE_OMIT_ATTACH
8f20: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
8f30: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
8f40: 64 2c 20 74 68 65 20 5b 41 54 54 41 43 48 5d 20  d, the [ATTACH] 
8f50: 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d  and [DETACH] com
8f60: 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69 74  mands are.  omit
8f70: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
8f80: 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ld..}..COMPILE_O
8f90: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
8fa0: 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e  IT_AUTHORIZATION
8fb0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
8fc0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
8fd0: 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69   the authorizati
8fe0: 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65 61 74  on callback feat
8ff0: 75 72 65 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c  ure from the.  l
9000: 69 62 72 61 72 79 2e 20 54 68 65 20 5b 73 71 6c  ibrary. The [sql
9010: 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
9020: 7a 65 72 28 29 5d 20 41 50 49 20 66 75 6e 63 74  zer()] API funct
9030: 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65  ion is not prese
9040: 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c 69 62 72  nt.  in the libr
9050: 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ary..}..COMPILE_
9060: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
9070: 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e  MIT_AUTOINCREMEN
9080: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
9090: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
90a0: 69 74 20 74 68 65 20 0a 20 20 5b 41 55 54 4f 49  it the .  [AUTOI
90b0: 4e 43 52 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69  NCREMENT] functi
90c0: 6f 6e 61 6c 69 74 79 2e 20 57 68 65 6e 20 74 68  onality. When th
90d0: 69 73 20 0a 20 20 69 73 20 6d 61 63 72 6f 20 69  is .  is macro i
90e0: 73 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d  s defined, colum
90f0: 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20 0a  ns declared as .
9100: 20 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d    "[INTEGER PRIM
9110: 41 52 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43  ARY KEY] AUTOINC
9120: 52 45 4d 45 4e 54 22 0a 20 20 62 65 68 61 76 65  REMENT".  behave
9130: 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79   in the same way
9140: 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c   as columns decl
9150: 61 72 65 64 20 61 73 20 22 5b 49 4e 54 45 47 45  ared as "[INTEGE
9160: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 22 20  R PRIMARY KEY]" 
9170: 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69  when a .  NULL i
9180: 73 20 69 6e 73 65 72 74 65 64 2e 20 54 68 65 20  s inserted. The 
9190: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20  sqlite_sequence 
91a0: 73 79 73 74 65 6d 20 74 61 62 6c 65 20 69 73 20  system table is 
91b0: 6e 65 69 74 68 65 72 20 63 72 65 61 74 65 64 2c  neither created,
91c0: 20 6e 6f 72 0a 20 20 72 65 73 70 65 63 74 65 64   nor.  respected
91d0: 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20 65   if it already e
91e0: 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  xists..}..COMPIL
91f0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9200: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20  _OMIT_AUTOINIT} 
9210: 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72 64  {.  For backward
9220: 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  s compatibility 
9230: 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69  with older versi
9240: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68  ons of SQLite th
9250: 61 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73  at lack.  the [s
9260: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
9270: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20  e()] interface, 
9280: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  the [sqlite3_ini
9290: 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72  tialize()] inter
92a0: 66 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65 64  face.  is called
92b0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75   automatically u
92c0: 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65 72  pon entry to cer
92d0: 74 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66 61  tain key interfa
92e0: 63 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b 73  ces such as.  [s
92f0: 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
9300: 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67  [sqlite3_vfs_reg
9310: 69 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73  ister()], and [s
9320: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29  qlite3_mprintf()
9330: 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65 61  ]..  The overhea
9340: 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73  d of invoking [s
9350: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
9360: 65 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c  e()] automatical
9370: 6c 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61 79  ly in this.  way
9380: 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20   may be omitted 
9390: 62 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69  by building SQLi
93a0: 74 65 20 77 69 74 68 20 74 68 65 20 53 51 4c 49  te with the SQLI
93b0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
93c0: 0a 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  .  C-preprocesso
93d0: 72 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20 62  r macro.  When b
93e0: 75 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49 54  uilt using SQLIT
93f0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c  E_OMIT_AUTOINIT,
9400: 20 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e   SQLite.  will n
9410: 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ot automatically
9420: 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73 65   initialize itse
9430: 6c 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69  lf and the appli
9440: 63 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69 72  cation is requir
9450: 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b  ed.  to invoke [
9460: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
9470: 7a 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20 70  ze()] directly p
9480: 72 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e  rior to beginnin
9490: 67 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20 53  g use of the.  S
94a0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d  QLite library..}
94b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
94c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
94d0: 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 7d 20 7b  TOMATIC_INDEX} {
94e0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
94f0: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
9500: 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61 74 69 63  he .  [automatic
9510: 20 69 6e 64 65 78 69 6e 67 5d 20 66 75 6e 63 74   indexing] funct
9520: 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53 65 65 20  ionality..  See 
9530: 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 44 45  also: [SQLITE_DE
9540: 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f  FAULT_AUTOMATIC_
9550: 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  INDEX]..}..COMPI
9560: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
9570: 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54  E_OMIT_AUTORESET
9580: 7d 20 7b 0a 20 20 42 79 20 64 65 66 61 75 6c 74  } {.  By default
9590: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  , the [sqlite3_s
95a0: 74 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65  tep()] interface
95b0: 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61   will automatica
95c0: 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71  lly invoke.  [sq
95d0: 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74  lite3_reset()] t
95e0: 6f 20 72 65 73 65 74 20 74 68 65 20 5b 70 72 65  o reset the [pre
95f0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
9600: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
9610: 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74  This.  compile-t
9620: 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67  ime option chang
9630: 65 73 20 74 68 61 74 20 62 65 68 61 76 69 6f 72  es that behavior
9640: 20 73 6f 20 74 68 61 74 20 5b 73 71 6c 69 74 65   so that [sqlite
9650: 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20  3_step()] will. 
9660: 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
9670: 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20 63 61  MISUSE] if it ca
9680: 6c 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65 72  lled again after
9690: 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68   returning anyth
96a0: 69 6e 67 20 6f 74 68 65 72 0a 20 20 74 68 61 6e  ing other.  than
96b0: 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b   [SQLITE_ROW], [
96c0: 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72  SQLITE_BUSY], or
96d0: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d   [SQLITE_LOCKED]
96e0: 20 75 6e 6c 65 73 73 20 74 68 65 72 65 20 77 61   unless there wa
96f0: 73 20 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69  s an.  interveni
9700: 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69  ng call to [sqli
9710: 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20  te3_reset()]... 
9720: 20 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69   In SQLite versi
9730: 6f 6e 20 33 2e 36 2e 32 33 2e 31 20 61 6e 64 20  on 3.6.23.1 and 
9740: 65 61 72 6c 69 65 72 2c 20 5b 73 71 6c 69 74 65  earlier, [sqlite
9750: 33 5f 73 74 65 70 28 29 5d 20 75 73 65 64 20 74  3_step()] used t
9760: 6f 20 61 6c 77 61 79 73 0a 20 20 72 65 74 75 72  o always.  retur
9770: 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  n [SQLITE_MISUSE
9780: 5d 20 69 66 20 69 74 20 77 61 73 20 69 6e 76 6f  ] if it was invo
9790: 6b 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20  ked again after 
97a0: 72 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69  returning anythi
97b0: 6e 67 0a 20 20 6f 74 68 65 72 20 74 68 61 6e 20  ng.  other than 
97c0: 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 20 77 69 74  [SQLITE_ROW] wit
97d0: 68 6f 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e  hout an interven
97e0: 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c  ing call to [sql
97f0: 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 20  ite3_reset()].. 
9800: 20 54 68 69 73 20 63 61 75 73 65 64 20 70 72 6f   This caused pro
9810: 62 6c 65 6d 73 20 6f 6e 20 73 6f 6d 65 20 70 6f  blems on some po
9820: 6f 72 6c 79 20 77 72 69 74 74 65 6e 20 73 6d 61  orly written sma
9830: 72 74 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74  rtphone applicat
9840: 69 6f 6e 73 20 77 68 69 63 68 0a 20 20 64 69 64  ions which.  did
9850: 20 6e 6f 74 20 63 6f 72 72 65 63 74 6c 79 20 68   not correctly h
9860: 61 6e 64 6c 65 20 74 68 65 20 5b 53 51 4c 49 54  andle the [SQLIT
9870: 45 5f 4c 4f 43 4b 45 44 5d 20 61 6e 64 20 5b 53  E_LOCKED] and [S
9880: 51 4c 49 54 45 5f 42 55 53 59 5d 20 65 72 72 6f  QLITE_BUSY] erro
9890: 72 20 0a 20 20 72 65 74 75 72 6e 73 2e 20 20 52  r .  returns.  R
98a0: 61 74 68 65 72 20 74 68 61 6e 20 66 69 78 20 74  ather than fix t
98b0: 68 65 20 6d 61 6e 79 20 64 65 66 65 63 74 69 76  he many defectiv
98c0: 65 20 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70  e smartphone app
98d0: 6c 69 63 61 74 69 6f 6e 73 2c 20 0a 20 20 74 68  lications, .  th
98e0: 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51  e behavior of SQ
98f0: 4c 69 74 65 20 77 61 73 20 63 68 61 6e 67 65 64  Lite was changed
9900: 20 69 6e 20 33 2e 36 2e 32 33 2e 32 20 74 6f 20   in 3.6.23.2 to 
9910: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65  automatically re
9920: 73 65 74 0a 20 20 74 68 65 20 70 72 65 70 61 72  set.  the prepar
9930: 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 42  ed statement.  B
9940: 75 74 20 74 68 61 74 20 63 68 61 6e 67 65 64 20  ut that changed 
9950: 63 61 75 73 65 64 20 69 73 73 75 65 73 20 69 6e  caused issues in
9960: 20 6f 74 68 65 72 20 0a 20 20 69 6d 70 72 6f 70   other .  improp
9970: 65 72 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64  erly implemented
9980: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68   applications th
9990: 61 74 20 77 65 72 65 20 61 63 74 75 61 6c 6c 79  at were actually
99a0: 20 6c 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72 20 61   looking.  for a
99b0: 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  n [SQLITE_MISUSE
99c0: 5d 20 72 65 74 75 72 6e 20 74 6f 20 74 65 72 6d  ] return to term
99d0: 69 6e 61 74 65 20 74 68 65 69 72 20 71 75 65 72  inate their quer
99e0: 79 20 6c 6f 6f 70 73 2e 20 20 28 41 6e 79 74 69  y loops.  (Anyti
99f0: 6d 65 0a 20 20 61 6e 20 61 70 70 6c 69 63 61 74  me.  an applicat
9a00: 69 6f 6e 20 67 65 74 73 20 61 6e 20 53 51 4c 49  ion gets an SQLI
9a10: 54 45 5f 4d 49 53 55 53 45 20 65 72 72 6f 72 20  TE_MISUSE error 
9a20: 63 6f 64 65 20 66 72 6f 6d 20 53 51 4c 69 74 65  code from SQLite
9a30: 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65  , that means the
9a40: 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  .  application i
9a50: 73 20 6d 69 73 75 73 69 6e 67 20 74 68 65 20 53  s misusing the S
9a60: 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 20  QLite interface 
9a70: 61 6e 64 20 69 73 20 74 68 75 73 20 69 6e 63 6f  and is thus inco
9a80: 72 72 65 63 74 6c 79 0a 20 20 69 6d 70 6c 65 6d  rrectly.  implem
9a90: 65 6e 74 65 64 2e 29 20 20 54 68 65 20 53 51 4c  ented.)  The SQL
9aa0: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53  ITE_OMIT_AUTORES
9ab0: 45 54 20 69 6e 74 65 72 66 61 63 65 20 77 61 73  ET interface was
9ac0: 20 61 64 64 65 64 20 74 6f 20 53 51 4c 69 74 65   added to SQLite
9ad0: 0a 20 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 35  .  version 3.7.5
9ae0: 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f   in an effort to
9af0: 20 67 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20   get all of the 
9b00: 28 62 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69  (broken).  appli
9b10: 63 61 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20  cations to work 
9b20: 61 67 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61  again without ha
9b30: 76 69 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79  ving to actually
9b40: 20 66 69 78 20 74 68 65 20 61 70 70 6c 69 63 61   fix the applica
9b50: 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  tions..}..COMPIL
9b60: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9b70: 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d  _OMIT_AUTOVACUUM
9b80: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
9b90: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
9ba0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e   the library can
9bb0: 6e 6f 74 20 63 72 65 61 74 65 20 6f 72 20 77 72  not create or wr
9bc0: 69 74 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61  ite to .  databa
9bd0: 73 65 73 20 74 68 61 74 20 73 75 70 70 6f 72 74  ses that support
9be0: 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a   [auto_vacuum]..
9bf0: 20 20 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50    Executing a [P
9c00: 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75  RAGMA auto_vacuu
9c10: 6d 5d 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  m] statement is 
9c20: 6e 6f 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28  not an error.  (
9c30: 73 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52  since unknown PR
9c40: 41 47 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74  AGMAs are silent
9c50: 6c 79 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74  ly ignored), but
9c60: 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e   does not return
9c70: 20 61 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f   a value.  or mo
9c80: 64 69 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61  dify the auto-va
9c90: 63 75 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65  cuum flag in the
9ca0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20   database file. 
9cb0: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 74 68  If a database th
9cc0: 61 74 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75  at.  supports au
9cd0: 74 6f 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65  to-vacuum is ope
9ce0: 6e 65 64 20 62 79 20 61 20 6c 69 62 72 61 72 79  ned by a library
9cf0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
9d00: 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20  his option, it. 
9d10: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
9d20: 79 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64  y opened in read
9d30: 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43  -only mode..}..C
9d40: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9d50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45  QLITE_OMIT_BETWE
9d60: 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  EN_OPTIMIZATION}
9d70: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
9d80: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 75 73   disables the us
9d90: 65 20 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74  e of indices wit
9da0: 68 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 74  h WHERE clause t
9db0: 65 72 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c  erms.  that empl
9dc0: 6f 79 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f  oy the BETWEEN o
9dd0: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
9de0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9df0: 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54  TE_OMIT_BLOB_LIT
9e00: 45 52 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74  ERAL} {.  When t
9e10: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
9e20: 66 69 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74  fined, it is not
9e30: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65   possible to spe
9e40: 63 69 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20  cify a blob in. 
9e50: 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
9e60: 74 20 75 73 69 6e 67 20 74 68 65 20 58 27 41 42  t using the X'AB
9e70: 43 44 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43  CD' syntax..}..C
9e80: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9e90: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45  QLITE_OMIT_BTREE
9ea0: 43 4f 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20  COUNT} {.  When 
9eb0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
9ec0: 65 66 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d  efined, an optim
9ed0: 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63  ization that acc
9ee0: 65 6c 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e  elerates countin
9ef0: 67 0a 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20  g.  all entries 
9f00: 69 6e 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f  in a table (in o
9f10: 74 68 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f  ther words, an o
9f20: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74  ptimization that
9f30: 20 68 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54   helps.  "SELECT
9f40: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
9f50: 61 62 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72  able" run faster
9f60: 29 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  ) is omitted..}.
9f70: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9f80: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49  {SQLITE_OMIT_BUI
9f90: 4c 54 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41  LTIN_TEST} {.  A
9fa0: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
9fb0: 20 62 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20   build includes 
9fc0: 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f  a small amount o
9fd0: 66 20 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c  f logic controll
9fe0: 65 64 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c  ed.  by the [sql
9ff0: 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f  ite3_test_contro
a000: 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74  l()] interface t
a010: 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 65  hat is used to e
a020: 78 65 72 63 69 73 65 0a 20 20 70 61 72 74 73 20  xercise.  parts 
a030: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  of the SQLite co
a040: 72 65 20 74 68 61 74 20 61 72 65 20 64 69 66 66  re that are diff
a050: 69 63 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c  icult to control
a060: 20 61 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69   and measure usi
a070: 6e 67 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72  ng.  the standar
a080: 64 20 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74  d API.  This opt
a090: 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62  ion omits that b
a0a0: 75 69 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67  uilt-in test log
a0b0: 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ic..}..COMPILE_O
a0c0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a0d0: 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69  IT_CAST} {.  Thi
a0e0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
a0f0: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
a100: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43  upport for the C
a110: 41 53 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  AST operator..}.
a120: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a130: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45  {SQLITE_OMIT_CHE
a140: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
a150: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
a160: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
a170: 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73  t for CHECK cons
a180: 74 72 61 69 6e 74 73 2e 0a 20 20 54 68 65 20 70  traints..  The p
a190: 61 72 73 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c  arser will still
a1a0: 20 61 63 63 65 70 74 20 43 48 45 43 4b 20 63 6f   accept CHECK co
a1b0: 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 53 51 4c  nstraints in SQL
a1c0: 20 73 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74   statements,.  t
a1d0: 68 65 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f  hey will just no
a1e0: 74 20 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d  t be enforced..}
a1f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a200: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
a210: 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47  MPILEOPTION_DIAG
a220: 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  S} {.  This opti
a230: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
a240: 69 74 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  it the compile-t
a250: 69 6d 65 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e  ime option diagn
a260: 6f 73 74 69 63 73 20 61 76 61 69 6c 61 62 6c 65  ostics available
a270: 0a 20 20 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e  .  in SQLite, in
a280: 63 6c 75 64 69 6e 67 20 74 68 65 20 5b 73 71 6c  cluding the [sql
a290: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
a2a0: 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 20  on_used()] and. 
a2b0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c   [sqlite3_compil
a2c0: 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43  eoption_get()] C
a2d0: 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20  /C++ functions, 
a2e0: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f  the.  [sqlite_co
a2f0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
a300: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f  ()] and [sqlite_
a310: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
a320: 74 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f  t()] SQL functio
a330: 6e 73 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 63  ns,.  and the [c
a340: 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70  ompile_options p
a350: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
a360: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a370: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d  E_OMIT_COMPLETE}
a380: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a390: 20 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c   causes the [sql
a3a0: 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d  ite3_complete()]
a3b0: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f   and [sqlite3_co
a3c0: 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e  mplete16()].  in
a3d0: 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f  terfaces to be o
a3e0: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
a3f0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a400: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f  E_OMIT_COMPOUND_
a410: 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73  SELECT} {.  This
a420: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
a430: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70  to omit the comp
a440: 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75  ound [SELECT] fu
a450: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20  nctionality. .  
a460: 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
a470: 6e 74 73 20 74 68 61 74 20 75 73 65 20 74 68 65  nts that use the
a480: 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e   .  UNION, UNION
a490: 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20   ALL, INTERSECT 
a4a0: 6f 72 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75  or EXCEPT compou
a4b0: 6e 64 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74  nd SELECT operat
a4c0: 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73  ors will .  caus
a4d0: 65 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  e a parse error.
a4e0: 0a 0a 20 20 41 6e 20 5b 49 4e 53 45 52 54 5d 20  ..  An [INSERT] 
a4f0: 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20 6d  statement with m
a500: 75 6c 74 69 70 6c 65 20 76 61 6c 75 65 73 20 69  ultiple values i
a510: 6e 20 74 68 65 20 56 41 4c 55 45 53 20 63 6c 61  n the VALUES cla
a520: 75 73 65 20 69 73 0a 20 20 69 6d 70 6c 65 6d 65  use is.  impleme
a530: 6e 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  nted internally 
a540: 61 73 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  as a compound SE
a550: 4c 45 43 54 2e 20 20 48 65 6e 63 65 2c 20 74 68  LECT.  Hence, th
a560: 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 0a 20  is option also. 
a570: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62   disables the ab
a580: 69 6c 69 74 79 20 74 6f 20 69 6e 73 65 72 74 20  ility to insert 
a590: 6d 6f 72 65 20 74 68 61 6e 20 61 20 73 69 6e 67  more than a sing
a5a0: 6c 65 20 72 6f 77 20 75 73 69 6e 67 20 61 6e 0a  le row using an.
a5b0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e    INSERT INTO ..
a5c0: 2e 20 56 41 4c 55 45 53 20 2e 2e 2e 20 73 74 61  . VALUES ... sta
a5d0: 74 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49  tement..}..COMPI
a5e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a5f0: 45 5f 4f 4d 49 54 5f 43 54 45 7d 20 7b 0a 20 20  E_OMIT_CTE} {.  
a600: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
a610: 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b  es support for [
a620: 63 6f 6d 6d 6f 6e 20 74 61 62 6c 65 20 65 78 70  common table exp
a630: 72 65 73 73 69 6f 6e 73 5d 20 74 6f 20 62 65 20  ressions] to be 
a640: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f  omitted..}....CO
a650: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a660: 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49  LITE_OMIT_DATETI
a670: 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66  ME_FUNCS} {.  If
a680: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
a690: 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 27  defined, SQLite'
a6a0: 73 20 62 75 69 6c 74 2d 69 6e 20 64 61 74 65 20  s built-in date 
a6b0: 61 6e 64 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c  and time manipul
a6c0: 61 74 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e  ation.  function
a6d0: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 53  s are omitted. S
a6e0: 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65  pecifically, the
a6f0: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a   SQL functions j
a700: 75 6c 69 61 6e 64 61 79 28 29 2c 20 64 61 74 65  ulianday(), date
a710: 28 29 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64 61  (),.  time(), da
a720: 74 65 74 69 6d 65 28 29 20 61 6e 64 20 73 74 72  tetime() and str
a730: 66 74 69 6d 65 28 29 20 61 72 65 20 6e 6f 74 20  ftime() are not 
a740: 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 20 64  available. The d
a750: 65 66 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20  efault column.  
a760: 76 61 6c 75 65 73 20 43 55 52 52 45 4e 54 5f 54  values CURRENT_T
a770: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
a780: 45 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54 49  E and CURRENT_TI
a790: 4d 45 53 54 41 4d 50 20 61 72 65 20 73 74 69 6c  MESTAMP are stil
a7a0: 6c 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a  l available..}..
a7b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a7c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c  SQLITE_OMIT_DECL
a7d0: 54 59 50 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TYPE} {.  This o
a7e0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
a7f0: 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  ite to omit supp
a800: 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 73  ort for the.  [s
a810: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
a820: 63 6c 74 79 70 65 28 29 5d 20 61 6e 64 20 5b 73  cltype()] and [s
a830: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
a840: 63 6c 74 79 70 65 31 36 28 29 5d 0a 20 20 69 6e  cltype16()].  in
a850: 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d  terfaces..}..COM
a860: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a870: 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41  ITE_OMIT_DEPRECA
a880: 54 45 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  TED} {.  This op
a890: 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69  tion causes SQLi
a8a0: 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f  te to omit suppo
a8b0: 72 74 20 66 6f 72 20 69 6e 74 65 72 66 61 63 65  rt for interface
a8c0: 73 0a 20 20 6d 61 72 6b 65 64 20 61 73 20 64 65  s.  marked as de
a8d0: 70 72 65 63 61 74 65 64 2e 20 20 54 68 69 73 20  precated.  This 
a8e0: 69 6e 63 6c 75 64 65 73 20 0a 20 20 5b 73 71 6c  includes .  [sql
a8f0: 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
a900: 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  ount()],.  [sqli
a910: 74 65 33 5f 65 78 70 69 72 65 64 28 29 5d 2c 0a  te3_expired()],.
a920: 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 6e 73    [sqlite3_trans
a930: 66 65 72 5f 62 69 6e 64 69 6e 67 73 28 29 5d 2c  fer_bindings()],
a940: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 67 6c 6f 62  .  [sqlite3_glob
a950: 61 6c 5f 72 65 63 6f 76 65 72 28 29 5d 2c 0a 20  al_recover()],. 
a960: 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64   [sqlite3_thread
a970: 5f 63 6c 65 61 6e 75 70 28 29 5d 20 61 6e 64 0a  _cleanup()] and.
a980: 20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72    [sqlite3_memor
a990: 79 5f 61 6c 61 72 6d 28 29 5d 20 69 6e 74 65 72  y_alarm()] inter
a9a0: 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  faces..}..COMPIL
a9b0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a9c0: 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a  _OMIT_DISKIO} {.
a9d0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
a9e0: 69 74 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 20  its all support 
a9f0: 66 6f 72 20 77 72 69 74 69 6e 67 20 74 6f 20 74  for writing to t
aa00: 68 65 20 64 69 73 6b 20 61 6e 64 20 66 6f 72 63  he disk and forc
aa10: 65 73 0a 20 20 64 61 74 61 62 61 73 65 73 20 74  es.  databases t
aa20: 6f 20 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f 72  o exist in memor
aa30: 79 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20 6f 70  y only.  This op
aa40: 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65 65  tion has not bee
aa50: 6e 20 0a 20 20 6d 61 69 6e 74 61 69 6e 65 64 20  n .  maintained 
aa60: 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 64 6f 65  and probably doe
aa70: 73 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20  s not work with 
aa80: 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  newer versions o
aa90: 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d  f SQLite..}..COM
aaa0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
aab0: 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e  ITE_OMIT_EXPLAIN
aac0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
aad0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
aae0: 73 20 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d 20  s the [EXPLAIN] 
aaf0: 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f 6d  command to be om
ab00: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20  itted from the. 
ab10: 20 6c 69 62 72 61 72 79 2e 20 41 74 74 65 6d 70   library. Attemp
ab20: 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20  ting to execute 
ab30: 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74 61  an [EXPLAIN] sta
ab40: 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75 73  tement will caus
ab50: 65 20 61 20 70 61 72 73 65 0a 20 20 65 72 72 6f  e a parse.  erro
ab60: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
ab70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ab80: 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d 20  T_FLAG_PRAGMAS} 
ab90: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
aba0: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
abb0: 72 20 61 20 73 75 62 73 65 74 20 6f 66 20 5b 50  r a subset of [P
abc0: 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73 20  RAGMA] commands 
abd0: 74 68 61 74 0a 20 20 71 75 65 72 79 20 61 6e 64  that.  query and
abe0: 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72 6f   set boolean pro
abf0: 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50  perties..}..COMP
ac00: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ac10: 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47  TE_OMIT_FLOATING
ac20: 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69 73  _POINT} {.  This
ac30: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
ac40: 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e 67  to omit floating
ac50: 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73 75  -point number su
ac60: 70 70 6f 72 74 20 66 72 6f 6d 20 74 68 65 20 53  pport from the S
ac70: 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e  QLite.  library.
ac80: 20 57 68 65 6e 20 73 70 65 63 69 66 69 65 64 2c   When specified,
ac90: 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 66 6c   specifying a fl
aca0: 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d  oating point num
acb0: 62 65 72 20 61 73 20 61 20 6c 69 74 65 72 61 6c  ber as a literal
acc0: 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e 30 31 22   .  (i.e. "1.01"
acd0: 29 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20 70  ) results in a p
ace0: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 3c  arse error...  <
acf0: 70 3e 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c  p>In the future,
ad00: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   this option may
ad10: 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f 74   also disable ot
ad20: 68 65 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  her floating poi
ad30: 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c  nt .  functional
ad40: 69 74 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  ity, for example
ad50: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65   the [sqlite3_re
ad60: 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c 20  sult_double()], 
ad70: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  .  [sqlite3_bind
ad80: 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71 6c  _double()], [sql
ad90: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
ada0: 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  e()] and.  [sqli
adb0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
adc0: 65 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f  e()] API functio
add0: 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f  ns..  </p>.}..CO
ade0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
adf0: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47  LITE_OMIT_FOREIG
ae00: 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74 68  N_KEY} {.  If th
ae10: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
ae20: 69 6e 65 64 2c 20 74 68 65 6e 20 5b 66 6f 72 65  ined, then [fore
ae30: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
ae40: 6e 74 5d 20 73 79 6e 74 61 78 20 69 73 0a 20 20  nt] syntax is.  
ae50: 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 2e 0a  not recognized..
ae60: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
ae70: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47  N {SQLITE_OMIT_G
ae80: 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68  ET_TABLE} {.  Th
ae90: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
aea0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71   support for [sq
aeb0: 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
aec0: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
aed0: 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20  3_free_table()] 
aee0: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  to be omitted..}
aef0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
af00: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e   {SQLITE_OMIT_IN
af10: 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69 73  CRBLOB} {.  This
af20: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
af30: 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69  upport for [sqli
af40: 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72 65  te3_blob | incre
af50: 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d  mental BLOB I/O]
af60: 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  .  to be omitted
af70: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
af80: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
af90: 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b  _INTEGRITY_CHECK
afa0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
afb0: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
afc0: 66 6f 72 20 74 68 65 20 5b 69 6e 74 65 67 72 69  for the [integri
afd0: 74 79 5f 63 68 65 63 6b 20 70 72 61 67 6d 61 5d  ty_check pragma]
afe0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
aff0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
b000: 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49  _LIKE_OPTIMIZATI
b010: 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
b020: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
b030: 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69   ability of SQLi
b040: 74 65 20 74 6f 20 75 73 65 20 69 6e 64 69 63 65  te to use indice
b050: 73 20 74 6f 20 68 65 6c 70 0a 20 20 72 65 73 6f  s to help.  reso
b060: 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b  lve [LIKE] and [
b070: 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73 20  GLOB] operators 
b080: 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  in a WHERE claus
b090: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
b0a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b0b0: 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e  T_LOAD_EXTENSION
b0c0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b0d0: 6e 20 6f 6d 69 74 73 20 74 68 65 20 65 6e 74 69  n omits the enti
b0e0: 72 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61  re extension loa
b0f0: 64 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20 66  ding mechanism f
b100: 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c 20 69 6e  rom.  SQLite, in
b110: 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69 74 65 33  cluding [sqlite3
b120: 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74  _enable_load_ext
b130: 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 0a 20 20  ension()] and.  
b140: 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
b150: 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72  tension()] inter
b160: 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  faces..}..COMPIL
b170: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b180: 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d  _OMIT_LOCALTIME}
b190: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
b1a0: 20 6f 6d 69 74 73 20 74 68 65 20 22 6c 6f 63 61   omits the "loca
b1b0: 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20  ltime" modifier 
b1c0: 66 72 6f 6d 20 74 68 65 20 64 61 74 65 20 61 6e  from the date an
b1d0: 64 20 74 69 6d 65 0a 20 20 66 75 6e 63 74 69 6f  d time.  functio
b1e0: 6e 73 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  ns.  This option
b1f0: 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73   is sometimes us
b200: 65 66 75 6c 20 77 68 65 6e 20 74 72 79 69 6e 67  eful when trying
b210: 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20 20 74 68   to compile.  th
b220: 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
b230: 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 61 20 70  functions on a p
b240: 6c 61 74 66 6f 72 6d 20 74 68 61 74 20 64 6f 65  latform that doe
b250: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 74 68  s not support th
b260: 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c  e.  concept of l
b270: 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f  ocal time..}..CO
b280: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
b290: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53  LITE_OMIT_LOOKAS
b2a0: 49 44 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  IDE} {.  This op
b2b0: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 5b  tion omits the [
b2c0: 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79  lookaside memory
b2d0: 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a   allocator]..}..
b2e0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b2f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f  SQLITE_OMIT_MEMO
b300: 52 59 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20 74  RYDB} {.  When t
b310: 68 69 73 20 69 73 20 64 65 66 69 6e 65 64 2c 20  his is defined, 
b320: 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73  the library does
b330: 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74 68 65   not respect the
b340: 20 73 70 65 63 69 61 6c 20 64 61 74 61 62 61 73   special databas
b350: 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72  e.  name ":memor
b360: 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75 73  y:" (normally us
b370: 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e 20  ed to create an 
b380: 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62  [in-memory datab
b390: 61 73 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a 6d  ase]). If .  ":m
b3a0: 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73 73 65  emory:" is passe
b3b0: 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70  d to [sqlite3_op
b3c0: 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  en()], [sqlite3_
b3d0: 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20 20  open16()], or.  
b3e0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
b3f0: 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69 74 68  ()], a file with
b400: 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c 20   this name will 
b410: 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72 20  be .  opened or 
b420: 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  created..}..COMP
b430: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b440: 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d  TE_OMIT_OR_OPTIM
b450: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
b460: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
b470: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66  s the ability of
b480: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 61   SQLite to use a
b490: 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68 65 72  n index together
b4a0: 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20 6f 66  .  with terms of
b4b0: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20   a WHERE clause 
b4c0: 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68 65  connected by the
b4d0: 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a   OR operator..}.
b4e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b4f0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47  {SQLITE_OMIT_PAG
b500: 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  ER_PRAGMAS} {.  
b510: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
b520: 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d  tion omits pragm
b530: 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68  as related to th
b540: 65 20 70 61 67 65 72 20 73 75 62 73 79 73 74 65  e pager subsyste
b550: 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75  m from .  the bu
b560: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
b570: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b580: 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20 20  MIT_PRAGMA} {.  
b590: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
b5a0: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
b5b0: 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64  [PRAGMA] command
b5c0: 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72  .  from the libr
b5d0: 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 69  ary. Note that i
b5e0: 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64  t is useful to d
b5f0: 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72 6f 73  efine the macros
b600: 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73 70 65   that omit.  spe
b610: 63 69 66 69 63 20 70 72 61 67 6d 61 73 20 69 6e  cific pragmas in
b620: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 69   addition to thi
b630: 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79 20 61  s, as they may a
b640: 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70 70 6f  lso remove suppo
b650: 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e 20  rting code.  in 
b660: 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74 65 6d  other sub-system
b670: 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 72 65  s. This macro re
b680: 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41 47 4d  moves the [PRAGM
b690: 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e  A] command only.
b6a0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b6b0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b6c0: 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43  PROGRESS_CALLBAC
b6d0: 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  K} {.  This opti
b6e0: 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69 6e 65  on may be define
b6f0: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 61  d to omit the ca
b700: 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73 73 75  pability to issu
b710: 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a 20 20  e "progress" .  
b720: 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e 67  callbacks during
b730: 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53 51   long-running SQ
b740: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54 68  L statements. Th
b750: 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72  e .  [sqlite3_pr
b760: 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 29  ogress_handler()
b770: 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  ].  API function
b780: 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20   is not present 
b790: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
b7a0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b7b0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51  N {SQLITE_OMIT_Q
b7c0: 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a 20  UICKBALANCE} {. 
b7d0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
b7e0: 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  ts an alternativ
b7f0: 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72 65 65  e, faster B-Tree
b800: 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74 69   balancing routi
b810: 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68 69 73  ne..  Using this
b820: 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51   option makes SQ
b830: 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20 73 6d  Lite slightly sm
b840: 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65 78 70  aller at the exp
b850: 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e 67  ense of.  making
b860: 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74 6c 79   it run slightly
b870: 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50   slower..}..COMP
b880: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b890: 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58 7d  TE_OMIT_REINDEX}
b8a0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
b8b0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
b8c0: 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58 5d 0a  , the [REINDEX].
b8d0: 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74    command is not
b8e0: 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65   included in the
b8f0: 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63   library..  Exec
b900: 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44 45 58  uting a [REINDEX
b910: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  ] statement caus
b920: 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65 72  es .  a parse er
b930: 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ror..}..COMPILE_
b940: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b950: 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d  MIT_SCHEMA_PRAGM
b960: 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  AS} {.  Defining
b970: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
b980: 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71  ts pragmas for q
b990: 75 65 72 79 69 6e 67 20 74 68 65 20 64 61 74 61  uerying the data
b9a0: 62 61 73 65 20 73 63 68 65 6d 61 20 66 72 6f 6d  base schema from
b9b0: 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d   .  the build..}
b9c0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b9d0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43   {SQLITE_OMIT_SC
b9e0: 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41  HEMA_VERSION_PRA
b9f0: 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69  GMAS} {.  Defini
ba00: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
ba10: 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72  mits pragmas for
ba20: 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20 6d 6f   querying and mo
ba30: 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20 20 64  difying the .  d
ba40: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 76  atabase schema v
ba50: 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65 72 20  ersion and user 
ba60: 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65  version from the
ba70: 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66 69 63   build. Specific
ba80: 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73 63  ally, the .  [sc
ba90: 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61 6e  hema_version] an
baa0: 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e 5d  d [user_version]
bab0: 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f 6d 69   PRAGMAs are omi
bac0: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
bad0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bae0: 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48  OMIT_SHARED_CACH
baf0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
bb00: 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69 74 65  on builds SQLite
bb10: 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f 72 74   without support
bb20: 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61 63 68   for shared-cach
bb30: 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b 73  e mode..  The [s
bb40: 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68  qlite3_enable_sh
bb50: 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20 69 73  ared_cache()] is
bb60: 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20 77   omitted along w
bb70: 69 74 68 20 61 20 66 61 69 72 0a 20 20 61 6d 6f  ith a fair.  amo
bb80: 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77 69 74  unt of logic wit
bb90: 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65 20 73  hin the B-Tree s
bba0: 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63 69 61  ubsystem associa
bbb0: 74 65 64 20 77 69 74 68 20 73 68 61 72 65 64 0a  ted with shared.
bbc0: 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65 6d 65    cache manageme
bbd0: 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nt..}..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 55 42 51 55 45 52 59 7d 20 7b 0a 20  IT_SUBQUERY} {. 
bc00: 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73 75 70   If defined, sup
bc10: 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73 65 6c  port for sub-sel
bc20: 65 63 74 73 20 61 6e 64 20 74 68 65 20 49 4e 28  ects and the IN(
bc30: 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65 20 6f  ) operator are o
bc40: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
bc50: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
bc60: 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41  E_OMIT_TCL_VARIA
bc70: 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  BLE} {.  If this
bc80: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
bc90: 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70 65 63  d, then the spec
bca0: 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c 65 2d  ial "$<variable-
bcb0: 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20 20  name>" syntax.  
bcc0: 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61 74 69  used to automati
bcd0: 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20 76  cally bind SQL v
bce0: 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43 4c 20  ariables to TCL 
bcf0: 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f 6d 69  variables is omi
bd00: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
bd10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bd20: 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a 20  OMIT_TEMPDB} {. 
bd30: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
bd40: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54  ts support for T
bd50: 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41 52 59  EMP or TEMPORARY
bd60: 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50   tables..}..COMP
bd70: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
bd80: 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20 7b  TE_OMIT_TRACE} {
bd90: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
bda0: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
bdb0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72   the [sqlite3_pr
bdc0: 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b  ofile()] and.  [
bdd0: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d  sqlite3_trace()]
bde0: 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64 20   interfaces and 
bdf0: 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64  their associated
be00: 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49   logic..}..COMPI
be10: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
be20: 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d 20  E_OMIT_TRIGGER} 
be30: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
be40: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
be50: 75 70 70 6f 72 74 20 66 6f 72 20 54 52 49 47 47  upport for TRIGG
be60: 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74  ER objects. Neit
be70: 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41  her the .  [CREA
be80: 54 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20 5b  TE TRIGGER] or [
be90: 44 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20 20  DROP TRIGGER].  
bea0: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61  commands are ava
beb0: 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63  ilable in this c
bec0: 61 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70 74  ase, and attempt
bed0: 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a 20  ing to execute. 
bee0: 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73   either will res
bef0: 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65  ult in a parse e
bf00: 72 72 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70 74  rror..  This opt
bf10: 69 6f 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c 65  ion also disable
bf20: 73 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66  s enforcement of
bf30: 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f   [foreign key co
bf40: 6e 73 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73 69  nstraints],.  si
bf50: 6e 63 65 20 74 68 65 20 63 6f 64 65 20 74 68 61  nce the code tha
bf60: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72 69  t implements tri
bf70: 67 67 65 72 73 20 61 6e 64 20 77 68 69 63 68 20  ggers and which 
bf80: 69 73 20 6f 6d 69 74 74 65 64 20 62 79 20 74 68  is omitted by th
bf90: 69 73 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 61  is.  option is a
bfa0: 6c 73 6f 20 75 73 65 64 20 74 6f 20 69 6d 70 6c  lso used to impl
bfb0: 65 6d 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20 6b  ement [foreign k
bfc0: 65 79 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a  ey actions]..}..
bfd0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
bfe0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e  SQLITE_OMIT_TRUN
bff0: 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CATE_OPTIMIZATIO
c000: 4e 7d 20 7b 0a 20 20 41 20 64 65 66 61 75 6c 74  N} {.  A default
c010: 20 62 75 69 6c 64 20 6f 66 20 53 51 4c 69 74 65   build of SQLite
c020: 2c 20 69 66 20 61 20 5b 44 45 4c 45 54 45 5d 20  , if a [DELETE] 
c030: 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f  statement has no
c040: 20 57 48 45 52 45 20 63 6c 61 75 73 65 0a 20 20   WHERE clause.  
c050: 61 6e 64 20 6f 70 65 72 61 74 65 73 20 6f 6e 20  and operates on 
c060: 61 20 74 61 62 6c 65 20 77 69 74 68 20 6e 6f 20  a table with no 
c070: 74 72 69 67 67 65 72 73 2c 20 61 6e 20 6f 70 74  triggers, an opt
c080: 69 6d 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73  imization occurs
c090: 20 74 68 61 74 0a 20 20 63 61 75 73 65 73 20 74   that.  causes t
c0a0: 68 65 20 44 45 4c 45 54 45 20 74 6f 20 6f 63 63  he DELETE to occ
c0b0: 75 72 20 62 79 20 64 72 6f 70 70 69 6e 67 20 61  ur by dropping a
c0c0: 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 74 68  nd recreating th
c0d0: 65 20 74 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f  e table.  .  Dro
c0e0: 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61  pping and recrea
c0f0: 74 69 6e 67 20 61 20 74 61 62 6c 65 20 69 73 20  ting a table is 
c100: 75 73 75 61 6c 6c 79 20 6d 75 63 68 20 66 61 73  usually much fas
c110: 74 65 72 20 74 68 61 6e 20 64 65 6c 65 74 69 6e  ter than deletin
c120: 67 0a 20 20 74 68 65 20 74 61 62 6c 65 20 63 6f  g.  the table co
c130: 6e 74 65 6e 74 20 72 6f 77 20 62 79 20 72 6f 77  ntent row by row
c140: 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 22  .  This is the "
c150: 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a  truncate optimiz
c160: 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49  ation"..}..COMPI
c170: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c180: 45 5f 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a  E_OMIT_UTF16} {.
c190: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
c1a0: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 73 75 70  used to omit sup
c1b0: 70 6f 72 74 20 66 6f 72 20 55 54 46 31 36 20 74  port for UTF16 t
c1c0: 65 78 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68  ext encoding. Wh
c1d0: 65 6e 20 74 68 69 73 20 69 73 0a 20 20 64 65 66  en this is.  def
c1e0: 69 6e 65 64 20 61 6c 6c 20 41 50 49 20 66 75 6e  ined all API fun
c1f0: 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74 75  ctions that retu
c200: 72 6e 20 6f 72 20 61 63 63 65 70 74 20 55 54 46  rn or accept UTF
c210: 31 36 20 65 6e 63 6f 64 65 64 20 74 65 78 74 20  16 encoded text 
c220: 61 72 65 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c  are.  unavailabl
c230: 65 2e 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  e. These functio
c240: 6e 73 20 63 61 6e 20 62 65 20 69 64 65 6e 74 69  ns can be identi
c250: 66 69 65 64 20 62 79 20 74 68 65 20 66 61 63 74  fied by the fact
c260: 20 74 68 61 74 20 74 68 65 79 20 65 6e 64 0a 20   that they end. 
c270: 20 77 69 74 68 20 27 31 36 27 2c 20 66 6f 72 20   with '16', for 
c280: 65 78 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33  example [sqlite3
c290: 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c 20 5b  _prepare16()], [
c2a0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
c2b0: 65 78 74 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b  ext16()] and.  [
c2c0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
c2d0: 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  t16()]..}..COMPI
c2e0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c2f0: 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b  E_OMIT_VACUUM} {
c300: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
c310: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
c320: 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63  the [VACUUM].  c
c330: 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e  ommand is not in
c340: 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69  cluded in the li
c350: 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69  brary..  Executi
c360: 6e 67 20 61 20 5b 56 41 43 55 55 4d 5d 20 73 74  ng a [VACUUM] st
c370: 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a  atement causes .
c380: 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e    a parse error.
c390: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c3a0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
c3b0: 56 49 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69  VIEW} {.  Defini
c3c0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
c3d0: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
c3e0: 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e   VIEW objects. N
c3f0: 65 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43  either the .  [C
c400: 52 45 41 54 45 20 56 49 45 57 5d 20 6e 6f 72 20  REATE VIEW] nor 
c410: 74 68 65 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a  the [DROP VIEW].
c420: 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61    commands are a
c430: 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73  vailable in this
c440: 20 63 61 73 65 2c 20 61 6e 64 0a 20 20 61 74 74   case, and.  att
c450: 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75  empting to execu
c460: 74 65 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72  te either will r
c470: 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65  esult in a parse
c480: 20 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49   error...  WARNI
c490: 4e 47 3a 20 49 66 20 74 68 69 73 20 6d 61 63 72  NG: If this macr
c4a0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74  o is defined, it
c4b0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73   will not be pos
c4c0: 73 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20  sible to open a 
c4d0: 64 61 74 61 62 61 73 65 0a 20 20 66 6f 72 20 77  database.  for w
c4e0: 68 69 63 68 20 74 68 65 20 73 63 68 65 6d 61 20  hich the schema 
c4f0: 63 6f 6e 74 61 69 6e 73 20 56 49 45 57 20 6f 62  contains VIEW ob
c500: 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49  jects. .}..COMPI
c510: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
c520: 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54 41  E_OMIT_VIRTUALTA
c530: 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
c540: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
c550: 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69  rt for the [sqli
c560: 74 65 33 5f 76 74 61 62 20 7c 20 56 69 72 74 75  te3_vtab | Virtu
c570: 61 6c 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68  al Table].  mech
c580: 61 6e 69 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e  anism in SQLite.
c590: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
c5a0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
c5b0: 57 41 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  WAL} {.  This op
c5c0: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22  tion omits the "
c5d0: 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67  [write-ahead log
c5e0: 5d 22 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c  ]" (a.k.a. "[WAL
c5f0: 5d 22 29 20 63 61 70 61 62 69 6c 69 74 79 2e 0a  ]") capability..
c600: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c610: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57  N {SQLITE_OMIT_W
c620: 53 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  SD} {.  This opt
c630: 69 6f 6e 20 62 75 69 6c 64 73 20 61 20 76 65 72  ion builds a ver
c640: 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  sion of the SQLi
c650: 74 65 20 6c 69 62 72 61 72 79 20 74 68 61 74 20  te library that 
c660: 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72  contains no.  Wr
c670: 69 74 61 62 6c 65 20 53 74 61 74 69 63 20 44 61  itable Static Da
c680: 74 61 20 28 57 53 44 29 2e 20 20 57 53 44 20 69  ta (WSD).  WSD i
c690: 73 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c  s global variabl
c6a0: 65 73 20 61 6e 64 2f 6f 72 20 73 74 61 74 69 63  es and/or static
c6b0: 0a 20 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53  .  variables.  S
c6c0: 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f  ome platforms do
c6d0: 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44   not support WSD
c6e0: 2c 20 61 6e 64 20 74 68 69 73 20 6f 70 74 69 6f  , and this optio
c6f0: 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79 0a 20  n is necessary. 
c700: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 53 51   in order for SQ
c710: 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f  Lite to work tho
c720: 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a  se platforms.  .
c730: 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20  .  Unlike other 
c740: 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77 68 69  OMIT options whi
c750: 63 68 20 6d 61 6b 65 20 74 68 65 20 53 51 4c 69  ch make the SQLi
c760: 74 65 20 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c  te library small
c770: 65 72 2c 0a 20 20 74 68 69 73 20 6f 70 74 69 6f  er,.  this optio
c780: 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e 63 72 65  n actually incre
c790: 61 73 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66  ases the size of
c7a0: 20 53 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65   SQLite and make
c7b0: 73 20 69 74 20 72 75 6e 0a 20 20 61 20 6c 69 74  s it run.  a lit
c7c0: 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c  tle slower.  Onl
c7d0: 79 20 75 73 65 20 74 68 69 73 20 6f 70 74 69 6f  y use this optio
c7e0: 6e 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 62  n if SQLite is b
c7f0: 65 69 6e 67 20 62 75 69 6c 74 20 66 6f 72 20 61  eing built for a
c800: 6e 0a 20 20 65 6d 62 65 64 64 65 64 20 74 61 72  n.  embedded tar
c810: 67 65 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  get that does no
c820: 74 20 73 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d  t support WSD..}
c830: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c840: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46   {SQLITE_OMIT_XF
c850: 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73  ER_OPT} {.  This
c860: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
c870: 70 70 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d 69  pport for optimi
c880: 7a 61 74 69 6f 6e 73 20 74 68 61 74 20 68 65 6c  zations that hel
c890: 70 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f  p statements.  o
c8a0: 66 20 74 68 65 20 66 6f 72 6d 20 22 49 4e 53 45  f the form "INSE
c8b0: 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45  RT INTO ... SELE
c8c0: 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74  CT ..." run fast
c8d0: 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
c8e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45  PTION {SQLITE_ZE
c8f0: 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54  RO_MALLOC} {.  T
c900: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
c910: 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75   both the [defau
c920: 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
c930: 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b  tor] and the.  [
c940: 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
c950: 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d   allocator] from
c960: 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73   the build and s
c970: 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74 75  ubstitutes a stu
c980: 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  b.  memory alloc
c990: 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73  ator that always
c9a0: 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20   fails.  SQLite 
c9b0: 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74  will not run wit
c9c0: 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65  h this.  stub me
c9d0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73  mory allocator s
c9e0: 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20  ince it will be 
c9f0: 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61  unable to alloca
ca00: 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a  te memory.  But.
ca10: 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e 20    this stub can 
ca20: 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20 73  be replaced at s
ca30: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a  tart-time using.
ca40: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69    [sqlite3_confi
ca50: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
ca60: 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f  G_MALLOC],...) o
ca70: 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  r.  [sqlite3_con
ca80: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
ca90: 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a  FIG_HEAP],...)..
caa0: 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66    So the net eff
cab0: 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70  ect of this comp
cac0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
cad0: 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77  is that it allow
cae0: 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65  s SQLite.  to be
caf0: 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69   compiled and li
cb00: 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20 73  nked against a s
cb10: 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68  ystem library th
cb20: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
cb30: 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20  ort.  malloc(), 
cb40: 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72  free(), and/or r
cb50: 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74  ealloc()..}..</t
cb60: 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62  cl>.<a name="deb
cb70: 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a  ugoptions"></a>.
cb80: 3c 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73  <h2>1.7 Analysis
cb90: 20 61 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f   and Debugging O
cba0: 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c  ptions</h2>.<tcl
cbb0: 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  >..COMPILE_OPTIO
cbc0: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d  N {SQLITE_DEBUG}
cbd0: 20 7b 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20   {.  The SQLite 
cbe0: 73 6f 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74  source code cont
cbf0: 61 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74  ains literally t
cc00: 68 6f 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65  housands of asse
cc10: 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a  rt() statements.
cc20: 20 20 75 73 65 64 20 74 6f 20 76 65 72 69 66 79    used to verify
cc30: 20 69 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70   internal assump
cc40: 74 69 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75  tions and subrou
cc50: 74 69 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f  tine preconditio
cc60: 6e 73 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e  ns and.  postcon
cc70: 64 69 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20  ditions.  These 
cc80: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
cc90: 6e 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79  nts are normally
cca0: 20 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74   turned off.  (t
ccb0: 68 65 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20  hey generate no 
ccc0: 63 6f 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e  code) since turn
ccd0: 69 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65  ing them on make
cce0: 73 20 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70  s SQLite run app
ccf0: 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72  roximately.  thr
cd00: 65 65 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e  ee times slower.
cd10: 20 20 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e    But for testin
cd20: 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20  g and analysis, 
cd30: 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  it is useful to 
cd40: 74 75 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72  turn.  the asser
cd50: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  t() statements o
cd60: 6e 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44  n.  The SQLITE_D
cd70: 45 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  EBUG compile-tim
cd80: 65 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68  e option does th
cd90: 69 73 2e 0a 20 20 3c 70 3e 53 51 4c 49 54 45 5f  is..  <p>SQLITE_
cda0: 44 45 42 55 47 20 61 6c 73 6f 20 65 6e 61 62 6c  DEBUG also enabl
cdb0: 65 73 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65  es some other de
cdc0: 62 75 67 67 69 6e 67 20 66 65 61 74 75 72 65 73  bugging features
cdd0: 2c 20 73 75 63 68 20 61 73 0a 20 20 73 70 65 63  , such as.  spec
cde0: 69 61 6c 20 5b 50 52 41 47 4d 41 5d 20 73 74 61  ial [PRAGMA] sta
cdf0: 74 65 6d 65 6e 74 73 20 74 68 61 74 20 74 75 72  tements that tur
ce00: 6e 20 6f 6e 20 74 72 61 63 69 6e 67 20 61 6e 64  n on tracing and
ce10: 20 6c 69 73 74 69 6e 67 20 66 65 61 74 75 72 65   listing feature
ce20: 73 0a 20 20 75 73 65 64 20 66 6f 72 20 74 72 6f  s.  used for tro
ce30: 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20 61 6e 64  ubleshooting and
ce40: 20 61 6e 61 6c 79 73 69 73 20 6f 66 20 74 68 65   analysis of the
ce50: 20 5b 56 44 42 45 5d 20 61 6e 64 20 63 6f 64 65   [VDBE] and code
ce60: 20 67 65 6e 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43   generator..}..C
ce70: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ce80: 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20  QLITE_MEMDEBUG} 
ce90: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d  {.  The SQLITE_M
cea0: 45 4d 44 45 42 55 47 20 6f 70 74 69 6f 6e 20 63  EMDEBUG option c
ceb0: 61 75 73 65 73 20 61 6e 20 69 6e 73 74 72 75 6d  auses an instrum
cec0: 65 6e 74 65 64 20 0a 20 20 5b 64 65 62 75 67 67  ented .  [debugg
ced0: 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ing memory alloc
cee0: 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75 73  ator].  to be us
cef0: 65 64 20 61 73 20 74 68 65 20 64 65 66 61 75 6c  ed as the defaul
cf00: 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  t memory allocat
cf10: 6f 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65  or within SQLite
cf20: 2e 20 20 54 68 65 0a 20 20 69 6e 73 74 72 75 6d  .  The.  instrum
cf30: 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c  ented memory all
cf40: 6f 63 61 74 6f 72 20 63 68 65 63 6b 73 20 66 6f  ocator checks fo
cf50: 72 20 6d 69 73 75 73 65 20 6f 66 20 64 79 6e 61  r misuse of dyna
cf60: 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65  mically allocate
cf70: 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61  d.  memory.  Exa
cf80: 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75 73 65 20  mples of misuse 
cf90: 69 6e 63 6c 75 64 65 20 75 73 69 6e 67 20 6d 65  include using me
cfa0: 6d 6f 72 79 20 61 66 74 65 72 20 69 74 20 69 73  mory after it is
cfb0: 20 66 72 65 65 64 2c 0a 20 20 77 72 69 74 69 6e   freed,.  writin
cfc0: 67 20 6f 66 66 20 74 68 65 20 65 6e 64 73 20 6f  g off the ends o
cfd0: 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  f a memory alloc
cfe0: 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d  ation, freeing m
cff0: 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65 76 69 6f  emory not previo
d000: 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64 20  usly.  obtained 
d010: 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20  from the memory 
d020: 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61  allocator, or fa
d030: 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c  iling to initial
d040: 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f  ize newly.  allo
d050: 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a  cated memory..}.
d060: 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d  .</tcl>.<a name=
d070: 22 77 69 6e 33 32 6f 70 74 69 6f 6e 73 22 3e 3c  "win32options"><
d080: 2f 61 3e 0a 3c 68 32 3e 31 2e 38 20 57 69 6e 64  /a>.<h2>1.8 Wind
d090: 6f 77 73 2d 53 70 65 63 69 66 69 63 20 4f 70 74  ows-Specific Opt
d0a0: 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a  ions</h2>.<tcl>.
d0b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d0c0: 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 48 45  {SQLITE_WIN32_HE
d0d0: 41 50 5f 43 52 45 41 54 45 7d 20 7b 0a 20 20 54  AP_CREATE} {.  T
d0e0: 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65  his option force
d0f0: 73 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  s the Win32 nati
d100: 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ve memory alloca
d110: 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65  tor, when enable
d120: 64 2c 20 74 6f 0a 20 20 63 72 65 61 74 65 20 61  d, to.  create a
d130: 20 70 72 69 76 61 74 65 20 68 65 61 70 20 74 6f   private heap to
d140: 20 68 6f 6c 64 20 61 6c 6c 20 6d 65 6d 6f 72 79   hold all memory
d150: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 7d 0a   allocations..}.
d160: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
d170: 7b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41  {SQLITE_WIN32_MA
d180: 4c 4c 4f 43 5f 56 41 4c 49 44 41 54 45 7d 20 7b  LLOC_VALIDATE} {
d190: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 66  .  This option f
d1a0: 6f 72 63 65 73 20 74 68 65 20 57 69 6e 33 32 20  orces the Win32 
d1b0: 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c  native memory al
d1c0: 6c 6f 63 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e  locator, when en
d1d0: 61 62 6c 65 64 2c 20 74 6f 0a 20 20 6d 61 6b 65  abled, to.  make
d1e0: 20 73 74 72 61 74 65 67 69 63 20 63 61 6c 6c 73   strategic calls
d1f0: 20 69 6e 74 6f 20 74 68 65 20 48 65 61 70 56 61   into the HeapVa
d200: 6c 69 64 61 74 65 28 29 20 66 75 6e 63 74 69 6f  lidate() functio
d210: 6e 20 69 66 20 61 73 73 65 72 74 28 29 20 69 73  n if assert() is
d220: 20 61 6c 73 6f 0a 20 20 65 6e 61 62 6c 65 64 2e   also.  enabled.
d230: 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a                 .}..</tcl>.