Documentation Source Text

Hex Artifact Content
Login

Artifact 7465c9d917362caf9655ee8232dfbf71b2f64fb2:


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 46 54 53  TION {SQLITE_FTS
1a00: 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  3_MAX_EXPR_DEPTH
1a10: 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54  =<i>N</i>} {.  T
1a20: 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74  his macro sets t
1a30: 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68  he maximum depth
1a40: 20 6f 66 20 74 68 65 20 73 65 61 72 63 68 20 74   of the search t
1a50: 72 65 65 20 74 68 61 74 20 63 6f 72 72 65 73 70  ree that corresp
1a60: 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20 72 69  onds to.  the ri
1a70: 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  ght-hand side of
1a80: 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61   the MATCH opera
1a90: 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53 33 5d  tor in an [FTS3]
1aa0: 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c 2d   or [FTS4] full-
1ab0: 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20 20 54  text.  index.  T
1ac0: 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61  he full-text sea
1ad0: 72 63 68 20 75 73 65 73 20 61 20 72 65 63 75 72  rch uses a recur
1ae0: 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c 20  sive algorithm, 
1af0: 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f 66 0a  so the depth of.
1b00: 20 20 74 68 65 20 74 72 65 65 20 69 73 20 6c 69    the tree is li
1b10: 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65 6e 74  mited to prevent
1b20: 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68 20   using too much 
1b30: 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20 54 68  stack space.  Th
1b40: 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d 69  e default.  limi
1b50: 74 20 69 73 20 31 32 2e 20 20 54 68 69 73 20 6c  t is 12.  This l
1b60: 69 6d 69 74 20 69 73 20 73 75 66 66 69 63 69 65  imit is sufficie
1b70: 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30 39  nt for up to 409
1b80: 35 20 73 65 61 72 63 68 20 74 65 72 6d 73 20 6f  5 search terms o
1b90: 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d 68 61  n the.  right-ha
1ba0: 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 4d  nd side of the M
1bb0: 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20 61 6e  ATCH operator an
1bc0: 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61 63 6b  d it holds stack
1bd0: 20 73 70 61 63 65 20 75 73 61 67 65 20 74 6f 20   space usage to 
1be0: 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32 30 30  .  less than 200
1bf0: 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a 20  0 bytes..  <p>. 
1c00: 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20 46 54   For ordinary FT
1c10: 53 33 2f 46 54 53 34 20 71 75 65 72 69 65 73 2c  S3/FTS4 queries,
1c20: 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65 65   the search tree
1c30: 20 64 65 70 74 68 20 69 73 20 61 70 70 72 6f 78   depth is approx
1c40: 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20 62 61  imately.  the ba
1c50: 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20 6f  se-2 logarithm o
1c60: 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  f the number of 
1c70: 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72 69 67  terms in the rig
1c80: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ht-hand side of 
1c90: 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70 65 72  the.  MATCH oper
1ca0: 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c 20  ator.  However, 
1cb0: 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75 65 72  for [phrase quer
1cc0: 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20 71  ies] and [NEAR q
1cd0: 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20 73 65  ueries] the.  se
1ce0: 61 72 63 68 20 74 72 65 65 20 64 65 70 74 68 20  arch tree depth 
1cf0: 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74 68 65  is linear in the
1d00: 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67 68 74   number of right
1d10: 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72 6d 73  -hand side terms
1d20: 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66 61 75  ..  So the defau
1d30: 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74 20 6f  lt depth limit o
1d40: 66 20 31 32 20 69 73 20 73 75 66 66 69 63 69 65  f 12 is sufficie
1d50: 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30 39  nt for up to 409
1d60: 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74 65 72  5 ordinary.  ter
1d70: 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20 69  ms on a MATCH, i
1d80: 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66 69 63  t is only suffic
1d90: 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72 20 31  ient for 11 or 1
1da0: 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45 41 52  2 phrase or NEAR
1db0: 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65 6e 20  .  terms.  Even 
1dc0: 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20  so, the default 
1dd0: 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e 6f  is more than eno
1de0: 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61 70 70  ugh for most app
1df0: 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d  lication..}..COM
1e00: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
1e10: 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a  ITE_MAX_MMAP_SIZ
1e20: 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  E=<i>N</i>} {.  
1e30: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
1e40: 61 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75  a hard upper bou
1e50: 6e 64 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74  nd on the amount
1e60: 20 6f 66 20 61 64 64 72 65 73 73 20 73 70 61 63   of address spac
1e70: 65 20 74 68 61 74 0a 20 20 63 61 6e 20 62 65 20  e that.  can be 
1e80: 75 73 65 64 20 62 79 20 61 6e 79 20 73 69 6e 67  used by any sing
1e90: 6c 65 20 64 61 74 61 62 61 73 65 20 66 6f 72 20  le database for 
1ea0: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
1eb0: 4f 2e 0a 20 20 53 65 74 74 69 6e 67 20 74 68 69  O..  Setting thi
1ec0: 73 20 76 61 6c 75 65 20 74 6f 20 30 20 63 6f 6d  s value to 0 com
1ed0: 70 6c 65 74 65 6c 79 20 64 69 73 61 62 6c 65 73  pletely disables
1ee0: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
1ef0: 2f 4f 20 61 6e 64 0a 20 20 63 61 75 73 65 73 20  /O and.  causes 
1f00: 6c 6f 67 69 63 20 61 73 73 6f 63 69 61 74 65 64  logic associated
1f10: 20 77 69 74 68 20 6d 65 6d 6f 72 79 2d 6d 61 70   with memory-map
1f20: 70 65 64 20 49 2f 4f 20 74 6f 20 62 65 20 6f 6d  ped I/O to be om
1f30: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20  itted from the. 
1f40: 20 62 75 69 6c 64 2e 20 20 54 68 69 73 20 6f 70   build.  This op
1f50: 74 69 6f 6e 20 64 6f 65 73 20 63 68 61 6e 67 65  tion does change
1f60: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65 6d   the default mem
1f70: 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61  ory-mapped I/O a
1f80: 64 64 72 65 73 73 0a 20 20 73 70 61 63 65 20 73  ddress.  space s
1f90: 69 7a 65 20 28 73 65 74 20 62 79 20 5b 53 51 4c  ize (set by [SQL
1fa0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50  ITE_DEFAULT_MMAP
1fb0: 5f 53 49 5a 45 5d 20 6f 72 0a 20 20 73 71 6c 69  _SIZE] or.  sqli
1fc0: 74 65 33 5f 63 6f 6e 66 69 67 28 5b 53 51 4c 49  te3_config([SQLI
1fd0: 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53  TE_CONFIG_MMAP_S
1fe0: 49 5a 45 5d 29 20 6f 72 20 74 68 65 0a 20 20 72  IZE]) or the.  r
1ff0: 75 6e 2d 74 69 6d 65 20 6d 65 6d 6f 72 79 2d 6d  un-time memory-m
2000: 61 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65 73  apped I/O addres
2010: 73 20 73 70 61 63 65 20 73 69 7a 65 20 28 73 65  s space size (se
2020: 74 20 62 79 0a 20 20 73 71 6c 69 74 65 33 5f 66  t by.  sqlite3_f
2030: 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 5b 53 51 4c  ile_control([SQL
2040: 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53  ITE_FCNTL_MMAP_S
2050: 49 5a 45 5d 29 20 6f 72 0a 20 20 5b 50 52 41 47  IZE]) or.  [PRAG
2060: 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20 61  MA mmap_size]) a
2070: 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73 65 20  s long as those 
2080: 6f 74 68 65 72 20 73 65 74 74 69 6e 67 73 20 61  other settings a
2090: 72 65 20 6c 65 73 73 20 74 68 61 6e 20 74 68 65  re less than the
20a0: 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  .  maximum value
20b0: 20 64 65 66 69 6e 65 64 20 68 65 72 65 2e 0a 7d   defined here..}
20c0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
20d0: 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48   {SQLITE_MAX_SCH
20e0: 45 4d 41 5f 52 45 54 52 59 3d 3c 69 3e 4e 3c 2f  EMA_RETRY=<i>N</
20f0: 69 3e 7d 20 7b 0a 20 20 57 68 65 6e 65 76 65 72  i>} {.  Whenever
2100: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
2110: 68 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 70 72  hema changes, pr
2120: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
2130: 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  s are automatica
2140: 6c 6c 79 0a 20 20 72 65 70 72 65 70 61 72 65 64  lly.  reprepared
2150: 20 74 6f 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20   to accommodate 
2160: 74 68 65 20 6e 65 77 20 73 63 68 65 6d 61 2e 20  the new schema. 
2170: 20 54 68 65 72 65 20 69 73 20 61 20 72 61 63 65   There is a race
2180: 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65 0a   condition here.
2190: 20 20 69 6e 20 74 68 61 74 20 69 66 20 6f 6e 65    in that if one
21a0: 20 74 68 72 65 61 64 20 69 73 20 63 6f 6e 73 74   thread is const
21b0: 61 6e 74 6c 79 20 63 68 61 6e 67 69 6e 67 20 74  antly changing t
21c0: 68 65 20 73 63 68 65 6d 61 2c 20 61 6e 6f 74 68  he schema, anoth
21d0: 65 72 20 74 68 72 65 61 64 0a 20 20 6d 69 67 68  er thread.  migh
21e0: 74 20 73 70 69 6e 20 6f 6e 20 72 65 70 61 72 73  t spin on repars
21f0: 65 73 20 61 6e 64 20 72 65 70 72 65 70 61 72 61  es and reprepara
2200: 74 69 6f 6e 73 20 6f 66 20 61 20 70 72 65 70 61  tions of a prepa
2210: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  red statement an
2220: 64 0a 20 20 6e 65 76 65 72 20 67 65 74 20 61 6e  d.  never get an
2230: 79 20 72 65 61 6c 20 77 6f 72 6b 20 64 6f 6e 65  y real work done
2240: 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
2250: 72 20 70 72 65 76 65 6e 74 73 20 61 6e 20 69 6e  r prevents an in
2260: 66 69 6e 69 74 65 20 6c 6f 6f 70 0a 20 20 62 79  finite loop.  by
2270: 20 66 6f 72 63 69 6e 67 20 74 68 65 20 73 70 69   forcing the spi
2280: 6e 6e 69 6e 67 20 74 68 72 65 61 64 20 74 6f 20  nning thread to 
2290: 67 69 76 65 20 75 70 20 61 66 74 65 72 20 61 20  give up after a 
22a0: 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  fixed number of 
22b0: 61 74 74 65 6d 70 74 73 0a 20 20 61 74 20 72 65  attempts.  at re
22c0: 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 70 72  compiling the pr
22d0: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
22e0: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73  .  The default s
22f0: 65 74 74 69 6e 67 20 69 73 20 35 30 20 77 68 69  etting is 50 whi
2300: 63 68 20 69 73 0a 20 20 6d 6f 72 65 20 74 68 61  ch is.  more tha
2310: 6e 20 61 64 65 71 75 61 74 65 20 66 6f 72 20 6d  n adequate for m
2320: 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ost applications
2330: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2340: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 49 4e 49  ION {SQLITE_MINI
2350: 4d 55 4d 5f 46 49 4c 45 5f 44 45 53 43 52 49 50  MUM_FILE_DESCRIP
2360: 54 4f 52 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  TOR=<i>N</i>} {.
2370: 20 20 54 68 65 20 75 6e 69 78 20 5b 56 46 53 5d    The unix [VFS]
2380: 20 77 69 6c 6c 20 6e 65 76 65 72 20 75 73 65 20   will never use 
2390: 61 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  a file descripto
23a0: 72 20 6c 65 73 73 20 74 68 61 6e 20 3c 69 3e 4e  r less than <i>N
23b0: 3c 2f 69 3e 2e 20 20 54 68 65 0a 20 20 64 65 66  </i>.  The.  def
23c0: 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 3c 69  ault value of <i
23d0: 3e 4e 3c 2f 69 3e 20 69 73 20 33 2e 0a 20 20 3c  >N</i> is 3..  <
23e0: 70 3e 0a 20 20 41 76 6f 69 64 69 6e 67 20 74 68  p>.  Avoiding th
23f0: 65 20 75 73 65 20 6f 66 20 6c 6f 77 2d 6e 75 6d  e use of low-num
2400: 62 65 72 65 64 20 66 69 6c 65 20 64 65 73 63 72  bered file descr
2410: 69 70 74 6f 72 73 20 69 73 20 61 20 64 65 66 65  iptors is a defe
2420: 6e 73 65 20 61 67 61 69 6e 73 74 0a 20 20 61 63  nse against.  ac
2430: 63 69 64 65 6e 74 61 6c 20 64 61 74 61 62 61 73  cidental databas
2440: 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e 20 20 49  e corruption.  I
2450: 66 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  f a database fil
2460: 65 20 77 61 73 20 6f 70 65 6e 65 64 20 75 73 69  e was opened usi
2470: 6e 67 0a 20 20 66 69 6c 65 20 64 65 73 63 72 69  ng.  file descri
2480: 70 74 6f 72 20 32 2c 20 66 6f 72 20 65 78 61 6d  ptor 2, for exam
2490: 70 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20 61 6e  ple, and then an
24a0: 20 61 73 73 65 72 74 28 29 20 66 61 69 6c 65 64   assert() failed
24b0: 20 61 6e 64 20 69 6e 76 6f 6b 65 64 0a 20 20 77   and invoked.  w
24c0: 72 69 74 65 28 32 2c 2e 2e 2e 29 2c 20 74 68 61  rite(2,...), tha
24d0: 74 20 77 6f 75 6c 64 20 6c 69 6b 65 6c 79 20 63  t would likely c
24e0: 61 75 73 65 20 64 61 74 61 62 61 73 65 20 63 6f  ause database co
24f0: 72 72 75 70 74 69 6f 6e 20 62 79 20 6f 76 65 72  rruption by over
2500: 77 72 69 74 74 69 6e 67 0a 20 20 70 61 72 74 20  writting.  part 
2510: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
2520: 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 61 73  file with the as
2530: 73 65 72 74 69 6f 6e 20 65 72 72 6f 72 20 6d 65  sertion error me
2540: 73 73 61 67 65 2e 20 20 55 73 69 6e 67 20 6f 6e  ssage.  Using on
2550: 6c 79 0a 20 20 68 69 67 68 65 72 2d 76 61 6c 75  ly.  higher-valu
2560: 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  ed file descript
2570: 6f 72 73 20 61 76 6f 69 64 73 20 74 68 69 73 20  ors avoids this 
2580: 70 6f 74 65 6e 74 69 61 6c 20 70 72 6f 62 6c 65  potential proble
2590: 6d 2e 20 20 54 68 65 20 0a 20 20 70 72 6f 74 65  m.  The .  prote
25a0: 63 74 69 6f 6e 20 61 67 61 69 6e 73 74 0a 20 20  ction against.  
25b0: 75 73 69 6e 67 20 6c 6f 77 2d 6e 75 6d 62 65 72  using low-number
25c0: 65 64 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  ed file descript
25d0: 6f 72 73 20 63 61 6e 20 62 65 20 64 69 73 61 62  ors can be disab
25e0: 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 74  led by setting t
25f0: 68 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69  his.  compile-ti
2600: 6d 65 20 6f 70 74 69 6f 6e 20 74 6f 20 30 2e 0a  me option to 0..
2610: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2620: 4e 20 7b 53 51 4c 49 54 45 5f 50 4f 57 45 52 53  N {SQLITE_POWERS
2630: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 3d 3c 69  AFE_OVERWRITE=<i
2640: 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c  >&lt;0 or 1&gt;<
2650: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  /i>} {.  This op
2660: 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65  tion changes the
2670: 20 64 65 66 61 75 6c 74 20 61 73 73 75 6d 70 74   default assumpt
2680: 69 6f 6e 20 61 62 6f 75 74 20 5b 70 6f 77 65 72  ion about [power
2690: 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d 0a  safe overwrite].
26a0: 20 20 66 6f 72 20 74 68 65 20 75 6e 64 65 72 6c    for the underl
26b0: 79 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d 73  ying filesystems
26c0: 20 66 6f 72 20 74 68 65 20 75 6e 69 78 20 61 6e   for the unix an
26d0: 64 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 65 73  d windows [VFSes
26e0: 5d 2e 0a 20 20 53 65 74 74 69 6e 67 20 53 51 4c  ]..  Setting SQL
26f0: 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  ITE_POWERSAFE_OV
2700: 45 52 57 52 49 54 45 20 74 6f 20 31 20 63 61 75  ERWRITE to 1 cau
2710: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 61 73  ses SQLite to as
2720: 73 75 6d 65 20 74 68 61 74 0a 20 20 61 70 70 6c  sume that.  appl
2730: 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 77 72  ication-level wr
2740: 69 74 65 73 20 63 61 6e 6e 6f 74 20 63 68 61 6e  ites cannot chan
2750: 67 65 73 20 62 79 74 65 73 20 6f 75 74 73 69 64  ges bytes outsid
2760: 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 0a 20  e the range of. 
2770: 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20 65   bytes written e
2780: 76 65 6e 20 69 66 20 74 68 65 20 77 72 69 74 65  ven if the write
2790: 20 6f 63 63 75 72 73 20 6a 75 73 74 20 62 65 66   occurs just bef
27a0: 6f 72 65 20 61 20 70 6f 77 65 72 20 6c 6f 73 73  ore a power loss
27b0: 2e 0a 20 20 57 69 74 68 20 53 51 4c 49 54 45 5f  ..  With SQLITE_
27c0: 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52  POWERSAFE_OVERWR
27d0: 49 54 45 20 73 65 74 20 74 6f 20 30 2c 20 53 51  ITE set to 0, SQ
27e0: 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68 61  Lite assumes tha
27f0: 74 20 6f 74 68 65 72 0a 20 20 62 79 74 65 73 20  t other.  bytes 
2800: 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63 74  in the same sect
2810: 6f 72 20 77 69 74 68 20 61 20 77 72 69 74 74 65  or with a writte
2820: 6e 20 62 79 74 65 20 6d 69 67 68 74 20 62 65 20  n byte might be 
2830: 63 68 61 6e 67 65 64 20 6f 72 20 0a 20 20 64 61  changed or .  da
2840: 6d 61 67 65 64 20 62 79 20 61 20 70 6f 77 65 72  maged by a power
2850: 20 6c 6f 73 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c   loss..}..COMPIL
2860: 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54 41 43  E_OPTION {YYSTAC
2870: 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b 6d 61  KDEPTH=<i>&lt;ma
2880: 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69 3e 7d  x_depth&gt;</i>}
2890: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
28a0: 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  sets the maximum
28b0: 20 64 65 70 74 68 20 6f 66 20 74 68 65 20 4c 41   depth of the LA
28c0: 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73 65 64  LR(1) stack used
28d0: 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20 70 61   by.  the SQL pa
28e0: 72 73 65 72 20 77 69 74 68 69 6e 20 53 51 4c 69  rser within SQLi
28f0: 74 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  te.  The default
2900: 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e 20 20   value is 100.  
2910: 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70 70 6c  A typical.  appl
2920: 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75 73 65  ication will use
2930: 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f 75 74   less than about
2940: 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20 74 68   20 levels of th
2950: 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76 65 6c  e stack..  Devel
2960: 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70 70 6c  opers whose appl
2970: 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61 69 6e  ications contain
2980: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
2990: 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d 6f 72  that .  need mor
29a0: 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c 52 28  e than 100 LALR(
29b0: 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69 65 73  1) stack entries
29c0: 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75 73 6c   should seriousl
29d0: 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72 65 66  y.  consider ref
29e0: 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72 20 53  actoring their S
29f0: 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69 6b 65  QL as it is like
2a00: 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20 62 65  ly to be well be
2a10: 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69 6c 69  yond.  the abili
2a20: 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61 6e 20  ty of any human 
2a30: 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e 0a 7d  to comprehend..}
2a40: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e 32  .</tcl>..<h2>1.2
2a50: 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74 20   Options To Set 
2a60: 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32 3e  Size Limits</h2>
2a70: 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 63  ..<p>There are c
2a80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
2a90: 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73 65  ons that will se
2aa0: 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a 6f  t upper bounds.o
2ab0: 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20 76  n the sizes of v
2ac0: 61 72 69 6f 75 73 20 73 74 72 75 63 74 75 72 65  arious structure
2ad0: 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54 68  s in SQLite.  Th
2ae0: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f  e compile-time.o
2af0: 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79 20  ptions normally 
2b00: 73 65 74 20 61 20 68 61 72 64 20 75 70 70 65 72  set a hard upper
2b10: 20 62 6f 75 6e 64 20 74 68 61 74 20 63 61 6e 20   bound that can 
2b20: 62 65 20 63 68 61 6e 67 65 64 0a 61 74 20 72 75  be changed.at ru
2b30: 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69 76 69  n-time on indivi
2b40: 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63  dual [database c
2b50: 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73 69 6e  onnections] usin
2b60: 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c  g the.[sqlite3_l
2b70: 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61 63  imit()] interfac
2b80: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63  e.</p>..<p>The c
2b90: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
2ba0: 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20  ons for setting 
2bb0: 75 70 70 65 72 20 62 6f 75 6e 64 73 20 61 72 65  upper bounds are
2bc0: 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63 75 6d  .[limits | docum
2bd0: 65 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c 79  ented separately
2be0: 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  ].  The followin
2bf0: 67 20 69 73 20 61 20 6c 69 73 74 20 6f 66 0a 74  g is a list of.t
2c00: 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74  he available set
2c10: 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e  tings:</p>..<ul>
2c20: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
2c30: 58 5f 41 54 54 41 43 48 45 44 5d 20 20 3c 2f 6c  X_ATTACHED]  </l
2c40: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
2c50: 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c  MAX_COLUMN]  </l
2c60: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
2c70: 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MAX_COMPOUND_SEL
2c80: 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  ECT]  </li>.<li>
2c90: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50   [SQLITE_MAX_EXP
2ca0: 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69 3e 0a  R_DEPTH]  </li>.
2cb0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
2cc0: 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 20 20  _FUNCTION_ARG]  
2cd0: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
2ce0: 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 20  TE_MAX_LENGTH]  
2cf0: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
2d00: 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54  TE_MAX_LIKE_PATT
2d10: 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c  ERN_LENGTH]  </l
2d20: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
2d30: 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 5d 20  MAX_PAGE_COUNT] 
2d40: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
2d50: 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47  ITE_MAX_SQL_LENG
2d60: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
2d70: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49  [SQLITE_MAX_VARI
2d80: 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 20 3c 2f  ABLE_NUMBER]  </
2d90: 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 61 20 6e 61  li>.</ul>..<a na
2da0: 6d 65 3d 22 63 6f 6e 74 72 6f 6c 66 65 61 74 75  me="controlfeatu
2db0: 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e  res"></a>.<h2>1.
2dc0: 33 20 4f 70 74 69 6f 6e 73 20 54 6f 20 43 6f 6e  3 Options To Con
2dd0: 74 72 6f 6c 20 4f 70 65 72 61 74 69 6e 67 20 43  trol Operating C
2de0: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 3c 2f  haracteristics</
2df0: 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49  h2>..<tcl>.COMPI
2e00: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
2e10: 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44  E_4_BYTE_ALIGNED
2e20: 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 4f 6e 20  _MALLOC} {.  On 
2e30: 6d 6f 73 74 20 73 79 73 74 65 6d 73 2c 20 74 68  most systems, th
2e40: 65 20 6d 61 6c 6c 6f 63 28 29 20 73 79 73 74 65  e malloc() syste
2e50: 6d 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 61  m call returns a
2e60: 20 62 75 66 66 65 72 20 74 68 61 74 20 69 73 0a   buffer that is.
2e70: 20 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20    aligned to an 
2e80: 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e  8-byte boundary.
2e90: 20 20 42 75 74 20 6f 6e 20 73 6f 6d 65 20 73 79    But on some sy
2ea0: 73 74 65 6d 73 20 28 65 78 3a 20 77 69 6e 64 6f  stems (ex: windo
2eb0: 77 73 29 20 6d 61 6c 6c 6f 63 28 29 0a 20 20 72  ws) malloc().  r
2ec0: 65 74 75 72 6e 73 20 34 2d 62 79 74 65 20 61 6c  eturns 4-byte al
2ed0: 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 20  igned pointer.  
2ee0: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
2ef0: 65 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20 62 65  e option must be
2f00: 20 75 73 65 64 0a 20 20 6f 6e 20 73 79 73 74 65   used.  on syste
2f10: 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 34  ms that return 4
2f20: 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f  -byte aligned po
2f30: 69 6e 74 65 72 73 20 66 72 6f 6d 20 6d 61 6c 6c  inters from mall
2f40: 6f 63 28 29 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  oc()..}..COMPILE
2f50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
2f60: 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c  CASE_SENSITIVE_L
2f70: 49 4b 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  IKE} {.  If this
2f80: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
2f90: 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 62 75 69  nt, then the bui
2fa0: 6c 74 2d 69 6e 20 5b 4c 49 4b 45 5d 20 6f 70 65  lt-in [LIKE] ope
2fb0: 72 61 74 6f 72 20 77 69 6c 6c 20 62 65 0a 20 20  rator will be.  
2fc0: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 2e 20  case sensitive. 
2fd0: 20 54 68 69 73 20 73 61 6d 65 20 65 66 66 65 63   This same effec
2fe0: 74 20 63 61 6e 20 62 65 20 61 63 68 69 65 76 65  t can be achieve
2ff0: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73  d at run-time us
3000: 69 6e 67 0a 20 20 74 68 65 20 5b 63 61 73 65 5f  ing.  the [case_
3010: 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70  sensitive_like p
3020: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
3030: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3040: 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f  E_DIRECT_OVERFLO
3050: 57 5f 52 45 41 44 7d 20 7b 0a 20 20 57 68 65 6e  W_READ} {.  When
3060: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
3070: 70 72 65 73 65 6e 74 2c 20 63 6f 6e 74 65 6e 74  present, content
3080: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0a 20 20   contained in.  
3090: 5b 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73 5d  [overflow pages]
30a0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
30b0: 20 66 69 6c 65 20 69 73 20 72 65 61 64 20 64 69   file is read di
30c0: 72 65 63 74 6c 79 20 66 72 6f 6d 20 64 69 73 6b  rectly from disk
30d0: 2c 0a 20 20 62 79 70 61 73 73 69 6e 67 20 74 68  ,.  bypassing th
30e0: 65 20 5b 70 61 67 65 20 63 61 63 68 65 5d 2c 20  e [page cache], 
30f0: 64 75 72 69 6e 67 20 72 65 61 64 20 74 72 61 6e  during read tran
3100: 73 61 63 74 69 6f 6e 73 2e 20 20 49 6e 20 61 70  sactions.  In ap
3110: 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 74 68 61  plications.  tha
3120: 74 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 72 65  t do a lot of re
3130: 61 64 73 20 6f 66 20 6c 61 72 67 65 20 42 4c 4f  ads of large BLO
3140: 42 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  Bs, this option 
3150: 6d 69 67 68 74 20 69 6d 70 72 6f 76 65 20 72 65  might improve re
3160: 61 64 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65  ad.  performance
3170: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
3180: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 48 41 56 45  ION {SQLITE_HAVE
3190: 5f 49 53 4e 41 4e 7d 20 7b 0a 20 20 49 66 20 74  _ISNAN} {.  If t
31a0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 70 72  his option is pr
31b0: 65 73 65 6e 74 2c 20 74 68 65 6e 20 53 51 4c 69  esent, then SQLi
31c0: 74 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20  te will use the 
31d0: 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e  isnan() function
31e0: 20 66 72 6f 6d 0a 20 20 74 68 65 20 73 79 73 74   from.  the syst
31f0: 65 6d 20 6d 61 74 68 20 6c 69 62 72 61 72 79 2e  em math library.
3200: 20 20 57 69 74 68 6f 75 74 20 74 68 69 73 20 6f    Without this o
3210: 70 74 69 6f 6e 20 28 74 68 65 20 64 65 66 61 75  ption (the defau
3220: 6c 74 20 62 65 68 61 76 69 6f 72 29 0a 20 20 53  lt behavior).  S
3230: 51 4c 69 74 65 20 75 73 65 73 20 69 74 73 20 6f  QLite uses its o
3240: 77 6e 20 69 6e 74 65 72 6e 61 6c 20 69 6d 70 6c  wn internal impl
3250: 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 69 73  ementation of is
3260: 6e 61 6e 28 29 2e 20 20 53 51 4c 69 74 65 20 75  nan().  SQLite u
3270: 73 65 73 0a 20 20 69 74 73 20 6f 77 6e 20 69 6e  ses.  its own in
3280: 74 65 72 6e 61 6c 20 69 73 6e 61 6e 28 29 20 69  ternal isnan() i
3290: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 62 79  mplementation by
32a0: 20 64 65 66 61 75 6c 74 20 62 65 63 61 75 73 65   default because
32b0: 20 6f 66 20 70 61 73 74 0a 20 20 70 72 6f 62 6c   of past.  probl
32c0: 65 6d 73 20 77 69 74 68 20 73 79 73 74 65 6d 20  ems with system 
32d0: 69 73 6e 61 6e 28 29 20 66 75 6e 63 74 69 6f 6e  isnan() function
32e0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
32f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 53 5f  TION {SQLITE_OS_
3300: 4f 54 48 45 52 3d 3c 69 3e 26 6c 74 3b 30 20 6f  OTHER=<i>&lt;0 o
3310: 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  r 1&gt;</i>} {. 
3320: 20 54 68 65 20 6f 70 74 69 6f 6e 20 63 61 75 73   The option caus
3330: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
3340: 74 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 6f  t its built-in o
3350: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
3360: 69 6e 74 65 72 66 61 63 65 73 0a 20 20 66 6f 72  interfaces.  for
3370: 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20   Unix, Windows, 
3380: 61 6e 64 20 4f 53 2f 32 2e 20 20 54 68 65 20 72  and OS/2.  The r
3390: 65 73 75 6c 74 69 6e 67 20 6c 69 62 72 61 72 79  esulting library
33a0: 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 64 65   will have no de
33b0: 66 61 75 6c 74 0a 20 20 5b 73 71 6c 69 74 65 33  fault.  [sqlite3
33c0: 5f 76 66 73 20 7c 20 6f 70 65 72 61 74 69 6e 67  _vfs | operating
33d0: 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63   system interfac
33e0: 65 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e  e].  Application
33f0: 73 20 6d 75 73 74 20 75 73 65 0a 20 20 5b 73 71  s must use.  [sq
3400: 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
3410: 65 72 28 29 5d 20 74 6f 20 72 65 67 69 73 74 65  er()] to registe
3420: 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  r an appropriate
3430: 20 69 6e 74 65 72 66 61 63 65 20 62 65 66 6f 72   interface befor
3440: 65 0a 20 20 75 73 69 6e 67 20 53 51 4c 69 74 65  e.  using SQLite
3450: 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  .  Applications 
3460: 6d 75 73 74 20 61 6c 73 6f 20 73 75 70 70 6c 79  must also supply
3470: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
3480: 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69   for the.  [sqli
3490: 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20 61  te3_os_init()] a
34a0: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 65  nd [sqlite3_os_e
34b0: 6e 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  nd()] interfaces
34c0: 2e 20 20 54 68 65 20 75 73 75 61 6c 20 70 72 61  .  The usual pra
34d0: 63 74 69 63 65 0a 20 20 69 73 20 66 6f 72 20 74  ctice.  is for t
34e0: 68 65 20 73 75 70 70 6c 69 65 64 20 5b 73 71 6c  he supplied [sql
34f0: 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 20  ite3_os_init()] 
3500: 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74  to invoke [sqlit
3510: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
3520: 29 5d 2e 0a 20 20 53 51 4c 69 74 65 20 77 69 6c  )]..  SQLite wil
3530: 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  l automatically 
3540: 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f  invoke [sqlite3_
3550: 6f 73 5f 69 6e 69 74 28 29 5d 20 77 68 65 6e 20  os_init()] when 
3560: 69 74 20 69 6e 69 74 69 61 6c 69 7a 65 73 2e 0a  it initializes..
3570: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
3580: 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 64  s typically used
3590: 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 53   when building S
35a0: 51 4c 69 74 65 20 66 6f 72 20 61 6e 20 65 6d 62  QLite for an emb
35b0: 65 64 64 65 64 0a 20 20 70 6c 61 74 66 6f 72 6d  edded.  platform
35c0: 20 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20 6f   with a custom o
35d0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
35e0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
35f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 45 43 55 52  ON {SQLITE_SECUR
3600: 45 5f 44 45 4c 45 54 45 7d 20 7b 0a 20 20 54 68  E_DELETE} {.  Th
3610: 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  is compile-time 
3620: 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73 20 74  option changes t
3630: 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69  he default setti
3640: 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 73 65 63  ng of the.  [sec
3650: 75 72 65 5f 64 65 6c 65 74 65 20 70 72 61 67 6d  ure_delete pragm
3660: 61 5d 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  a].  When this o
3670: 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65  ption is not use
3680: 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65  d, secure_delete
3690: 20 64 65 66 61 75 6c 74 73 0a 20 20 74 6f 20 6f   defaults.  to o
36a0: 66 66 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  ff.  When this o
36b0: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
36c0: 2c 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  , secure_delete 
36d0: 64 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 2e 0a  defaults to on..
36e0: 0a 20 20 54 68 65 20 73 65 63 75 72 65 5f 64 65  .  The secure_de
36f0: 6c 65 74 65 20 73 65 74 74 69 6e 67 20 63 61 75  lete setting cau
3700: 73 65 73 20 64 65 6c 65 74 65 64 20 63 6f 6e 74  ses deleted cont
3710: 65 6e 74 20 74 6f 20 62 65 20 6f 76 65 72 77 72  ent to be overwr
3720: 69 74 74 65 6e 20 77 69 74 68 0a 20 20 7a 65 72  itten with.  zer
3730: 6f 73 2e 20 20 54 68 65 72 65 20 69 73 20 61 20  os.  There is a 
3740: 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63  small performanc
3750: 65 20 70 65 6e 61 6c 74 79 20 66 6f 72 20 74 68  e penalty for th
3760: 69 73 20 73 69 6e 63 65 20 61 64 64 69 74 69 6f  is since additio
3770: 6e 61 6c 20 49 2f 4f 0a 20 20 6d 75 73 74 20 6f  nal I/O.  must o
3780: 63 63 75 72 2e 20 20 4f 6e 20 74 68 65 20 6f 74  ccur.  On the ot
3790: 68 65 72 20 68 61 6e 64 2c 20 73 65 63 75 72 65  her hand, secure
37a0: 5f 64 65 6c 65 74 65 20 63 61 6e 20 70 72 65 76  _delete can prev
37b0: 65 6e 74 20 73 65 6e 73 69 74 69 76 65 20 0a 20  ent sensitive . 
37c0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f   information fro
37d0: 6d 20 6c 69 6e 67 65 72 69 6e 67 20 69 6e 20 75  m lingering in u
37e0: 6e 75 73 65 64 20 70 61 72 74 73 20 6f 66 20 74  nused parts of t
37f0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
3800: 20 61 66 74 65 72 20 69 74 0a 20 20 68 61 73 20   after it.  has 
3810: 61 6c 6c 65 67 65 64 6c 79 20 62 65 65 6e 20 64  allegedly been d
3820: 65 6c 65 74 65 64 2e 20 20 53 65 65 20 74 68 65  eleted.  See the
3830: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f   documentation o
3840: 6e 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f  n the.  [secure_
3850: 64 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 20 66  delete pragma] f
3860: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
3870: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  formation..}..CO
3880: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3890: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
38a0: 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 20 6f 72  <i>&lt;0 or 1 or
38b0: 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   2&gt;</i>} {.  
38c0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74  This option cont
38d0: 72 6f 6c 73 20 77 68 65 74 68 65 72 20 6f 72 20  rols whether or 
38e0: 6e 6f 74 20 63 6f 64 65 20 69 73 20 69 6e 63 6c  not code is incl
38f0: 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20 74  uded in SQLite t
3900: 6f 0a 20 20 65 6e 61 62 6c 65 20 69 74 20 74 6f  o.  enable it to
3910: 20 6f 70 65 72 61 74 65 20 73 61 66 65 6c 79 20   operate safely 
3920: 69 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64  in a multithread
3930: 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20  ed environment. 
3940: 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74 20 69   The.  default i
3950: 73 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  s SQLITE_THREADS
3960: 41 46 45 3d 31 20 77 68 69 63 68 20 69 73 20 73  AFE=1 which is s
3970: 61 66 65 20 66 6f 72 20 75 73 65 20 69 6e 20 61  afe for use in a
3980: 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 20   multithreaded. 
3990: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 57   environment.  W
39a0: 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  hen compiled wit
39b0: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
39c0: 41 46 45 3d 30 20 61 6c 6c 20 6d 75 74 65 78 69  AFE=0 all mutexi
39d0: 6e 67 20 63 6f 64 65 0a 20 20 69 73 20 6f 6d 69  ng code.  is omi
39e0: 74 74 65 64 20 61 6e 64 20 69 74 20 69 73 20 75  tted and it is u
39f0: 6e 73 61 66 65 20 74 6f 20 75 73 65 20 53 51 4c  nsafe to use SQL
3a00: 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68  ite in a multith
3a10: 72 65 61 64 65 64 20 70 72 6f 67 72 61 6d 2e 0a  readed program..
3a20: 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20    When compiled 
3a30: 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45  with SQLITE_THRE
3a40: 41 44 53 41 46 45 3d 32 2c 20 53 51 4c 69 74 65  ADSAFE=2, SQLite
3a50: 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
3a60: 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a  a multithreaded.
3a70: 20 20 70 72 6f 67 72 61 6d 20 73 6f 20 6c 6f 6e    program so lon
3a80: 67 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72 65  g as no two thre
3a90: 61 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20 75  ads attempt to u
3aa0: 73 65 20 74 68 65 20 73 61 6d 65 0a 20 20 5b 64  se the same.  [d
3ab0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
3ac0: 6f 6e 5d 20 28 6f 72 20 61 6e 79 20 5b 70 72 65  on] (or any [pre
3ad0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
3ae0: 5d 20 64 65 72 69 76 65 64 20 66 72 6f 6d 0a 20  ] derived from. 
3af0: 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20 63   that database c
3b00: 6f 6e 6e 65 63 74 69 6f 6e 29 20 61 74 20 74 68  onnection) at th
3b10: 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a 0a 20 20  e same time...  
3b20: 54 6f 20 70 75 74 20 69 74 20 61 6e 6f 74 68 65  To put it anothe
3b30: 72 20 77 61 79 2c 20 53 51 4c 49 54 45 5f 54 48  r way, SQLITE_TH
3b40: 52 45 41 44 53 41 46 45 3d 31 20 73 65 74 73 20  READSAFE=1 sets 
3b50: 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 5b 74  the default.  [t
3b60: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
3b70: 6f 20 53 65 72 69 61 6c 69 7a 65 64 2e 20 20 53  o Serialized.  S
3b80: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
3b90: 3d 32 20 73 65 74 73 20 74 68 65 20 64 65 66 61  =2 sets the defa
3ba0: 75 6c 74 0a 20 20 5b 74 68 72 65 61 64 69 6e 67  ult.  [threading
3bb0: 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d   mode] to Multi-
3bc0: 74 68 72 65 61 64 65 64 2e 20 20 41 6e 64 20 53  threaded.  And S
3bd0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
3be0: 3d 30 20 73 65 74 73 20 74 68 65 0a 20 20 5b 74  =0 sets the.  [t
3bf0: 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
3c00: 6f 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 65  o Single-threade
3c10: 64 2e 0a 0a 20 20 54 68 65 20 76 61 6c 75 65 20  d...  The value 
3c20: 6f 66 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  of SQLITE_THREAD
3c30: 53 41 46 45 20 63 61 6e 20 62 65 20 64 65 74 65  SAFE can be dete
3c40: 72 6d 69 6e 65 64 20 61 74 20 72 75 6e 2d 74 69  rmined at run-ti
3c50: 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b  me.  using the [
3c60: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
3c70: 66 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e  fe()] interface.
3c80: 0a 0a 20 20 57 68 65 6e 20 53 51 4c 69 74 65 20  ..  When SQLite 
3c90: 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65  has been compile
3ca0: 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54 48  d with SQLITE_TH
3cb0: 52 45 41 44 53 41 46 45 3d 31 20 6f 72 0a 20 20  READSAFE=1 or.  
3cc0: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
3cd0: 45 3d 32 20 74 68 65 6e 20 74 68 65 20 5b 74 68  E=2 then the [th
3ce0: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 0a 20 20  reading mode].  
3cf0: 63 61 6e 20 62 65 20 61 6c 74 65 72 65 64 20 61  can be altered a
3d00: 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  t run-time using
3d10: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
3d20: 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
3d30: 65 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74  e together.  wit
3d40: 68 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 76  h one of these v
3d50: 65 72 62 73 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20  erbs:..  <ul>.  
3d60: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
3d70: 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d  IG_SINGLETHREAD]
3d80: 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43  .  <li>[SQLITE_C
3d90: 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
3da0: 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45  D].  <li>[SQLITE
3db0: 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a  _CONFIG_SERIALIZ
3dc0: 45 44 5d 0a 20 20 3c 2f 75 6c 3e 0a 0a 20 20 54  ED].  </ul>..  T
3dd0: 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
3de0: 4e 4f 4d 55 54 45 58 5d 20 61 6e 64 0a 20 20 5b  NOMUTEX] and.  [
3df0: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c  SQLITE_OPEN_FULL
3e00: 4d 55 54 45 58 5d 20 66 6c 61 67 73 20 74 6f 20  MUTEX] flags to 
3e10: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
3e20: 28 29 5d 20 63 61 6e 20 61 6c 73 6f 20 62 65 20  ()] can also be 
3e30: 75 73 65 64 0a 20 20 74 6f 20 61 64 6a 75 73 74  used.  to adjust
3e40: 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20   the [threading 
3e50: 6d 6f 64 65 5d 20 6f 66 20 69 6e 64 69 76 69 64  mode] of individ
3e60: 75 61 6c 20 5b 64 61 74 61 62 61 73 65 20 63 6f  ual [database co
3e70: 6e 6e 65 63 74 69 6f 6e 73 5d 0a 20 20 61 74 20  nnections].  at 
3e80: 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 4e 6f 74  run-time...  Not
3e90: 65 20 74 68 61 74 20 77 68 65 6e 20 53 51 4c 69  e that when SQLi
3ea0: 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
3eb0: 69 74 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41  ith SQLITE_THREA
3ec0: 44 53 41 46 45 3d 30 2c 20 74 68 65 20 63 6f 64  DSAFE=0, the cod
3ed0: 65 0a 20 20 74 6f 20 6d 61 6b 65 20 53 51 4c 69  e.  to make SQLi
3ee0: 74 65 20 74 68 72 65 61 64 73 61 66 65 20 69 73  te threadsafe is
3ef0: 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
3f00: 65 20 62 75 69 6c 64 2e 20 20 57 68 65 6e 20 74  e build.  When t
3f10: 68 69 73 20 6f 63 63 75 72 73 2c 0a 20 20 69 74  his occurs,.  it
3f20: 20 69 73 20 69 6d 70 6f 73 73 69 62 6c 65 20 74   is impossible t
3f30: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 5b 74 68  o change the [th
3f40: 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 74  reading mode] at
3f50: 20 73 74 61 72 74 2d 74 69 6d 65 20 6f 72 20 72   start-time or r
3f60: 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20 53 65 65 20  un-time...  See 
3f70: 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  the [threading m
3f80: 6f 64 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69  ode] documentati
3f90: 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  on for additiona
3fa0: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20  l information.  
3fb0: 6f 6e 20 61 73 70 65 63 74 73 20 6f 66 20 75 73  on aspects of us
3fc0: 69 6e 67 20 53 51 4c 69 74 65 20 69 6e 20 61 20  ing SQLite in a 
3fd0: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
3fe0: 76 69 72 6f 6e 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f  vironment..}..CO
3ff0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4000: 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d  LITE_TEMP_STORE=
4010: 3c 69 3e 26 6c 74 3b 30 20 74 68 72 6f 75 67 68  <i>&lt;0 through
4020: 20 33 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20   3&gt;</i>} {.  
4030: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74  This option cont
4040: 72 6f 6c 73 20 77 68 65 74 68 65 72 20 74 65 6d  rols whether tem
4050: 70 6f 72 61 72 79 20 66 69 6c 65 73 20 61 72 65  porary files are
4060: 20 73 74 6f 72 65 64 20 6f 6e 20 64 69 73 6b 20   stored on disk 
4070: 6f 72 0a 20 20 69 6e 20 6d 65 6d 6f 72 79 2e 20  or.  in memory. 
4080: 20 54 68 65 20 6d 65 61 6e 69 6e 67 73 20 66 6f   The meanings fo
4090: 72 20 76 61 72 69 6f 75 73 20 73 65 74 74 69 6e  r various settin
40a0: 67 73 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69  gs of this compi
40b0: 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e  le-time.  option
40c0: 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a   are as follows:
40d0: 0a 0a 20 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70  ..  <table cellp
40e0: 61 64 64 69 6e 67 3d 22 32 22 20 62 6f 72 64 65  adding="2" borde
40f0: 72 3d 22 31 22 3e 0a 20 20 3c 74 72 3e 3c 74 68  r="1">.  <tr><th
4100: 3e 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f  >SQLITE_TEMP_STO
4110: 52 45 3c 2f 74 68 3e 3c 74 68 3e 4d 65 61 6e 69  RE</th><th>Meani
4120: 6e 67 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c  ng</th></tr>.  <
4130: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
4140: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e  nter">0</td><td>
4150: 41 6c 77 61 79 73 20 75 73 65 20 74 65 6d 70 6f  Always use tempo
4160: 72 61 72 79 20 66 69 6c 65 73 3c 2f 74 64 3e 3c  rary files</td><
4170: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
4180: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c  lign="center">1<
4190: 2f 74 64 3e 3c 74 64 3e 55 73 65 20 66 69 6c 65  /td><td>Use file
41a0: 73 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74  s by default but
41b0: 20 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52   allow the.  [PR
41c0: 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d  AGMA temp_store]
41d0: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72   command to over
41e0: 72 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20  ride</td></tr>. 
41f0: 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22   <tr><td align="
4200: 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74  center">2</td><t
4210: 64 3e 55 73 65 20 6d 65 6d 6f 72 79 20 62 79 20  d>Use memory by 
4220: 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f  default but allo
4230: 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  w the.  [PRAGMA 
4240: 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d  temp_store] comm
4250: 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c  and to override<
4260: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
4270: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
4280: 72 22 3e 33 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77  r">3</td><td>Alw
4290: 61 79 73 20 75 73 65 20 6d 65 6d 6f 72 79 3c 2f  ays use memory</
42a0: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 2f 74 61 62  td></tr>.  </tab
42b0: 6c 65 3e 0a 0a 20 20 54 68 65 20 64 65 66 61 75  le>..  The defau
42c0: 6c 74 20 73 65 74 74 69 6e 67 20 69 73 20 31 2e  lt setting is 1.
42d0: 20 20 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 20    .  Additional 
42e0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20  information can 
42f0: 62 65 20 66 6f 75 6e 64 20 69 6e 20 5b 74 65 6d  be found in [tem
4300: 70 73 74 6f 72 65 20 7c 20 74 65 6d 70 66 69 6c  pstore | tempfil
4310: 65 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d  es.html]..}..COM
4320: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4330: 49 54 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c  ITE_TRACE_SIZE_L
4340: 49 4d 49 54 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b  IMIT=<i>N</i>} {
4350: 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f  .  If this macro
4360: 20 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 61   is defined to a
4370: 20 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65   positive intege
4380: 72 20 3c 69 3e 4e 3c 2f 69 3e 2c 20 74 68 65 6e  r <i>N</i>, then
4390: 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 0a 20   the length of. 
43a0: 20 73 74 72 69 6e 67 73 20 61 6e 64 20 42 4c 4f   strings and BLO
43b0: 42 20 74 68 61 74 20 61 72 65 20 65 78 70 61 6e  B that are expan
43c0: 64 65 64 20 69 6e 74 6f 20 70 61 72 61 6d 65 74  ded into paramet
43d0: 65 72 73 20 69 6e 20 74 68 65 20 6f 75 74 70 75  ers in the outpu
43e0: 74 20 6f 66 0a 20 20 5b 73 71 6c 69 74 65 33 5f  t of.  [sqlite3_
43f0: 74 72 61 63 65 28 29 5d 20 69 73 20 6c 69 6d 69  trace()] is limi
4400: 74 65 64 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e 20  ted to <i>N</i> 
4410: 62 79 74 65 73 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  bytes.  .}..COMP
4420: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4430: 54 45 5f 55 53 45 5f 55 52 49 7d 20 7b 0a 20 20  TE_USE_URI} {.  
4440: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
4450: 65 73 20 74 68 65 20 5b 55 52 49 20 66 69 6c 65  es the [URI file
4460: 6e 61 6d 65 5d 20 70 72 6f 63 65 73 73 20 6c 6f  name] process lo
4470: 67 69 63 20 74 6f 20 62 65 20 65 6e 61 62 6c 65  gic to be enable
4480: 64 20 62 79 20 0a 20 20 64 65 66 61 75 6c 74 2e  d by .  default.
4490: 20 20 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61    .}..</tcl>..<a
44a0: 20 6e 61 6d 65 3d 22 65 6e 61 62 6c 65 66 65 61   name="enablefea
44b0: 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  tures"></a>.<h2>
44c0: 31 2e 34 20 4f 70 74 69 6f 6e 73 20 54 6f 20 45  1.4 Options To E
44d0: 6e 61 62 6c 65 20 46 65 61 74 75 72 65 73 20 4e  nable Features N
44e0: 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f  ormally Turned O
44f0: 66 66 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43  ff</h2>..<tcl>.C
4500: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
4510: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f  QLITE_ALLOW_URI_
4520: 41 55 54 48 4f 52 49 54 59 7d 20 7b 0a 20 20 5b  AUTHORITY} {.  [
4530: 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d 20 6e  URI filenames] n
4540: 6f 72 6d 61 6c 6c 79 20 74 68 72 6f 77 20 61 6e  ormally throw an
4550: 20 65 72 72 6f 72 20 69 73 20 74 68 65 20 61 75   error is the au
4560: 74 68 6f 72 69 74 79 20 73 65 63 74 69 6f 6e 20  thority section 
4570: 69 73 0a 20 20 6e 6f 74 20 65 69 74 68 65 72 20  is.  not either 
4580: 65 6d 70 74 79 20 6f 72 20 22 6c 6f 63 61 6c 68  empty or "localh
4590: 6f 73 74 22 2e 20 20 48 6f 77 65 76 65 72 2c 20  ost".  However, 
45a0: 69 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  if SQLite is com
45b0: 70 69 6c 65 64 20 77 69 74 68 0a 20 20 74 68 65  piled with.  the
45c0: 20 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 55 52   SQLITE_ALLOW_UR
45d0: 49 5f 41 55 54 48 4f 52 49 54 59 20 63 6f 6d 70  I_AUTHORITY comp
45e0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c  ile-time option,
45f0: 20 74 68 65 6e 20 74 68 65 20 55 52 49 20 69 73   then the URI is
4600: 0a 20 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20  .  is converted 
4610: 69 6e 74 6f 20 61 20 55 6e 69 66 6f 72 6d 20 4e  into a Uniform N
4620: 61 6d 69 6e 67 20 43 6f 6e 76 65 6e 74 69 6f 6e  aming Convention
4630: 20 28 55 4e 43 29 20 66 69 6c 65 6e 61 6d 65 20   (UNC) filename 
4640: 61 6e 64 20 70 61 73 73 65 64 0a 20 20 64 6f 77  and passed.  dow
4650: 6e 20 74 6f 20 74 68 65 20 75 6e 64 65 72 6c 79  n to the underly
4660: 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79  ing operating sy
4670: 73 74 65 6d 20 74 68 61 74 20 77 61 79 2e 20 20  stem that way.  
4680: 0a 20 20 3c 70 3e 0a 20 20 53 6f 6d 65 20 66 75  .  <p>.  Some fu
4690: 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
46a0: 20 53 51 4c 69 74 65 20 6d 61 79 20 63 68 61 6e   SQLite may chan
46b0: 67 65 20 74 6f 20 65 6e 61 62 6c 65 20 74 68 69  ge to enable thi
46c0: 73 20 66 65 61 74 75 72 65 0a 20 20 62 79 20 64  s feature.  by d
46d0: 65 66 61 75 6c 74 2e 0a 7d 0a 43 4f 4d 50 49 4c  efault..}.COMPIL
46e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
46f0: 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f  _ALLOW_COVERING_
4700: 49 4e 44 45 58 5f 53 43 41 4e 3d 3c 69 3e 26 6c  INDEX_SCAN=<i>&l
4710: 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e  t;0 or 1&gt;</i>
4720: 7d 20 7b 0a 20 20 54 68 69 73 20 43 2d 70 72 65  } {.  This C-pre
4730: 70 72 6f 63 65 73 73 20 6d 61 63 72 6f 20 64 65  process macro de
4740: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
4750: 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20  ault setting of 
4760: 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  the.  [SQLITE_CO
4770: 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e  NFIG_COVERING_IN
4780: 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6e 66 69 67  DEX_SCAN] config
4790: 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 2e  uration setting.
47a0: 20 20 49 74 20 64 65 66 61 75 6c 74 73 0a 20 20    It defaults.  
47b0: 74 6f 20 31 20 28 6f 6e 29 20 77 68 69 63 68 20  to 1 (on) which 
47c0: 6d 65 61 6e 73 20 74 68 61 74 20 63 6f 76 65 72  means that cover
47d0: 69 6e 67 20 69 6e 64 69 63 65 73 20 61 72 65 20  ing indices are 
47e0: 75 73 65 64 20 66 6f 72 20 66 75 6c 6c 20 74 61  used for full ta
47f0: 62 6c 65 0a 20 20 73 63 61 6e 73 20 77 68 65 72  ble.  scans wher
4800: 65 20 70 6f 73 73 69 62 6c 65 2c 20 69 6e 20 6f  e possible, in o
4810: 72 64 65 72 20 74 6f 20 72 65 64 75 63 65 20 49  rder to reduce I
4820: 2f 4f 20 61 6e 64 20 69 6d 70 72 6f 76 65 20 70  /O and improve p
4830: 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 20 20 48 6f  erformance..  Ho
4840: 77 65 76 65 72 2c 20 74 68 65 20 75 73 65 20 6f  wever, the use o
4850: 66 20 61 20 63 6f 76 65 72 69 6e 67 20 69 6e 64  f a covering ind
4860: 65 78 20 66 6f 72 20 61 20 66 75 6c 6c 20 73 63  ex for a full sc
4870: 61 6e 20 77 69 6c 6c 20 63 61 75 73 65 20 72 65  an will cause re
4880: 73 75 6c 74 73 0a 20 20 74 6f 20 61 70 70 65 61  sults.  to appea
4890: 72 20 69 6e 20 61 20 64 69 66 66 65 72 65 6e 74  r in a different
48a0: 20 6f 72 64 65 72 20 66 72 6f 6d 20 6c 65 67 61   order from lega
48b0: 63 79 2c 20 77 68 69 63 68 20 63 6f 75 6c 64 20  cy, which could 
48c0: 63 61 75 73 65 20 73 6f 6d 65 0a 20 20 28 69 6e  cause some.  (in
48d0: 63 6f 72 72 65 63 74 6c 79 2d 63 6f 64 65 64 29  correctly-coded)
48e0: 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61 74   legacy applicat
48f0: 69 6f 6e 73 20 74 6f 20 62 72 65 61 6b 2e 20 20  ions to break.  
4900: 48 65 6e 63 65 2c 20 74 68 65 20 63 6f 76 65 72  Hence, the cover
4910: 69 6e 67 0a 20 20 69 6e 64 65 78 20 73 63 61 6e  ing.  index scan
4920: 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 64   option can be d
4930: 69 73 61 62 6c 65 64 20 61 74 20 63 6f 6d 70 69  isabled at compi
4940: 6c 65 2d 74 69 6d 65 20 6f 6e 20 73 79 73 74 65  le-time on syste
4950: 6d 73 20 74 68 61 74 20 77 68 61 74 0a 20 20 74  ms that what.  t
4960: 6f 20 6d 69 6e 69 6d 69 7a 65 20 74 68 65 69 72  o minimize their
4970: 20 72 69 73 6b 20 6f 66 20 65 78 70 6f 73 69 6e   risk of exposin
4980: 67 20 65 72 72 6f 72 73 20 69 6e 20 6c 65 67 61  g errors in lega
4990: 63 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  cy applications.
49a0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
49b0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
49c0: 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 3c 69 3e 26  E_8_3_NAMES=<i>&
49d0: 6c 74 3b 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69  lt;1 or 2&gt;</i
49e0: 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  >} {.  If this C
49f0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
4a00: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
4a10: 74 68 65 6e 20 65 78 74 72 61 20 63 6f 64 65 20  then extra code 
4a20: 69 73 0a 20 20 69 6e 63 6c 75 64 65 64 20 74 68  is.  included th
4a30: 61 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65  at allows SQLite
4a40: 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20   to function on 
4a50: 61 20 66 69 6c 65 73 79 73 74 65 6d 20 74 68 61  a filesystem tha
4a60: 74 0a 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  t.  only support
4a70: 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 2e 20   8+3 filenames. 
4a80: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66   If the value of
4a90: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 31   this macro is 1
4aa0: 2c 0a 20 20 74 68 65 6e 20 74 68 65 20 64 65 66  ,.  then the def
4ab0: 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73  ault behavior is
4ac0: 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20   to continue to 
4ad0: 75 73 65 20 6c 6f 6e 67 20 66 69 6c 65 6e 61 6d  use long filenam
4ae0: 65 73 20 61 6e 64 0a 20 20 74 6f 20 6f 6e 6c 79  es and.  to only
4af0: 20 75 73 65 20 38 2b 33 20 66 69 6c 65 6e 61 6d   use 8+3 filenam
4b00: 65 73 20 69 66 20 74 68 65 20 0a 20 20 64 61 74  es if the .  dat
4b10: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
4b20: 20 69 73 20 6f 70 65 6e 65 64 20 75 73 69 6e 67   is opened using
4b30: 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d   [URI filenames]
4b40: 20 77 69 74 68 0a 20 20 74 68 65 20 22 3c 74 74   with.  the "<tt
4b50: 3e 38 5f 33 5f 6e 61 6d 65 73 3d 31 3c 2f 74 74  >8_3_names=1</tt
4b60: 3e 22 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  >" query paramet
4b70: 65 72 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75  er.  If the valu
4b80: 65 20 6f 66 0a 20 20 74 68 69 73 20 6d 61 63 72  e of.  this macr
4b90: 6f 20 69 73 20 32 2c 20 74 68 65 6e 20 74 68 65  o is 2, then the
4ba0: 20 75 73 65 20 6f 66 20 38 2b 33 20 66 69 6c 65   use of 8+3 file
4bb0: 6e 61 6d 65 73 20 62 65 63 6f 6d 65 73 20 74 68  names becomes th
4bc0: 65 20 64 65 66 61 75 6c 74 0a 20 20 62 75 74 20  e default.  but 
4bd0: 6d 61 79 20 62 65 20 64 69 73 61 62 6c 65 64 20  may be disabled 
4be0: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 3c 74 74  on using the <tt
4bf0: 3e 38 5f 33 5f 6e 61 6d 65 73 3d 30 3c 2f 74 74  >8_3_names=0</tt
4c00: 3e 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65  > query paramete
4c10: 72 2e 0a 20 20 53 65 65 20 0a 7d 0a 0a 43 4f 4d  r..  See .}..COM
4c20: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4c30: 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49  ITE_ENABLE_ATOMI
4c40: 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20  C_WRITE} {.  If 
4c50: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
4c60: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
4c70: 69 6e 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a  ined and if the.
4c80: 20 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74    xDeviceCharact
4c90: 65 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20  eristics method 
4ca0: 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  of [sqlite3_io_m
4cb0: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66  ethods] object f
4cc0: 6f 72 0a 20 20 61 20 64 61 74 61 62 61 73 65 20  or.  a database 
4cd0: 66 69 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69  file reports (vi
4ce0: 61 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51  a one of the [SQ
4cf0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
4d00: 43 5d 20 62 69 74 73 29 0a 20 20 74 68 61 74 20  C] bits).  that 
4d10: 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73  the filesystem s
4d20: 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77  upports atomic w
4d30: 72 69 74 65 73 20 61 6e 64 20 69 66 20 61 20 74  rites and if a t
4d40: 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76  ransaction.  inv
4d50: 6f 6c 76 65 73 20 61 20 63 68 61 6e 67 65 20 74  olves a change t
4d60: 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  o only a single 
4d70: 70 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61  page of the data
4d80: 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65  base file,.  the
4d90: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
4da0: 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a  n commits with j
4db0: 75 73 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69  ust a single wri
4dc0: 74 65 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20  te request of.  
4dd0: 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66  a single page of
4de0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
4df0: 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  d no rollback jo
4e00: 75 72 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64  urnal is created
4e10: 0a 20 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20  .  or written.  
4e20: 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74  On filesystems t
4e30: 68 61 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d  hat support atom
4e40: 69 63 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a  ic writes, this.
4e50: 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63    optimization c
4e60: 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67  an result in sig
4e70: 6e 69 66 69 63 61 6e 74 20 73 70 65 65 64 20 69  nificant speed i
4e80: 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a  mprovements for.
4e90: 20 20 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e    small updates.
4ea0: 20 20 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66    However, few f
4eb0: 69 6c 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f  ilesystems suppo
4ec0: 72 74 20 74 68 69 73 20 63 61 70 61 62 69 6c 69  rt this capabili
4ed0: 74 79 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64  ty.  and the cod
4ee0: 65 20 70 61 74 68 73 20 74 68 61 74 20 63 68 65  e paths that che
4ef0: 63 6b 20 66 6f 72 20 74 68 69 73 20 63 61 70 61  ck for this capa
4f00: 62 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e  bility slow down
4f10: 20 77 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d   write.  perform
4f20: 61 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20  ance on systems 
4f30: 74 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63  that lack atomic
4f40: 20 77 72 69 74 65 20 63 61 70 61 62 69 6c 69 74   write capabilit
4f50: 79 2c 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61  y, so this.  fea
4f60: 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65 64  ture is disabled
4f70: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a   by default..}..
4f80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4f90: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
4fa0: 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d 20 7b  LUMN_METADATA} {
4fb0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43 2d 70  .  When this C-p
4fc0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
4fd0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  o is defined, SQ
4fe0: 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 73 6f  Lite includes so
4ff0: 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61 6c 20  me.  additional 
5000: 41 50 49 73 20 74 68 61 74 20 70 72 6f 76 69 64  APIs that provid
5010: 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 63 63  e convenient acc
5020: 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61 74 61  ess to meta-data
5030: 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65 73 20   about.  tables 
5040: 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20 54 68  and queries.  Th
5050: 65 20 41 50 49 73 20 74 68 61 74 20 61 72 65 20  e APIs that are 
5060: 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20  enabled by this 
5070: 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c  option are:..  <
5080: 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  ul>.  <li> [sqli
5090: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
50a0: 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  ase_name()] </li
50b0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
50c0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
50d0: 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69  e_name16()] </li
50e0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
50f0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
5100: 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ame()] </li>.  <
5110: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
5120: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
5130: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
5140: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
5150: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29 5d 20  _origin_name()] 
5160: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
5170: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
5180: 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  gin_name16()] </
5190: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
51a0: 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
51b0: 5f 6d 65 74 61 64 61 74 61 28 29 5d 20 3c 2f 6c  _metadata()] </l
51c0: 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f  i>.  </ul>.}..CO
51d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
51e0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c  LITE_ENABLE_EXPL
51f0: 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 7d 20 7b 0a  AIN_COMMENTS} {.
5200: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
5210: 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20 74  ds extra logic t
5220: 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 6e  o SQLite that in
5230: 73 65 72 74 73 20 63 6f 6d 6d 65 6e 74 20 74 65  serts comment te
5240: 78 74 20 69 6e 74 6f 20 74 68 65 0a 20 20 6f 75  xt into the.  ou
5250: 74 70 75 74 20 6f 66 20 5b 45 58 50 4c 41 49 4e  tput of [EXPLAIN
5260: 5d 2e 20 20 54 68 65 73 65 20 65 78 74 72 61 20  ].  These extra 
5270: 63 6f 6d 6d 65 6e 74 73 20 75 73 65 20 65 78 74  comments use ext
5280: 72 61 20 6d 65 6d 6f 72 79 2c 20 74 68 75 73 0a  ra memory, thus.
5290: 20 20 6d 61 6b 69 6e 67 20 5b 70 72 65 70 61 72    making [prepar
52a0: 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 6c  ed statements] l
52b0: 61 72 67 65 72 20 61 6e 64 20 76 65 72 79 20 73  arger and very s
52c0: 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72 2c 20  lightly slower, 
52d0: 61 6e 64 20 73 6f 20 74 68 65 79 20 61 72 65 0a  and so they are.
52e0: 20 20 74 75 72 6e 65 64 20 6f 66 66 20 62 79 20    turned off by 
52f0: 64 65 66 61 75 6c 74 20 61 6e 64 20 69 6e 20 6d  default and in m
5300: 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e  ost application.
5310: 20 20 42 75 74 20 73 6f 6d 65 20 61 70 70 6c 69    But some appli
5320: 63 61 74 69 6f 6e 73 2c 20 73 75 63 68 0a 20 20  cations, such.  
5330: 61 73 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d  as the [command-
5340: 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 66 6f 72 20  line shell] for 
5350: 53 51 4c 69 74 65 2c 20 76 61 6c 75 65 20 63 6c  SQLite, value cl
5360: 61 72 69 74 79 20 6f 66 20 45 58 50 4c 41 49 4e  arity of EXPLAIN
5370: 20 6f 75 74 70 75 74 0a 20 20 6f 76 65 72 20 72   output.  over r
5380: 61 77 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61  aw performance a
5390: 6e 64 20 73 6f 20 74 68 69 73 20 63 6f 6d 70 69  nd so this compi
53a0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
53b0: 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74  s available to t
53c0: 68 65 6d 2e 0a 20 20 54 68 65 20 53 51 4c 49 54  hem..  The SQLIT
53d0: 45 5f 45 4e 41 42 4c 45 5f 45 58 50 4c 41 49 4e  E_ENABLE_EXPLAIN
53e0: 5f 43 4f 4d 4d 45 4e 54 53 20 63 6f 6d 70 69 6c  _COMMENTS compil
53f0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
5400: 20 61 6c 73 6f 20 65 6e 61 62 6c 65 64 0a 20 20   also enabled.  
5410: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 66  automatically if
5420: 20 5b 53 51 4c 49 54 45 5f 44 45 42 55 47 5d 20   [SQLITE_DEBUG] 
5430: 69 73 20 65 6e 61 62 6c 65 64 2e 0a 7d 0a 0a 0a  is enabled..}...
5440: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5450: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
5460: 53 33 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  S3} {.  When thi
5470: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
5480: 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c  ned in the [amal
5490: 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69  gamation], versi
54a0: 6f 6e 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75  on 3.  of the fu
54b0: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
54c0: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
54d0: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
54e0: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
54f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5500: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
5510: 5f 50 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a  _PARENTHESIS} {.
5520: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f    This option mo
5530: 64 69 66 69 65 73 20 74 68 65 20 71 75 65 72 79  difies the query
5540: 20 70 61 74 74 65 72 6e 20 70 61 72 73 65 72 20   pattern parser 
5550: 69 6e 20 46 54 53 33 20 73 75 63 68 20 74 68 61  in FTS3 such tha
5560: 74 20 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20  t it.  supports 
5570: 6f 70 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e  operators AND an
5580: 64 20 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69  d NOT (in additi
5590: 6f 6e 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20  on to the usual 
55a0: 4f 52 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61  OR and NEAR).  a
55b0: 6e 64 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71  nd also allows q
55c0: 75 65 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73  uery expressions
55d0: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74   to contain nest
55e0: 65 64 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a  ed parenthesis..
55f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5600: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
5610: 5f 46 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e 20  _FTS4} {.  When 
5620: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
5630: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61  efined in the [a
5640: 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65  malgamation], ve
5650: 72 73 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a 20  rsions 3 and 4. 
5660: 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78   of the full-tex
5670: 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20  t search engine 
5680: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
5690: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
56a0: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
56b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
56c0: 4e 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54  NABLE_ICU} {.  T
56d0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
56e0: 73 20 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f  s the .  [http:/
56f0: 2f 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74  /www.icu-project
5700: 2e 6f 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74  .org/ | Internat
5710: 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73  ional Components
5720: 20 66 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20   for Unicode].  
5730: 6f 72 20 22 49 43 55 22 20 65 78 74 65 6e 73 69  or "ICU" extensi
5740: 6f 6e 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20  on to SQLite to 
5750: 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  be added to the 
5760: 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50  build.  .}..COMP
5770: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5780: 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43  TE_ENABLE_IOTRAC
5790: 45 7d 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68  E} {.  When both
57a0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
57b0: 20 61 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e   and the [Comman
57c0: 64 20 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65  d Line Interface
57d0: 5d 20 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68  ] (CLI) are both
57e0: 20 0a 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   .  compiled wit
57f0: 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74  h this option, t
5800: 68 65 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76  hen the CLI prov
5810: 69 64 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f  ides an extra co
5820: 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e  mmand.  named ".
5830: 69 6f 74 72 61 63 65 22 20 74 68 61 74 20 70 72  iotrace" that pr
5840: 6f 76 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76  ovides a low-lev
5850: 65 6c 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63  el log of I/O ac
5860: 74 69 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f  tivity..  This o
5870: 70 74 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d  ption is experim
5880: 65 6e 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65  ental and may be
5890: 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e   discontinued in
58a0: 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
58b0: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
58c0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
58d0: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
58e0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
58f0: 6f 6e 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74  on enables addit
5900: 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74  ional logic in t
5910: 68 65 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20  he OS interface 
5920: 6c 61 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20  layer for.  Mac 
5930: 4f 53 20 58 2e 20 54 68 65 20 61 64 64 69 74 69  OS X. The additi
5940: 6f 6e 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d  onal logic attem
5950: 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  pts to determine
5960: 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65   the type of the
5970: 0a 20 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69  .  underlying fi
5980: 6c 65 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f  lesystem and cho
5990: 6f 73 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74  ose and alternat
59a0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  ive locking stra
59b0: 74 65 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b  tegy.  that work
59c0: 73 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20  s correctly for 
59d0: 74 68 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20  that filesystem 
59e0: 74 79 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69  type. Five locki
59f0: 6e 67 20 73 74 72 61 74 65 67 69 65 73 20 0a 20  ng strategies . 
5a00: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a   are available:.
5a10: 0a 20 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e  .  <ul>.    <li>
5a20: 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73   POSIX locking s
5a30: 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68  tyle. This is th
5a40: 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e  e default lockin
5a50: 67 20 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a  g style and the.
5a60: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 75           style u
5a70: 73 65 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f  sed by other (no
5a80: 6e 20 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78  n Mac OS X) Unix
5a90: 65 73 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62  es. Locks are ob
5aa0: 74 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20  tained and .    
5ab0: 20 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 73       released us
5ac0: 69 6e 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20  ing the fcntl() 
5ad0: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
5ae0: 20 20 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69    <li> AFP locki
5af0: 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c  ng style. This l
5b00: 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20  ocking style is 
5b10: 75 73 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b  used for network
5b20: 20 66 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20   file .         
5b30: 73 79 73 74 65 6d 73 20 74 68 61 74 20 75 73 65  systems that use
5b40: 20 74 68 65 20 41 46 50 20 28 41 70 70 6c 65 20   the AFP (Apple 
5b50: 46 69 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29  Filing Protocol)
5b60: 20 70 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73   protocol. Locks
5b70: 0a 20 20 20 20 20 20 20 20 20 61 72 65 20 6f 62  .         are ob
5b80: 74 61 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e  tained by callin
5b90: 67 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 75  g the library fu
5ba0: 6e 63 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74  nction _AFPFSSet
5bb0: 4c 6f 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69  Lock()...    <li
5bc0: 3e 20 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20  > Flock locking 
5bd0: 73 74 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75  style. This is u
5be0: 73 65 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73  sed for file-sys
5bf0: 74 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  tems that do not
5c00: 0a 20 20 20 20 20 20 20 20 20 73 75 70 70 6f 72  .         suppor
5c10: 74 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20  t POSIX locking 
5c20: 73 74 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65  style. Locks are
5c30: 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65   obtained and re
5c40: 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20  leased using.   
5c50: 20 20 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28        the flock(
5c60: 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a  ) system call...
5c70: 20 20 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c      <li> Dot-fil
5c80: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  e locking style.
5c90: 20 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74   This locking st
5ca0: 79 6c 65 20 69 73 20 75 73 65 64 20 77 68 65 6e  yle is used when
5cb0: 20 6e 65 69 74 68 65 72 0a 20 20 20 20 20 20 20   neither.       
5cc0: 20 20 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49    flock nor POSI
5cd0: 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73  X locking styles
5ce0: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62   are supported b
5cf0: 79 20 74 68 65 20 66 69 6c 65 20 73 79 73 74 65  y the file syste
5d00: 6d 2e 0a 20 20 20 20 20 20 20 20 20 44 61 74 61  m..         Data
5d10: 62 61 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f  base locks are o
5d20: 62 74 61 69 6e 65 64 20 62 79 20 63 72 65 61 74  btained by creat
5d30: 69 6e 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e  ing and entry in
5d40: 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d   the file-system
5d50: 0a 20 20 20 20 20 20 20 20 20 61 74 20 61 20 77  .         at a w
5d60: 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69  ell-known locati
5d70: 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74  on relative to t
5d80: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
5d90: 20 28 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a   (a "dot-file").
5da0: 20 20 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c           and rel
5db0: 69 6e 71 75 69 73 68 65 64 20 62 79 20 64 65 6c  inquished by del
5dc0: 65 74 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66  eting the same f
5dd0: 69 6c 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e  ile...    <li> N
5de0: 6f 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e  o locking style.
5df0: 20 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20   If none of the 
5e00: 61 62 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70  above can be sup
5e10: 70 6f 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20  ported, this .  
5e20: 20 20 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73         locking s
5e30: 74 79 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f  tyle is used. No
5e40: 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e   database lockin
5e50: 67 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75  g mechanism is u
5e60: 73 65 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20  sed. When.      
5e70: 20 20 20 74 68 69 73 20 73 79 73 74 65 6d 20 69     this system i
5e80: 73 20 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74  s used it is not
5e90: 20 73 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67   safe for a sing
5ea0: 6c 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62  le database to b
5eb0: 65 0a 20 20 20 20 20 20 20 20 20 61 63 63 65 73  e.         acces
5ec0: 73 65 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20  sed by multiple 
5ed0: 63 6c 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e  clients..  </ul>
5ee0: 0a 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79  ..  Additionally
5ef0: 2c 20 66 69 76 65 20 65 78 74 72 61 20 5b 56 46  , five extra [VF
5f00: 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  S] implementatio
5f10: 6e 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  ns are provided 
5f20: 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20  as well as the. 
5f30: 20 64 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65   default. By spe
5f40: 63 69 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74  cifying one of t
5f50: 68 65 20 65 78 74 72 61 20 56 46 53 20 69 6d 70  he extra VFS imp
5f60: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20  lementations .  
5f70: 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71  when calling [sq
5f80: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
5f90: 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
5fa0: 20 6d 61 79 20 62 79 70 61 73 73 20 74 68 65 20   may bypass the 
5fb0: 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65  file-system.  de
5fc0: 74 65 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e  tection logic an
5fd0: 64 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c  d explicitly sel
5fe0: 65 63 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61  ect one of the a
5ff0: 62 6f 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79  bove locking sty
6000: 6c 65 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20  les. The.  five 
6010: 65 78 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c  extra [VFS] impl
6020: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20  ementations are 
6030: 63 61 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73  called "unix-pos
6040: 69 78 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c  ix", "unix-afp",
6050: 0a 20 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c  .  "unix-flock",
6060: 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20   "unix-dotfile" 
6070: 61 6e 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e  and "unix-none".
6080: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6090: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
60a0: 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d  E_MEMORY_MANAGEM
60b0: 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ENT} {.  This op
60c0: 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20  tion adds extra 
60d0: 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20  logic to SQLite 
60e0: 74 68 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74  that allows it t
60f0: 6f 20 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64  o release unused
6100: 0a 20 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72  .  memory upon r
6110: 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70  equest.  This op
6120: 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61  tion must be ena
6130: 62 6c 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f  bled in order fo
6140: 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  r the.  [sqlite3
6150: 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
6160: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  )] interface to 
6170: 77 6f 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63  work.  If this c
6180: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70  ompile-time.  op
6190: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64  tion is not used
61a0: 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72  , the [sqlite3_r
61b0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
61c0: 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 61 20   interface is a 
61d0: 0a 20 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d  .  no-op..}..COM
61e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
61f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
6200: 53 33 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  S3} {.  This opt
6210: 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64  ion includes cod
6220: 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74  e in SQLite that
6230: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61   implements an a
6240: 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d  lternative.  mem
6250: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
6260: 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65  This alternative
6270: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
6280: 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65  r is only engage
6290: 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51  d.  when the [SQ
62a0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
62b0: 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  ] option to [sql
62c0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
62d0: 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70  s used to.  supp
62e0: 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b  ly a large chunk
62f0: 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20   of memory from 
6300: 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79  which all memory
6310: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
6320: 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20  .  taken..  The 
6330: 4d 45 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61  MEMSYS3 memory a
6340: 6c 6c 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20  llocator uses a 
6350: 68 79 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f  hybrid allocatio
6360: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70  n algorithm .  p
6370: 61 74 74 65 72 6e 65 64 20 61 66 74 65 72 20 64  atterned after d
6380: 6c 6d 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c  lmalloc().   Onl
6390: 79 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f  y one of SQLITE_
63a0: 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61  ENABLE_MEMSYS3 a
63b0: 6e 64 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41  nd .  SQLITE_ENA
63c0: 42 4c 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20  BLE_MEMSYS5 may 
63d0: 62 65 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e  be enabled at on
63e0: 63 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ce..}..COMPILE_O
63f0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
6400: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a  ABLE_MEMSYS5} {.
6410: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e    This option in
6420: 63 6c 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53  cludes code in S
6430: 51 4c 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65  QLite that imple
6440: 6d 65 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61  ments an alterna
6450: 74 69 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c  tive.  memory al
6460: 6c 6f 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61  locator.  This a
6470: 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
6480: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f  y allocator is o
6490: 6e 6c 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68  nly engaged.  wh
64a0: 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  en the [SQLITE_C
64b0: 4f 4e 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69  ONFIG_HEAP] opti
64c0: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
64d0: 6f 6e 66 69 67 28 29 5d 20 69 73 20 75 73 65 64  onfig()] is used
64e0: 20 74 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c   to.  supply a l
64f0: 61 72 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65  arge chunk of me
6500: 6d 6f 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20  mory from which 
6510: 61 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  all memory alloc
6520: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b  ations are.  tak
6530: 65 6e 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53  en..  The MEMSYS
6540: 35 20 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20  5 module rounds 
6550: 61 6c 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  all allocations 
6560: 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70  up to the next p
6570: 6f 77 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e  ower.  of two an
6580: 64 20 75 73 65 73 20 61 20 66 69 72 73 74 2d 66  d uses a first-f
6590: 69 74 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61  it, buddy-alloca
65a0: 74 6f 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20  tor algorithm.  
65b0: 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 73 74  that provides st
65c0: 72 6f 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20  rong guarantees 
65d0: 61 67 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74  against fragment
65e0: 61 74 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64  ation and breakd
65f0: 6f 77 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f  own.  subject to
6600: 20 63 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69   certain operati
6610: 6e 67 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  ng constraints..
6620: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6630: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6640: 5f 52 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73  _RTREE} {.  This
6650: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
6660: 51 4c 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65  QLite to include
6670: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
6680: 0a 20 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72  .  [rtree | R*Tr
6690: 65 65 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69  ee index extensi
66a0: 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  on]..}..COMPILE_
66b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52  OPTION {SQLITE_R
66c0: 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b  TREE_INT_ONLY} {
66d0: 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f  .  If this optio
66e0: 6e 20 69 73 20 75 73 65 64 20 74 6f 67 65 74 68  n is used togeth
66f0: 65 72 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f  er with [SQLITE_
6700: 45 4e 41 42 4c 45 5f 52 54 52 45 45 5d 20 74 68  ENABLE_RTREE] th
6710: 65 6e 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20  en the.  [rtree 
6720: 7c 20 52 2a 54 72 65 65 20 65 78 74 65 6e 73 69  | R*Tree extensi
6730: 6f 6e 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74  on] will only st
6740: 6f 72 65 20 33 32 2d 62 69 74 20 73 69 67 6e 65  ore 32-bit signe
6750: 64 20 69 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72  d integer.  coor
6760: 64 69 6e 61 74 65 73 20 61 6e 64 20 61 6c 6c 20  dinates and all 
6770: 69 6e 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61  internal computa
6780: 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f  tions will be do
6790: 6e 65 20 75 73 69 6e 67 20 69 6e 74 65 67 65 72  ne using integer
67a0: 73 0a 20 20 69 6e 73 74 65 61 64 20 6f 66 20 66  s.  instead of f
67b0: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75  loating point nu
67c0: 6d 62 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  mbers..}..COMPIL
67d0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
67e0: 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20  _ENABLE_SQLLOG} 
67f0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
6800: 65 6e 61 62 6c 65 73 20 65 78 74 72 61 20 63 6f  enables extra co
6810: 64 65 20 28 65 73 70 65 63 69 61 6c 6c 79 20 74  de (especially t
6820: 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  he [SQLITE_CONFI
6830: 47 5f 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69  G_SQLLOG].  opti
6840: 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  on to [sqlite3_c
6850: 6f 6e 66 69 67 28 29 5d 29 20 74 68 61 74 20 63  onfig()]) that c
6860: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 72  an be used to cr
6870: 65 61 74 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c  eate logs of all
6880: 0a 20 20 53 51 4c 69 74 65 20 70 72 6f 63 65 73  .  SQLite proces
6890: 73 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 62  sing performed b
68a0: 79 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  y an application
68b0: 2e 20 20 54 68 65 73 65 20 6c 6f 67 73 20 63 61  .  These logs ca
68c0: 6e 20 62 65 20 75 73 65 66 75 6c 0a 20 20 69 6e  n be useful.  in
68d0: 20 64 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20   doing off-line 
68e0: 61 6e 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20  analysis of the 
68f0: 62 65 68 61 76 69 6f 72 20 6f 66 20 61 6e 20 61  behavior of an a
6900: 70 70 6c 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20  pplication, and 
6910: 65 73 70 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72  especially.  for
6920: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61   performance ana
6930: 6c 79 73 69 73 2e 20 20 49 6e 20 6f 72 64 65 72  lysis.  In order
6940: 20 66 6f 72 20 74 68 65 20 53 51 4c 49 54 45 5f   for the SQLITE_
6950: 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70  ENABLE_SQLLOG op
6960: 74 69 6f 6e 20 74 6f 20 0a 20 20 62 65 20 75 73  tion to .  be us
6970: 65 66 75 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61  eful, some extra
6980: 20 63 6f 64 65 20 69 73 20 72 65 71 75 69 72 65   code is require
6990: 64 2e 20 20 54 68 65 20 0a 20 20 3c 61 20 68 72  d.  The .  <a hr
69a0: 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73  ef="http://www.s
69b0: 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f  qlite.org/src/do
69c0: 63 2f 74 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74  c/trunk/src/test
69d0: 5f 73 71 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74  _sqllog.c">"test
69e0: 5f 73 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20  _sqllog.c"</a>. 
69f0: 20 73 6f 75 72 63 65 20 63 6f 64 65 0a 20 20 66   source code.  f
6a00: 69 6c 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74  ile in the SQLit
6a10: 65 20 73 6f 75 72 63 65 20 74 72 65 65 20 69 73  e source tree is
6a20: 20 61 20 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70   a working examp
6a30: 6c 65 20 6f 66 20 74 68 65 20 72 65 71 75 69 72  le of the requir
6a40: 65 64 20 65 78 74 72 61 0a 20 20 63 6f 64 65 2e  ed extra.  code.
6a50: 20 20 4f 6e 20 75 6e 69 78 20 61 6e 64 20 77 69    On unix and wi
6a60: 6e 64 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 61  ndows systems, a
6a70: 20 64 65 76 65 6c 6f 70 65 72 20 63 61 6e 20 61   developer can a
6a80: 70 70 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f  ppend the text o
6a90: 66 20 74 68 65 0a 20 20 22 74 65 73 74 5f 73 71  f the.  "test_sq
6aa0: 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 63  llog.c" source c
6ab0: 6f 64 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20  ode file to the 
6ac0: 65 6e 64 20 6f 66 20 61 6e 20 22 73 71 6c 69 74  end of an "sqlit
6ad0: 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69  e3.c" amalgamati
6ae0: 6f 6e 2c 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20  on,.  recompile 
6af0: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
6b00: 75 73 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49  using the -DSQLI
6b10: 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47  TE_ENABLE_SQLLOG
6b20: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20   option, then . 
6b30: 20 63 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67   control logging
6b40: 20 75 73 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65   using environme
6b50: 6e 74 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53  nt variables.  S
6b60: 65 65 20 74 68 65 20 68 65 61 64 65 72 20 63 6f  ee the header co
6b70: 6d 6d 65 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20  mment on .  the 
6b80: 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20  "test_sqllog.c" 
6b90: 73 6f 75 72 63 65 20 66 69 6c 65 20 66 6f 72 20  source file for 
6ba0: 61 64 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69  additional detai
6bb0: 6c 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  l.  .}..COMPILE_
6bc0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
6bd0: 4e 41 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20  NABLE_STAT2} {. 
6be0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 75 73 65   This option use
6bf0: 64 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 5b  d to cause the [
6c00: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
6c10: 20 74 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e   to collect.  in
6c20: 64 65 78 20 68 69 73 74 6f 67 72 61 6d 20 64 61  dex histogram da
6c30: 74 61 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c  ta in the <b>sql
6c40: 69 74 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61  ite_stat2</b> ta
6c50: 62 6c 65 2e 20 20 42 75 74 20 74 68 61 74 0a 20  ble.  But that. 
6c60: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77   functionality w
6c70: 61 73 20 73 75 70 65 72 63 65 64 65 64 20 62 79  as superceded by
6c80: 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
6c90: 53 54 41 54 33 5d 20 61 73 20 6f 66 0a 20 20 53  STAT3] as of.  S
6ca0: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
6cb0: 37 2e 39 2e 20 20 54 68 65 20 53 51 4c 49 54 45  7.9.  The SQLITE
6cc0: 5f 45 4e 41 42 4c 45 5f 53 54 41 54 32 20 63 6f  _ENABLE_STAT2 co
6cd0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
6ce0: 6e 0a 20 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d  n.  is now a no-
6cf0: 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  op..}..COMPILE_O
6d00: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e  PTION {SQLITE_EN
6d10: 41 42 4c 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20  ABLE_STAT3} {.  
6d20: 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73  This option adds
6d30: 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69   additional logi
6d40: 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a  c to the [ANALYZ
6d50: 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74  E] command and t
6d60: 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79 20 70  o.  the [query p
6d70: 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e  lanner] that can
6d80: 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20   help SQLite to 
6d90: 63 68 6f 73 65 20 61 20 62 65 74 74 65 72 20 71  chose a better q
6da0: 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65  uery plan.  unde
6db0: 72 20 63 65 72 74 61 69 6e 20 73 69 74 75 61 74  r certain situat
6dc0: 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c  ions.  The [ANAL
6dd0: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  YZE] command is 
6de0: 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c  enhanced to coll
6df0: 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20  ect.  histogram 
6e00: 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20 6c 65  data from the le
6e10: 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f  ft-most column o
6e20: 66 20 65 61 63 68 20 69 6e 64 65 78 20 61 6e 64  f each index and
6e30: 20 73 74 6f 72 65 20 74 68 61 74 20 64 61 74 61   store that data
6e40: 0a 20 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74  .  in the [sqlit
6e50: 65 5f 73 74 61 74 33 5d 20 74 61 62 6c 65 2e 20  e_stat3] table. 
6e60: 20 54 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e   The query plann
6e70: 65 72 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65  er will then use
6e80: 20 74 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d   the.  histogram
6e90: 20 64 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74   data to help it
6ea0: 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64   make better ind
6eb0: 65 78 20 63 68 6f 69 63 65 73 2e 20 20 4e 6f 74  ex choices.  Not
6ec0: 65 2c 20 68 6f 77 65 76 65 72 2c 0a 20 20 74 68  e, however,.  th
6ed0: 61 74 20 74 68 65 20 75 73 65 20 6f 66 20 68 69  at the use of hi
6ee0: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69 6e 20  stogram data in 
6ef0: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 76 69  query planner vi
6f00: 6f 6c 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75  olates the.  [qu
6f10: 65 72 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62  ery planner stab
6f20: 69 6c 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d  ility guarantee]
6f30: 20 77 68 69 63 68 20 69 73 20 69 6d 70 6f 72 74   which is import
6f40: 61 6e 74 20 74 6f 20 73 6f 6d 65 20 61 70 70 6c  ant to some appl
6f50: 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e 0a  ications..  <p>.
6f60: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6f70: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6f80: 5f 53 54 41 54 34 7d 20 7b 0a 20 20 54 68 69 73  _STAT4} {.  This
6f90: 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64   option adds add
6fa0: 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f  itional logic to
6fb0: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
6fc0: 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20  ommand and to.  
6fd0: 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
6fe0: 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c  er] that can hel
6ff0: 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73  p SQLite to chos
7000: 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79  e a better query
7010: 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65   plan.  under ce
7020: 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73  rtain situations
7030: 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  .  The [ANALYZE]
7040: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61   command is enha
7050: 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  nced to collect.
7060: 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61    histogram data
7070: 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e   from all column
7080: 73 20 6f 66 20 65 76 65 72 79 20 69 6e 64 65 78  s of every index
7090: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20   and store that 
70a0: 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73  data.  in the [s
70b0: 71 6c 69 74 65 5f 73 74 61 74 34 5d 20 74 61 62  qlite_stat4] tab
70c0: 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79 20 70  le.  The query p
70d0: 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e  lanner will then
70e0: 20 75 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f   use the.  histo
70f0: 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c  gram data to hel
7100: 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72  p it make better
7110: 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 20   index choices. 
7120: 20 54 68 65 20 64 6f 77 6e 73 69 64 65 20 6f 66   The downside of
7130: 0a 20 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d  .  this compile-
7140: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74  time option is t
7150: 68 61 74 20 69 74 20 76 69 6f 6c 61 74 65 73 20  hat it violates 
7160: 74 68 65 0a 20 20 5b 71 75 65 72 79 20 70 6c 61  the.  [query pla
7170: 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67  nner stability g
7180: 75 61 72 61 6e 74 65 65 5d 20 6d 61 6b 69 6e 67  uarantee] making
7190: 20 69 74 20 6d 6f 72 65 20 64 69 66 66 69 63 75   it more difficu
71a0: 6c 74 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 63  lt to ensure.  c
71b0: 6f 6e 73 69 73 74 65 6e 74 20 70 65 72 66 6f 72  onsistent perfor
71c0: 6d 61 6e 63 65 20 69 73 20 6d 61 73 73 2d 70 72  mance is mass-pr
71d0: 6f 64 75 63 65 64 20 61 70 70 6c 69 63 61 74 69  oduced applicati
71e0: 6f 6e 73 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c  ons..  <p>.  SQL
71f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34  ITE_ENABLE_STAT4
7200: 20 69 73 20 61 6e 20 65 6e 68 61 6e 63 65 6d 65   is an enhanceme
7210: 6e 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f 45 4e  nt of [SQLITE_EN
7220: 41 42 4c 45 5f 53 54 41 54 33 5d 2e 20 20 53 54  ABLE_STAT3].  ST
7230: 41 54 33 0a 20 20 6f 6e 6c 79 20 72 65 63 6f 72  AT3.  only recor
7240: 64 65 64 20 68 69 73 74 6f 67 72 61 6d 20 64 61  ded histogram da
7250: 74 61 20 66 6f 72 20 74 68 65 20 6c 65 66 74 2d  ta for the left-
7260: 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 65  most column of e
7270: 61 63 68 20 69 6e 64 65 78 0a 20 20 77 68 65 72  ach index.  wher
7280: 65 61 73 20 74 68 65 20 53 54 41 54 34 20 65 6e  eas the STAT4 en
7290: 68 61 6e 63 65 6d 65 6e 74 20 72 65 63 6f 72 64  hancement record
72a0: 73 20 68 69 73 74 6f 67 72 61 70 68 20 64 61 74  s histograph dat
72b0: 61 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d  a from all colum
72c0: 6e 73 0a 20 20 6f 66 20 65 61 63 68 20 69 6e 64  ns.  of each ind
72d0: 65 78 2e 0a 20 20 54 68 65 20 5b 53 51 4c 49 54  ex..  The [SQLIT
72e0: 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20  E_ENABLE_STAT3] 
72f0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
7300: 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61  ion is a no-op a
7310: 6e 64 20 69 73 20 69 67 6e 6f 72 65 64 0a 20 20  nd is ignored.  
7320: 69 66 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e  if the SQLITE_EN
7330: 41 42 4c 45 5f 53 54 41 54 34 20 63 6f 6d 70 69  ABLE_STAT4 compi
7340: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
7350: 73 20 75 73 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  s used..}..COMPI
7360: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7370: 45 5f 45 4e 41 42 4c 45 5f 54 52 45 45 5f 45 58  E_ENABLE_TREE_EX
7380: 50 4c 41 49 4e 7d 20 7b 0a 20 20 54 68 69 73 20  PLAIN} {.  This 
7390: 6f 70 74 69 6f 6e 20 61 64 64 73 20 73 75 70 70  option adds supp
73a0: 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 53 51 4c  ort for the [SQL
73b0: 49 54 45 5f 54 45 53 54 43 54 52 4c 5f 45 58 50  ITE_TESTCTRL_EXP
73c0: 4c 41 49 4e 5f 53 54 4d 54 5d 20 74 65 73 74 2d  LAIN_STMT] test-
73d0: 63 6f 6e 74 72 6f 6c 0a 20 20 69 6e 20 74 68 65  control.  in the
73e0: 20 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 57   SQLite core.  W
73f0: 68 65 6e 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64  hen the [command
7400: 2d 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 69 73 20  -line shell] is 
7410: 61 6c 73 6f 20 63 6f 6d 70 69 6c 65 64 20 77 69  also compiled wi
7420: 74 68 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e  th.  this option
7430: 2c 20 74 68 65 20 22 2e 65 78 70 6c 61 69 6e 22  , the ".explain"
7440: 20 64 6f 74 2d 63 6f 6d 6d 61 6e 64 20 65 6e 61   dot-command ena
7450: 62 6c 65 73 20 61 20 6d 6f 64 65 20 74 68 61 74  bles a mode that
7460: 20 75 73 65 73 20 74 68 65 0a 20 20 5b 53 51 4c   uses the.  [SQL
7470: 49 54 45 5f 54 45 53 54 43 54 52 4c 5f 45 58 50  ITE_TESTCTRL_EXP
7480: 4c 41 49 4e 5f 53 54 4d 54 5d 20 69 6e 74 65 72  LAIN_STMT] inter
7490: 66 61 63 65 20 74 6f 20 64 69 73 70 6c 61 79 20  face to display 
74a0: 61 6e 20 41 53 43 49 49 2d 61 72 74 20 64 69 61  an ASCII-art dia
74b0: 67 72 61 6d 0a 20 20 6f 66 20 74 68 65 20 70 61  gram.  of the pa
74c0: 72 73 65 20 74 72 65 65 20 66 6f 72 20 65 61 63  rse tree for eac
74d0: 68 20 53 51 4c 20 71 75 65 72 79 20 73 74 61 74  h SQL query stat
74e0: 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 72 75  ement that is ru
74f0: 6e 20 69 6e 20 74 68 65 20 73 68 65 6c 6c 2e 0a  n in the shell..
7500: 20 20 54 68 69 73 20 6d 65 63 68 61 6e 69 73 6d    This mechanism
7510: 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 64   is useful for d
7520: 65 62 75 67 67 69 6e 67 20 74 68 65 20 53 51 4c  ebugging the SQL
7530: 69 74 65 20 70 61 72 73 65 72 20 61 6e 64 20 63  ite parser and c
7540: 6f 64 65 0a 20 20 67 65 6e 65 72 61 74 6f 72 2e  ode.  generator.
7550: 20 20 54 68 69 73 20 77 68 6f 6c 65 20 6d 65 63    This whole mec
7560: 68 61 6e 69 73 6d 20 69 73 20 68 69 67 68 6c 79  hanism is highly
7570: 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e   experimental an
7580: 64 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 0a 20  d could change. 
7590: 20 64 72 61 73 74 69 63 61 6c 6c 79 20 6f 72 20   drastically or 
75a0: 62 65 20 65 6c 69 6d 69 6e 61 74 65 64 20 69 6e  be eliminated in
75b0: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
75c0: 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   of SQLite..}..C
75d0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
75e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44  QLITE_ENABLE_UPD
75f0: 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54  ATE_DELETE_LIMIT
7600: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
7610: 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74  n enables an opt
7620: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
7630: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  nd LIMIT clause 
7640: 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61  on .  [UPDATE] a
7650: 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  nd [DELETE] stat
7660: 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66  ements...  <p>If
7670: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
7680: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74  defined, then it
7690: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20   must also be . 
76a0: 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73   defined when us
76b0: 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20  ing the 'lemon' 
76c0: 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65  tool to generate
76d0: 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c   a parse.c.  fil
76e0: 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68  e. Because of th
76f0: 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  is, this option 
7700: 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  may only be used
7710: 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72   when the librar
7720: 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f  y is built.  fro
7730: 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72  m source, not fr
7740: 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  om the [amalgama
7750: 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68  tion] or from th
7760: 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a  e collection of.
7770: 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43    pre-packaged C
7780: 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20   files provided 
7790: 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b  for non-Unix lik
77a0: 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74  e platforms on t
77b0: 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f  he website..  </
77c0: 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p>.}..COMPILE_OP
77d0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
77e0: 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46  BLE_UNLOCK_NOTIF
77f0: 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  Y} {.  This opti
7800: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b  on enables the [
7810: 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e  sqlite3_unlock_n
7820: 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61  otify()] interfa
7830: 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73  ce and.  its ass
7840: 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e  ociated function
7850: 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65 20  ality.  See the 
7860: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69  documentation ti
7870: 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68  tled.  [Using th
7880: 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20  e SQLite Unlock 
7890: 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61  Notification Fea
78a0: 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69  ture] for additi
78b0: 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69  onal.  informati
78c0: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
78d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f  PTION {SQLITE_SO
78e0: 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20  UNDEX} {.  This 
78f0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
7900: 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51  he [soundex() SQ
7910: 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a  L function]..}..
7920: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7930: 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54 4c  SQLITE_USE_FCNTL
7940: 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73  _TRACE} {.  This
7950: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
7960: 51 4c 69 74 65 20 74 6f 20 69 73 73 75 65 20 65  QLite to issue e
7970: 78 74 72 61 20 5b 53 51 4c 49 54 45 5f 46 43 4e  xtra [SQLITE_FCN
7980: 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65 20 63  TL_TRACE] file c
7990: 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70 72 6f  ontrols.  to pro
79a0: 76 69 64 65 20 73 75 70 70 6c 65 6d 65 6e 74 61  vide supplementa
79b0: 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  ry information t
79c0: 6f 20 74 68 65 20 56 46 53 2e 20 20 54 68 65 20  o the VFS.  The 
79d0: 22 76 66 73 6c 6f 67 2e 63 22 20 65 78 74 65 6e  "vfslog.c" exten
79e0: 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75 73 65  sion.  makes use
79f0: 20 6f 66 20 74 68 69 73 20 74 6f 20 70 72 6f 76   of this to prov
7a00: 69 64 65 20 65 6e 68 61 6e 63 65 64 20 6c 6f 67  ide enhanced log
7a10: 73 20 6f 66 20 56 46 53 20 61 63 74 69 76 69 74  s of VFS activit
7a20: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
7a30: 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58  TION {YYTRACKMAX
7a40: 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20  STACKDEPTH} {.  
7a50: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
7a60: 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70  es the LALR(1) p
7a70: 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70 74  arser stack dept
7a80: 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a  h to be tracked.
7a90: 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75    and reported u
7aa0: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
7ab0: 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54  3_status]([SQLIT
7ac0: 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f  E_STATUS_PARSER_
7ad0: 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e  STACK],...).  in
7ae0: 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65  terface.  SQLite
7af0: 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  's LALR(1) parse
7b00: 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73 74  r has a fixed st
7b10: 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74  ack depth.  (det
7b20: 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69  ermined at compi
7b30: 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  le-time using th
7b40: 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d  e [YYSTACKDEPTH]
7b50: 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69   options)..  Thi
7b60: 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  s option can be 
7b70: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74  used to help det
7b80: 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70  ermine if an app
7b90: 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65  lication is.  ge
7ba0: 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65  tting close to e
7bb0: 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78  xceeding the max
7bc0: 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61  imum LALR(1) sta
7bd0: 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63  ck depth..}.</tc
7be0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69 73  l>..<a name="dis
7bf0: 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f  ablefeatures"></
7c00: 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69 6f  a>.<h2>1.5 Optio
7c10: 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65  ns To Disable Fe
7c20: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
7c30: 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a  Turned On</h2>..
7c40: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
7c50: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53  TION {SQLITE_DIS
7c60: 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66  ABLE_LFS} {.  If
7c70: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
7c80: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
7c90: 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c  fined, large fil
7ca0: 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64  e support.  is d
7cb0: 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  isabled..}..COMP
7cc0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7cd0: 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59  TE_DISABLE_DIRSY
7ce0: 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  NC} {.  If this 
7cf0: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
7d00: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
7d10: 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73   directory syncs
7d20: 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e  .  are disabled.
7d30: 20 20 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c    SQLite typical
7d40: 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73  ly attempts to s
7d50: 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20  ync the parent. 
7d60: 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20   directory when 
7d70: 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65  a file is delete
7d80: 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20  d to ensure the 
7d90: 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72  directory.  entr
7da0: 69 65 73 20 61 72 65 20 75 70 64 61 74 65 64 20  ies are updated 
7db0: 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64  immediately on d
7dc0: 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  isk..}..COMPILE_
7dd0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
7de0: 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43  ISABLE_FTS3_UNIC
7df0: 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  ODE} {.  If this
7e00: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
7e10: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
7e20: 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31  , the [unicode61
7e30: 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e  ] tokenizer.  in
7e40: 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74   [FTS3] is omitt
7e50: 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
7e60: 64 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c  d and is unavail
7e70: 61 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69  able to .  appli
7e80: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
7e90: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7ea0: 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f  TE_DISABLE_FTS4_
7eb0: 44 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66  DEFERRED} {.  If
7ec0: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
7ed0: 73 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62  ssor macro disab
7ee0: 6c 65 73 20 74 68 65 20 22 64 65 66 65 72 72 65  les the "deferre
7ef0: 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a  d token" optimiz
7f00: 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34  ation.  in [FTS4
7f10: 5d 2e 20 20 54 68 65 20 22 64 65 66 65 72 72 65  ].  The "deferre
7f20: 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a  d token" optimiz
7f30: 61 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61  ation avoids loa
7f40: 64 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70  ding massive.  p
7f50: 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72  osting lists for
7f60: 20 74 65 72 6d 73 20 74 68 61 74 20 61 72 65 20   terms that are 
7f70: 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74  in most document
7f80: 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74  s of the collect
7f90: 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61  ion.  and instea
7fa0: 64 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66  d simply scans f
7fb0: 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20  or those tokens 
7fc0: 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20  in the document 
7fd0: 73 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a  source.  [FTS4].
7fe0: 20 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61    should get exa
7ff0: 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e  ctly the same an
8000: 73 77 65 72 20 62 6f 74 68 20 77 69 74 68 20 61  swer both with a
8010: 6e 64 20 77 69 74 68 6f 75 74 20 74 68 69 73 20  nd without this 
8020: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a  optimization..}.
8030: 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20  </tcl>..<tcl>.  
8040: 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69  hd_fragment "omi
8050: 74 66 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f  tfeatures".  hd_
8060: 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65  keywords "omitfe
8070: 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c  atures".</tcl>.<
8080: 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73 20 54  h2>1.6 Options T
8090: 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c  o Omit Features<
80a0: 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h2>..<p>The fol
80b0: 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63  lowing options c
80c0: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b  an be used to .[
80d0: 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72  relfootprint | r
80e0: 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f  educe the size o
80f0: 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c  f the compiled l
8100: 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74  ibrary].by omitt
8110: 69 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74 75  ing unused featu
8120: 72 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f  res. This is pro
8130: 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75  bably only usefu
8140: 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79  l.in embedded sy
8150: 73 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63  stems where spac
8160: 65 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20  e is especially 
8170: 74 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77  tight, as even w
8180: 69 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73  ith all.features
8190: 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51   included the SQ
81a0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
81b0: 72 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c  relatively small
81c0: 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74  . Don't forget.t
81d0: 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70  o tell your comp
81e0: 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65  iler to optimize
81f0: 20 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65   for binary size
8200: 21 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f  ! (the -Os optio
8210: 6e 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e  n if.using GCC).
8220: 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63    Telling your c
8230: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
8240: 69 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75  ize for size usu
8250: 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20  ally has.a much 
8260: 6c 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e  larger impact on
8270: 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69   library footpri
8280: 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e  nt than employin
8290: 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63  g any of these.c
82a0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
82b0: 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64  ons.  You should
82c0: 20 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61   also verify tha
82d0: 74 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62  t .<a href="#deb
82e0: 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67  ugoptions">debug
82f0: 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e  ging options</a>
8300: 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f   are disabled.</
8310: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f  p>..<p>The macro
8320: 73 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f  s in this sectio
8330: 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65  n do not require
8340: 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c   values. The fol
8350: 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74  lowing .compilat
8360: 69 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c  ion switches all
8370: 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65   have the same e
8380: 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c  ffect:<br>.-DSQL
8390: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
83a0: 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45  BLE<br>.-DSQLITE
83b0: 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45  _OMIT_ALTERTABLE
83c0: 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  =1<br>.-DSQLITE_
83d0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
83e0: 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e  0.</p>..<p>If an
83f0: 79 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f  y of these optio
8400: 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20  ns are defined, 
8410: 74 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65  then the same se
8420: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
8430: 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20  _*.options must 
8440: 61 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20  also be defined 
8450: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27  when using the '
8460: 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67  lemon' tool to g
8470: 65 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73  enerate the.pars
8480: 65 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65  e.c file and whe
8490: 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20  n compiling the 
84a0: 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20  'mkkeywordhash' 
84b0: 74 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72  tool which gener
84c0: 61 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72  ates .the keywor
84d0: 64 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65  dhash.h file..Be
84e0: 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74  cause of this, t
84f0: 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79  hese options may
8500: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68   only be used wh
8510: 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  en the library i
8520: 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e  s built.from can
8530: 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e  onical source, n
8540: 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61  ot from the [ama
8550: 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72  lgamation] or fr
8560: 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f  om the collectio
8570: 6e 20 6f 66 0a 70 72 65 2d 70 61 63 6b 61 67 65  n of.pre-package
8580: 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64  d C files provid
8590: 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20  ed for non-Unix 
85a0: 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f  like platforms o
85b0: 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 41  n the website..A
85c0: 6e 79 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  ny SQLITE_OMIT_*
85d0: 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 63   options which c
85e0: 61 6e 20 62 65 20 75 73 65 64 20 64 69 72 65 63  an be used direc
85f0: 74 6c 79 20 77 69 74 68 20 74 68 65 20 5b 61 6d  tly with the [am
8600: 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a 61 72 65  algamation] .are
8610: 20 6c 69 73 74 65 64 20 62 65 6c 6f 77 2c 20 68   listed below, h
8620: 6f 77 65 76 65 72 2c 20 74 68 65 20 77 61 72 6e  owever, the warn
8630: 69 6e 67 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c  ings in the foll
8640: 6f 77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20  owing paragraph 
8650: 73 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65 64 2e  should be noted.
8660: 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
8670: 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74  te>.<i><b>Import
8680: 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68  ant Note:</b> Th
8690: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
86a0: 6f 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 77  options do not w
86b0: 6f 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d  ork with the.[am
86c0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 77  algamation] or w
86d0: 69 74 68 20 70 72 65 2d 70 61 63 6b 61 67 65 64  ith pre-packaged
86e0: 20 43 20 63 6f 64 65 20 66 69 6c 65 73 2e 20 20   C code files.  
86f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
8700: 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f  mpile-time.optio
8710: 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 63 6f 72  ns only work cor
8720: 72 65 63 74 6c 79 20 77 68 65 6e 20 53 51 4c 69  rectly when SQLi
8730: 74 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d  te is built from
8740: 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63   canonical sourc
8750: 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f  e files..</i>.</
8760: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70  blockquote>...<p
8770: 3e 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e  >Special version
8780: 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  s of the SQLite 
8790: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61  amalgamation tha
87a0: 74 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61  t do work with a
87b0: 0a 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73  .predetermined s
87c0: 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49  et of SQLITE_OMI
87d0: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20  T_* options can 
87e0: 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54  be generated.  T
87f0: 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20  o do so,.make a 
8800: 63 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65  copy of the Make
8810: 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d  file.linux-gcc m
8820: 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65  akefile template
8830: 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61   in the canonica
8840: 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69  l.source code di
8850: 73 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61  stribution.  Cha
8860: 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  nge the name of 
8870: 79 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d  your copy to sim
8880: 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a  ply "Makefile"..
8890: 54 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66  Then edit "Makef
88a0: 69 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20 61  ile" to set up a
88b0: 70 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69  ppropriate compi
88c0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e  le-time options.
88d0: 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62 6c    Then.type:.<bl
88e0: 6f 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61 6b  ockquote><tt>mak
88f0: 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71  e clean; make sq
8900: 6c 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62 6c  lite3.c</tt></bl
8910: 6f 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72 65  ockquote>.The re
8920: 73 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33  sulting "sqlite3
8930: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
8940: 20 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20   code file (and 
8950: 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68  its associated.h
8960: 65 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69  eader file "sqli
8970: 74 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e  te3.h") can then
8980: 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e   be moved to a n
8990: 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d  on-unix platform
89a0: 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69  .for final compi
89b0: 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e  lation using a n
89c0: 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c  ative compiler.<
89d0: 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f 66 20 74  /p>..<p>All of t
89e0: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  he SQLITE_OMIT_*
89f0: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73   options are uns
8a00: 75 70 70 6f 72 74 65 64 2e 3c 2f 70 3e 0a 0a 3c  upported.</p>..<
8a10: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c  blockquote>.<i><
8a20: 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65  b>Important Note
8a30: 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45  :</b>.The SQLITE
8a40: 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d  _OMIT_* compile-
8a50: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65  time options are
8a60: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f   unsupported..</
8a70: 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  i></blockquote>.
8a80: 0a 3c 70 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f  .<p>.The SQLITE_
8a90: 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74  OMIT_* compile-t
8aa0: 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ime options are 
8ab0: 75 73 75 61 6c 6c 79 20 75 6e 74 65 73 74 65 64  usually untested
8ac0: 20 61 6e 64 0a 61 72 65 20 61 6c 6d 6f 73 74 20   and.are almost 
8ad0: 63 65 72 74 61 69 6e 6c 79 20 75 6e 74 65 73 74  certainly untest
8ae0: 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f  ed in combinatio
8af0: 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c 20 6f 66  n..Any or all of
8b00: 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d   these options m
8b10: 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72  ay be removed fr
8b20: 6f 6d 20 74 68 65 20 63 6f 64 65 20 69 6e 20 66  om the code in f
8b30: 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 0a 61  uture releases.a
8b40: 6e 64 20 77 69 74 68 6f 75 74 20 77 61 72 6e 69  nd without warni
8b50: 6e 67 2e 20 20 46 6f 72 20 61 6e 79 20 70 61 72  ng.  For any par
8b60: 74 69 63 75 6c 61 72 20 72 65 6c 65 61 73 65 2c  ticular release,
8b70: 20 73 6f 6d 65 20 6f 66 20 74 68 65 73 65 0a 6f   some of these.o
8b80: 70 74 69 6f 6e 73 20 6d 61 79 20 63 61 75 73 65  ptions may cause
8b90: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72   compile-time or
8ba0: 20 72 75 6e 2d 74 69 6d 65 20 66 61 69 6c 75 72   run-time failur
8bb0: 65 73 2c 20 70 61 72 74 69 63 75 6c 61 72 6c 79  es, particularly
8bc0: 0a 77 68 65 6e 20 75 73 65 64 20 69 6e 20 63 6f  .when used in co
8bd0: 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74 68 20 6f  mbination with o
8be0: 74 68 65 72 20 6f 70 74 69 6f 6e 73 2e 3c 2f 70  ther options.</p
8bf0: 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45  >..<tcl>.COMPILE
8c00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8c10: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d  OMIT_ALTERTABLE}
8c20: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
8c30: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
8c40: 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20  , the .  [ALTER 
8c50: 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  TABLE] command i
8c60: 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
8c70: 6e 20 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79  n the .  library
8c80: 2e 20 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b  . Executing an [
8c90: 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61  ALTER TABLE] sta
8ca0: 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20  tement causes a 
8cb0: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a  parse error..}..
8cc0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8cd0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c  SQLITE_OMIT_ANAL
8ce0: 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  YZE} {.  When th
8cf0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
8d00: 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59  ined, the [ANALY
8d10: 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f  ZE] command is o
8d20: 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68  mitted from.  th
8d30: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
8d40: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8d50: 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20  TE_OMIT_ATTACH} 
8d60: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
8d70: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
8d80: 20 74 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e   the [ATTACH] an
8d90: 64 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61  d [DETACH] comma
8da0: 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65  nds are.  omitte
8db0: 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
8dc0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8dd0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8de0: 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20  _AUTHORIZATION} 
8df0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
8e00: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
8e10: 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e  he authorization
8e20: 20 63 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72   callback featur
8e30: 65 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62  e from the.  lib
8e40: 72 61 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74  rary. The [sqlit
8e50: 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
8e60: 72 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f  r()] API functio
8e70: 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74  n is not present
8e80: 0a 20 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  .  in the librar
8e90: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
8ea0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
8eb0: 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d  T_AUTOINCREMENT}
8ec0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
8ed0: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
8ee0: 20 74 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43   the .  [AUTOINC
8ef0: 52 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e  REMENT] function
8f00: 61 6c 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73  ality. When this
8f10: 20 0a 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20   .  is macro is 
8f20: 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73  defined, columns
8f30: 20 64 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20   declared as .  
8f40: 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  "[INTEGER PRIMAR
8f50: 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45  Y KEY] AUTOINCRE
8f60: 4d 45 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69  MENT".  behave i
8f70: 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 61  n the same way a
8f80: 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72  s columns declar
8f90: 65 64 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20  ed as "[INTEGER 
8fa0: 50 52 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68  PRIMARY KEY]" wh
8fb0: 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20  en a .  NULL is 
8fc0: 69 6e 73 65 72 74 65 64 2e 20 54 68 65 20 73 71  inserted. The sq
8fd0: 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79  lite_sequence sy
8fe0: 73 74 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65  stem table is ne
8ff0: 69 74 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e  ither created, n
9000: 6f 72 0a 20 20 72 65 73 70 65 63 74 65 64 20 69  or.  respected i
9010: 66 20 69 74 20 61 6c 72 65 61 64 79 20 65 78 69  f it already exi
9020: 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sts..}..COMPILE_
9030: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
9040: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a  MIT_AUTOINIT} {.
9050: 20 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20    For backwards 
9060: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
9070: 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  th older version
9080: 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74  s of SQLite that
9090: 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c   lack.  the [sql
90a0: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
90b0: 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68  )] interface, th
90c0: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  e [sqlite3_initi
90d0: 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61  alize()] interfa
90e0: 63 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61  ce.  is called a
90f0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f  utomatically upo
9100: 6e 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61  n entry to certa
9110: 69 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65  in key interface
9120: 73 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c  s such as.  [sql
9130: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73  ite3_open()], [s
9140: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
9150: 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c  ter()], and [sql
9160: 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e  ite3_mprintf()].
9170: 0a 20 20 54 68 65 20 6f 76 65 72 68 65 61 64 20  .  The overhead 
9180: 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c  of invoking [sql
9190: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
91a0: 29 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  )] automatically
91b0: 20 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d   in this.  way m
91c0: 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79  ay be omitted by
91d0: 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65   building SQLite
91e0: 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45   with the SQLITE
91f0: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20  _OMIT_AUTOINIT. 
9200: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
9210: 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69  macro.  When bui
9220: 6c 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f  lt using SQLITE_
9230: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53  OMIT_AUTOINIT, S
9240: 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74  QLite.  will not
9250: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
9260: 6e 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66  nitialize itself
9270: 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61   and the applica
9280: 74 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64  tion is required
9290: 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71  .  to invoke [sq
92a0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
92b0: 28 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69  ()] directly pri
92c0: 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20  or to beginning 
92d0: 75 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c  use of the.  SQL
92e0: 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a  ite library..}..
92f0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
9300: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
9310: 4d 41 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20  MATIC_INDEX} {. 
9320: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
9330: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
9340: 20 0a 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69   .  [automatic i
9350: 6e 64 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f  ndexing] functio
9360: 6e 61 6c 69 74 79 2e 0a 20 20 53 65 65 20 61 6c  nality..  See al
9370: 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 44 45 46 41  so: [SQLITE_DEFA
9380: 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e  ULT_AUTOMATIC_IN
9390: 44 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  DEX]..}..COMPILE
93a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
93b0: 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 7d 20  OMIT_AUTORESET} 
93c0: 7b 0a 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  {.  By default, 
93d0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  the [sqlite3_ste
93e0: 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77  p()] interface w
93f0: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
9400: 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69  y invoke.  [sqli
9410: 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74 6f 20  te3_reset()] to 
9420: 72 65 73 65 74 20 74 68 65 20 5b 70 72 65 70 61  reset the [prepa
9430: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69  red statement] i
9440: 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  f necessary.  Th
9450: 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is.  compile-tim
9460: 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73  e option changes
9470: 20 74 68 61 74 20 62 65 68 61 76 69 6f 72 20 73   that behavior s
9480: 6f 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f  o that [sqlite3_
9490: 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72  step()] will.  r
94a0: 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49  eturn [SQLITE_MI
94b0: 53 55 53 45 5d 20 69 66 20 69 74 20 63 61 6c 6c  SUSE] if it call
94c0: 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72  ed again after r
94d0: 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e  eturning anythin
94e0: 67 20 6f 74 68 65 72 0a 20 20 74 68 61 6e 20 5b  g other.  than [
94f0: 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51  SQLITE_ROW], [SQ
9500: 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b  LITE_BUSY], or [
9510: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75  SQLITE_LOCKED] u
9520: 6e 6c 65 73 73 20 74 68 65 72 65 20 77 61 73 20  nless there was 
9530: 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69 6e 67  an.  intervening
9540: 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65   call to [sqlite
9550: 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49  3_reset()]...  I
9560: 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  n SQLite version
9570: 20 33 2e 36 2e 32 33 2e 31 20 61 6e 64 20 65 61   3.6.23.1 and ea
9580: 72 6c 69 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f  rlier, [sqlite3_
9590: 73 74 65 70 28 29 5d 20 75 73 65 64 20 74 6f 20  step()] used to 
95a0: 61 6c 77 61 79 73 0a 20 20 72 65 74 75 72 6e 20  always.  return 
95b0: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
95c0: 69 66 20 69 74 20 77 61 73 20 69 6e 76 6f 6b 65  if it was invoke
95d0: 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72 65  d again after re
95e0: 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67  turning anything
95f0: 0a 20 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53  .  other than [S
9600: 51 4c 49 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f  QLITE_ROW] witho
9610: 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e  ut an intervenin
9620: 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  g call to [sqlit
9630: 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 20 20 54  e3_reset()]..  T
9640: 68 69 73 20 63 61 75 73 65 64 20 70 72 6f 62 6c  his caused probl
9650: 65 6d 73 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72  ems on some poor
9660: 6c 79 20 77 72 69 74 74 65 6e 20 73 6d 61 72 74  ly written smart
9670: 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f  phone applicatio
9680: 6e 73 20 77 68 69 63 68 0a 20 20 64 69 64 20 6e  ns which.  did n
9690: 6f 74 20 63 6f 72 72 65 63 74 6c 79 20 68 61 6e  ot correctly han
96a0: 64 6c 65 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  dle the [SQLITE_
96b0: 4c 4f 43 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c  LOCKED] and [SQL
96c0: 49 54 45 5f 42 55 53 59 5d 20 65 72 72 6f 72 20  ITE_BUSY] error 
96d0: 0a 20 20 72 65 74 75 72 6e 73 2e 20 20 52 61 74  .  returns.  Rat
96e0: 68 65 72 20 74 68 61 6e 20 66 69 78 20 74 68 65  her than fix the
96f0: 20 6d 61 6e 79 20 64 65 66 65 63 74 69 76 65 20   many defective 
9700: 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69  smartphone appli
9710: 63 61 74 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20  cations, .  the 
9720: 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69  behavior of SQLi
9730: 74 65 20 77 61 73 20 63 68 61 6e 67 65 64 20 69  te was changed i
9740: 6e 20 33 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75  n 3.6.23.2 to au
9750: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 73 65  tomatically rese
9760: 74 0a 20 20 74 68 65 20 70 72 65 70 61 72 65 64  t.  the prepared
9770: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 42 75 74   statement.  But
9780: 20 74 68 61 74 20 63 68 61 6e 67 65 64 20 63 61   that changed ca
9790: 75 73 65 64 20 69 73 73 75 65 73 20 69 6e 20 6f  used issues in o
97a0: 74 68 65 72 20 0a 20 20 69 6d 70 72 6f 70 65 72  ther .  improper
97b0: 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61  ly implemented a
97c0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
97d0: 20 77 65 72 65 20 61 63 74 75 61 6c 6c 79 20 6c   were actually l
97e0: 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20  ooking.  for an 
97f0: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
9800: 72 65 74 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e  return to termin
9810: 61 74 65 20 74 68 65 69 72 20 71 75 65 72 79 20  ate their query 
9820: 6c 6f 6f 70 73 2e 20 20 28 41 6e 79 74 69 6d 65  loops.  (Anytime
9830: 0a 20 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  .  an applicatio
9840: 6e 20 67 65 74 73 20 61 6e 20 53 51 4c 49 54 45  n gets an SQLITE
9850: 5f 4d 49 53 55 53 45 20 65 72 72 6f 72 20 63 6f  _MISUSE error co
9860: 64 65 20 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20  de from SQLite, 
9870: 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 0a 20  that means the. 
9880: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
9890: 6d 69 73 75 73 69 6e 67 20 74 68 65 20 53 51 4c  misusing the SQL
98a0: 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ite interface an
98b0: 64 20 69 73 20 74 68 75 73 20 69 6e 63 6f 72 72  d is thus incorr
98c0: 65 63 74 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e  ectly.  implemen
98d0: 74 65 64 2e 29 20 20 54 68 65 20 53 51 4c 49 54  ted.)  The SQLIT
98e0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54  E_OMIT_AUTORESET
98f0: 20 69 6e 74 65 72 66 61 63 65 20 77 61 73 20 61   interface was a
9900: 64 64 65 64 20 74 6f 20 53 51 4c 69 74 65 0a 20  dded to SQLite. 
9910: 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 35 20 69   version 3.7.5 i
9920: 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67  n an effort to g
9930: 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62  et all of the (b
9940: 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61  roken).  applica
9950: 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67  tions to work ag
9960: 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69  ain without havi
9970: 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66  ng to actually f
9980: 69 78 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ix the applicati
9990: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
99a0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
99b0: 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20  MIT_AUTOVACUUM} 
99c0: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
99d0: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
99e0: 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f  he library canno
99f0: 74 20 63 72 65 61 74 65 20 6f 72 20 77 72 69 74  t create or writ
9a00: 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65  e to .  database
9a10: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b  s that support [
9a20: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20  auto_vacuum]..  
9a30: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41  Executing a [PRA
9a40: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
9a50: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
9a60: 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69  t an error.  (si
9a70: 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47  nce unknown PRAG
9a80: 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79  MAs are silently
9a90: 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64   ignored), but d
9aa0: 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61  oes not return a
9ab0: 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69   value.  or modi
9ac0: 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75  fy the auto-vacu
9ad0: 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64  um flag in the d
9ae0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66  atabase file. If
9af0: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 61 74   a database that
9b00: 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f  .  supports auto
9b10: 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65  -vacuum is opene
9b20: 64 20 62 79 20 61 20 6c 69 62 72 61 72 79 20 63  d by a library c
9b30: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
9b40: 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69  s option, it.  i
9b50: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
9b60: 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f  opened in read-o
9b70: 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d  nly mode..}..COM
9b80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9b90: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
9ba0: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
9bb0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
9bc0: 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  isables the use 
9bd0: 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74 68 20  of indices with 
9be0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 74 65 72  WHERE clause ter
9bf0: 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79  ms.  that employ
9c00: 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65   the BETWEEN ope
9c10: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
9c20: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9c30: 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52  _OMIT_BLOB_LITER
9c40: 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  AL} {.  When thi
9c50: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
9c60: 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70  ned, it is not p
9c70: 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69  ossible to speci
9c80: 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61  fy a blob in.  a
9c90: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
9ca0: 75 73 69 6e 67 20 74 68 65 20 58 27 41 42 43 44  using the X'ABCD
9cb0: 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d  ' syntax..}..COM
9cc0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9cd0: 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f  ITE_OMIT_BTREECO
9ce0: 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  UNT} {.  When th
9cf0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
9d00: 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  ined, an optimiz
9d10: 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c  ation that accel
9d20: 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a  erates counting.
9d30: 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e    all entries in
9d40: 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68   a table (in oth
9d50: 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74  er words, an opt
9d60: 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68  imization that h
9d70: 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63  elps.  "SELECT c
9d80: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62  ount(*) FROM tab
9d90: 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72 29 20  le" run faster) 
9da0: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  is omitted..}..C
9db0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9dc0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54  QLITE_OMIT_BUILT
9dd0: 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41 20 73  IN_TEST} {.  A s
9de0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 62  tandard SQLite b
9df0: 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20 61 20  uild includes a 
9e00: 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20  small amount of 
9e10: 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c 65 64  logic controlled
9e20: 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74  .  by the [sqlit
9e30: 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28  e3_test_control(
9e40: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 68 61  )] interface tha
9e50: 74 20 69 73 20 75 73 65 64 20 74 6f 20 65 78 65  t is used to exe
9e60: 72 63 69 73 65 0a 20 20 70 61 72 74 73 20 6f 66  rcise.  parts of
9e70: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
9e80: 20 74 68 61 74 20 61 72 65 20 64 69 66 66 69 63   that are diffic
9e90: 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 61  ult to control a
9ea0: 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69 6e 67  nd measure using
9eb0: 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  .  the standard 
9ec0: 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  API.  This optio
9ed0: 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62 75 69  n omits that bui
9ee0: 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67 69 63  lt-in test logic
9ef0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9f00: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
9f10: 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69 73 20  _CAST} {.  This 
9f20: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
9f30: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
9f40: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43 41 53  port for the CAS
9f50: 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43  T operator..}..C
9f60: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9f70: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b  QLITE_OMIT_CHECK
9f80: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
9f90: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
9fa0: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
9fb0: 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  for CHECK constr
9fc0: 61 69 6e 74 73 2e 0a 20 20 54 68 65 20 70 61 72  aints..  The par
9fd0: 73 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61  ser will still a
9fe0: 63 63 65 70 74 20 43 48 45 43 4b 20 63 6f 6e 73  ccept CHECK cons
9ff0: 74 72 61 69 6e 74 73 20 69 6e 20 53 51 4c 20 73  traints in SQL s
a000: 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65  tatements,.  the
a010: 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20  y will just not 
a020: 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a  be enforced..}..
a030: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a040: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
a050: 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d  ILEOPTION_DIAGS}
a060: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a070: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
a080: 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   the compile-tim
a090: 65 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73  e option diagnos
a0a0: 74 69 63 73 20 61 76 61 69 6c 61 62 6c 65 0a 20  tics available. 
a0b0: 20 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c   in SQLite, incl
a0c0: 75 64 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  uding the [sqlit
a0d0: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
a0e0: 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b  _used()] and.  [
a0f0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
a100: 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43  ption_get()] C/C
a110: 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68  ++ functions, th
a120: 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70  e.  [sqlite_comp
a130: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
a140: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f  ] and [sqlite_co
a150: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
a160: 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  )] SQL functions
a170: 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d  ,.  and the [com
a180: 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61  pile_options pra
a190: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
a1a0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a1b0: 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b  OMIT_COMPLETE} {
a1c0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
a1d0: 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74  auses the [sqlit
a1e0: 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61  e3_complete()] a
a1f0: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  nd [sqlite3_comp
a200: 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e 74 65  lete16()].  inte
a210: 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f 6d 69  rfaces to be omi
a220: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
a230: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a240: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
a250: 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LECT} {.  This o
a260: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
a270: 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f 75   omit the compou
a280: 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63  nd [SELECT] func
a290: 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53  tionality. .  [S
a2a0: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
a2b0: 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20 0a  s that use the .
a2c0: 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41    UNION, UNION A
a2d0: 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20 6f 72  LL, INTERSECT or
a2e0: 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64   EXCEPT compound
a2f0: 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74 6f 72   SELECT operator
a300: 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73 65 20  s will .  cause 
a310: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
a320: 20 20 41 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74    An [INSERT] st
a330: 61 74 65 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c  atement with mul
a340: 74 69 70 6c 65 20 76 61 6c 75 65 73 20 69 6e 20  tiple values in 
a350: 74 68 65 20 56 41 4c 55 45 53 20 63 6c 61 75 73  the VALUES claus
a360: 65 20 69 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74  e is.  implement
a370: 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73  ed internally as
a380: 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45   a compound SELE
a390: 43 54 2e 20 20 48 65 6e 63 65 2c 20 74 68 69 73  CT.  Hence, this
a3a0: 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64   option also.  d
a3b0: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
a3c0: 69 74 79 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f  ity to insert mo
a3d0: 72 65 20 74 68 61 6e 20 61 20 73 69 6e 67 6c 65  re than a single
a3e0: 20 72 6f 77 20 75 73 69 6e 67 20 61 6e 0a 20 20   row using an.  
a3f0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20  INSERT INTO ... 
a400: 56 41 4c 55 45 53 20 2e 2e 2e 20 73 74 61 74 65  VALUES ... state
a410: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
a420: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a430: 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55  OMIT_DATETIME_FU
a440: 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NCS} {.  If this
a450: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
a460: 65 64 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69  ed, SQLite's bui
a470: 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74  lt-in date and t
a480: 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e  ime manipulation
a490: 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  .  functions are
a4a0: 20 6f 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66   omitted. Specif
a4b0: 69 63 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20  ically, the SQL 
a4c0: 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e  functions julian
a4d0: 64 61 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20  day(), date(),. 
a4e0: 20 74 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d   time(), datetim
a4f0: 65 28 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65  e() and strftime
a500: 28 29 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  () are not avail
a510: 61 62 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c  able. The defaul
a520: 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65  t column.  value
a530: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
a540: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64  CURRENT_DATE and
a550: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
a560: 4d 50 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61  MP are still ava
a570: 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  ilable..}..COMPI
a580: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a590: 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d  E_OMIT_DECLTYPE}
a5a0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a5b0: 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
a5c0: 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66  o omit support f
a5d0: 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  or the.  [sqlite
a5e0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
a5f0: 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
a600: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
a610: 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72 66 61  e16()].  interfa
a620: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
a630: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a640: 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 7d 20  MIT_DEPRECATED} 
a650: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a660: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
a670: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
a680: 72 20 69 6e 74 65 72 66 61 63 65 73 0a 20 20 6d  r interfaces.  m
a690: 61 72 6b 65 64 20 61 73 20 64 65 70 72 65 63 61  arked as depreca
a6a0: 74 65 64 2e 20 20 54 68 69 73 20 69 6e 63 6c 75  ted.  This inclu
a6b0: 64 65 73 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  des .  [sqlite3_
a6c0: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
a6d0: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65  )],.  [sqlite3_e
a6e0: 78 70 69 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71  xpired()],.  [sq
a6f0: 6c 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62  lite3_transfer_b
a700: 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73  indings()],.  [s
a710: 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65  qlite3_global_re
a720: 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c  cover()],.  [sql
a730: 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c 65 61  ite3_thread_clea
a740: 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  nup()] and.  [sq
a750: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61  lite3_memory_ala
a760: 72 6d 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  rm()] interfaces
a770: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a780: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
a790: 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69  _DISKIO} {.  Thi
a7a0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61  s option omits a
a7b0: 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 77  ll support for w
a7c0: 72 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 69  riting to the di
a7d0: 73 6b 20 61 6e 64 20 66 6f 72 63 65 73 0a 20 20  sk and forces.  
a7e0: 64 61 74 61 62 61 73 65 73 20 74 6f 20 65 78 69  databases to exi
a7f0: 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c  st in memory onl
a800: 79 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  y.  This option 
a810: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 0a 20 20  has not been .  
a820: 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e 64 20 70  maintained and p
a830: 72 6f 62 61 62 6c 79 20 64 6f 65 73 20 6e 6f 74  robably does not
a840: 20 77 6f 72 6b 20 77 69 74 68 20 6e 65 77 65 72   work with newer
a850: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
a860: 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ite..}..COMPILE_
a870: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a880: 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20  MIT_EXPLAIN} {. 
a890: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
a8a0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ption causes the
a8b0: 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f 6d 6d 61   [EXPLAIN] comma
a8c0: 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  nd to be omitted
a8d0: 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72   from the.  libr
a8e0: 61 72 79 2e 20 41 74 74 65 6d 70 74 69 6e 67 20  ary. Attempting 
a8f0: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 5b 45  to execute an [E
a900: 58 50 4c 41 49 4e 5d 20 73 74 61 74 65 6d 65 6e  XPLAIN] statemen
a910: 74 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20 70  t will cause a p
a920: 61 72 73 65 0a 20 20 65 72 72 6f 72 2e 0a 7d 0a  arse.  error..}.
a930: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
a940: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  {SQLITE_OMIT_FLA
a950: 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 54  G_PRAGMAS} {.  T
a960: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
a970: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 20 73   support for a s
a980: 75 62 73 65 74 20 6f 66 20 5b 50 52 41 47 4d 41  ubset of [PRAGMA
a990: 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 0a  ] commands that.
a9a0: 20 20 71 75 65 72 79 20 61 6e 64 20 73 65 74 20    query and set 
a9b0: 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65 72 74 69  boolean properti
a9c0: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
a9d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a9e0: 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
a9f0: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
aa00: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d  on is used to om
aa10: 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  it floating-poin
aa20: 74 20 6e 75 6d 62 65 72 20 73 75 70 70 6f 72 74  t number support
aa30: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
aa40: 0a 20 20 6c 69 62 72 61 72 79 2e 20 57 68 65 6e  .  library. When
aa50: 20 73 70 65 63 69 66 69 65 64 2c 20 73 70 65 63   specified, spec
aa60: 69 66 79 69 6e 67 20 61 20 66 6c 6f 61 74 69 6e  ifying a floatin
aa70: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61  g point number a
aa80: 73 20 61 20 6c 69 74 65 72 61 6c 20 0a 20 20 28  s a literal .  (
aa90: 69 2e 65 2e 20 22 31 2e 30 31 22 29 20 72 65 73  i.e. "1.01") res
aaa0: 75 6c 74 73 20 69 6e 20 61 20 70 61 72 73 65 20  ults in a parse 
aab0: 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e 49 6e 20  error...  <p>In 
aac0: 74 68 65 20 66 75 74 75 72 65 2c 20 74 68 69 73  the future, this
aad0: 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61 6c 73 6f   option may also
aae0: 20 64 69 73 61 62 6c 65 20 6f 74 68 65 72 20 66   disable other f
aaf0: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 0a 20  loating point . 
ab00: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20   functionality, 
ab10: 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 68 65 20  for example the 
ab20: 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
ab30: 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20 20 5b 73  double()], .  [s
ab40: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
ab50: 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  le()], [sqlite3_
ab60: 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 29 5d 20  value_double()] 
ab70: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  and.  [sqlite3_c
ab80: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 29 5d 20  olumn_double()] 
ab90: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20  API functions.. 
aba0: 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45   </p>.}..COMPILE
abb0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
abc0: 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59  OMIT_FOREIGN_KEY
abd0: 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70  } {.  If this op
abe0: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
abf0: 20 74 68 65 6e 20 5b 66 6f 72 65 69 67 6e 20 6b   then [foreign k
ac00: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 73  ey constraint] s
ac10: 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f 74 20 72  yntax is.  not r
ac20: 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a 0a 43 4f  ecognized..}..CO
ac30: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ac40: 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41  LITE_OMIT_GET_TA
ac50: 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
ac60: 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70  tion causes supp
ac70: 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33  ort for [sqlite3
ac80: 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 6e  _get_table()] an
ac90: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  d.  [sqlite3_fre
aca0: 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f 20 62 65  e_table()] to be
acb0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
acc0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
acd0: 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f  ITE_OMIT_INCRBLO
ace0: 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  B} {.  This opti
acf0: 6f 6e 20 63 61 75 73 65 73 20 73 75 70 70 6f 72  on causes suppor
ad00: 74 20 66 6f 72 20 5b 73 71 6c 69 74 65 33 5f 62  t for [sqlite3_b
ad10: 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  lob | incrementa
ad20: 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20 20 74 6f  l BLOB I/O].  to
ad30: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
ad40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
ad50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45  SQLITE_OMIT_INTE
ad60: 47 52 49 54 59 5f 43 48 45 43 4b 7d 20 7b 0a 20  GRITY_CHECK} {. 
ad70: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
ad80: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
ad90: 68 65 20 5b 69 6e 74 65 67 72 69 74 79 5f 63 68  he [integrity_ch
ada0: 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a  eck pragma]..}..
adb0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
adc0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45  SQLITE_OMIT_LIKE
add0: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
ade0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
adf0: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
ae00: 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f  ity of SQLite to
ae10: 20 75 73 65 20 69 6e 64 69 63 65 73 20 74 6f 20   use indices to 
ae20: 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65 20 5b  help.  resolve [
ae30: 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f 42 5d  LIKE] and [GLOB]
ae40: 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 61 20   operators in a 
ae50: 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a 7d 0a  WHERE clause..}.
ae60: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ae70: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41  {SQLITE_OMIT_LOA
ae80: 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b 0a 20  D_EXTENSION} {. 
ae90: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
aea0: 74 73 20 74 68 65 20 65 6e 74 69 72 65 20 65 78  ts the entire ex
aeb0: 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
aec0: 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d 0a 20  mechanism from. 
aed0: 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75 64 69   SQLite, includi
aee0: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62  ng [sqlite3_enab
aef0: 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
af00: 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  n()] and.  [sqli
af10: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
af20: 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  on()] interfaces
af30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
af40: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
af50: 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a 20 20  _LOCALTIME} {.  
af60: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
af70: 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65  s the "localtime
af80: 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20  " modifier from 
af90: 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
afa0: 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  e.  functions.  
afb0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73  This option is s
afc0: 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20  ometimes useful 
afd0: 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63  when trying to c
afe0: 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64 61 74  ompile.  the dat
aff0: 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
b000: 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74 66 6f  ions on a platfo
b010: 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  rm that does not
b020: 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20 20 63   support the.  c
b030: 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61 6c 20  oncept of local 
b040: 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  time..}..COMPILE
b050: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b060: 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 7d 20  OMIT_LOOKASIDE} 
b070: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b080: 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f 6f 6b 61  omits the [looka
b090: 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  side memory allo
b0a0: 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  cator]..}..COMPI
b0b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b0c0: 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d  E_OMIT_MEMORYDB}
b0d0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69   {.  When this i
b0e0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
b0f0: 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20  ibrary does not 
b100: 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63  respect the spec
b110: 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e  ial database.  n
b120: 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28  ame ":memory:" (
b130: 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f  normally used to
b140: 20 63 72 65 61 74 65 20 61 6e 20 5b 69 6e 2d 6d   create an [in-m
b150: 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 29  emory database])
b160: 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79  . If .  ":memory
b170: 3a 22 20 69 73 20 70 61 73 73 65 64 20 74 6f 20  :" is passed to 
b180: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
b190: 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  , [sqlite3_open1
b1a0: 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69  6()], or.  [sqli
b1b0: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
b1c0: 61 20 66 69 6c 65 20 77 69 74 68 20 74 68 69 73  a file with this
b1d0: 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20   name will be . 
b1e0: 20 6f 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74   opened or creat
b1f0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
b200: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b210: 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49  IT_OR_OPTIMIZATI
b220: 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
b230: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
b240: 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69   ability of SQLi
b250: 74 65 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64  te to use an ind
b260: 65 78 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69  ex together.  wi
b270: 74 68 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48  th terms of a WH
b280: 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65  ERE clause conne
b290: 63 74 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f  cted by the OR o
b2a0: 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  perator..}..COMP
b2b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b2c0: 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52  TE_OMIT_PAGER_PR
b2d0: 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e  AGMAS} {.  Defin
b2e0: 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ing this option 
b2f0: 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 72 65  omits pragmas re
b300: 6c 61 74 65 64 20 74 6f 20 74 68 65 20 70 61 67  lated to the pag
b310: 65 72 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f  er subsystem fro
b320: 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a  m .  the build..
b330: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b340: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
b350: 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20  RAGMA} {.  This 
b360: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
b370: 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47  o omit the [PRAG
b380: 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72  MA] command.  fr
b390: 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20  om the library. 
b3a0: 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20  Note that it is 
b3b0: 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65  useful to define
b3c0: 20 74 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74   the macros that
b3d0: 20 6f 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63   omit.  specific
b3e0: 20 70 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69   pragmas in addi
b3f0: 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73  tion to this, as
b400: 20 74 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72   they may also r
b410: 65 6d 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67  emove supporting
b420: 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72   code.  in other
b430: 20 73 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68   sub-systems. Th
b440: 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73  is macro removes
b450: 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f   the [PRAGMA] co
b460: 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43  mmand only..}..C
b470: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b480: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52  QLITE_OMIT_PROGR
b490: 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a  ESS_CALLBACK} {.
b4a0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61    This option ma
b4b0: 79 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20  y be defined to 
b4c0: 6f 6d 69 74 20 74 68 65 20 63 61 70 61 62 69 6c  omit the capabil
b4d0: 69 74 79 20 74 6f 20 69 73 73 75 65 20 22 70 72  ity to issue "pr
b4e0: 6f 67 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62  ogress" .  callb
b4f0: 61 63 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67  acks during long
b500: 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61  -running SQL sta
b510: 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20  tements. The .  
b520: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73  [sqlite3_progres
b530: 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41  s_handler()].  A
b540: 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  PI function is n
b550: 6f 74 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  ot present in th
b560: 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f  e library..}..CO
b570: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
b580: 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42  LITE_OMIT_QUICKB
b590: 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73  ALANCE} {.  This
b5a0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e   option omits an
b5b0: 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61   alternative, fa
b5c0: 73 74 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61  ster B-Tree bala
b5d0: 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20  ncing routine.. 
b5e0: 20 55 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69   Using this opti
b5f0: 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20  on makes SQLite 
b600: 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72  slightly smaller
b610: 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
b620: 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72  of.  making it r
b630: 75 6e 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77  un slightly slow
b640: 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
b650: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b660: 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20  IT_REINDEX} {.  
b670: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
b680: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
b690: 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d   [REINDEX].  com
b6a0: 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
b6b0: 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72  uded in the libr
b6c0: 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  ary..  Executing
b6d0: 20 61 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61   a [REINDEX] sta
b6e0: 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20  tement causes . 
b6f0: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
b700: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b710: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  N {SQLITE_OMIT_S
b720: 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b  CHEMA_PRAGMAS} {
b730: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
b740: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
b750: 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
b760: 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ng the database 
b770: 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74  schema from .  t
b780: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
b790: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
b7a0: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
b7b0: 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d  VERSION_PRAGMAS}
b7c0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
b7d0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
b7e0: 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72  pragmas for quer
b7f0: 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69  ying and modifyi
b800: 6e 67 20 74 68 65 20 0a 20 20 64 61 74 61 62 61  ng the .  databa
b810: 73 65 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f  se schema versio
b820: 6e 20 61 6e 64 20 75 73 65 72 20 76 65 72 73 69  n and user versi
b830: 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  on from the buil
b840: 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c  d. Specifically,
b850: 20 74 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f   the .  [schema_
b860: 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73  version] and [us
b870: 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47  er_version] PRAG
b880: 4d 41 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  MAs are omitted.
b890: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b8a0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b8b0: 53 48 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a  SHARED_CACHE} {.
b8c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75    This option bu
b8d0: 69 6c 64 73 20 53 51 4c 69 74 65 20 77 69 74 68  ilds SQLite with
b8e0: 6f 75 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  out support for 
b8f0: 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64  shared-cache mod
b900: 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65  e..  The [sqlite
b910: 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
b920: 63 61 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74  cache()] is omit
b930: 74 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61  ted along with a
b940: 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f   fair.  amount o
b950: 66 20 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74  f logic within t
b960: 68 65 20 42 2d 54 72 65 65 20 73 75 62 73 79 73  he B-Tree subsys
b970: 74 65 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77  tem associated w
b980: 69 74 68 20 73 68 61 72 65 64 0a 20 20 63 61 63  ith shared.  cac
b990: 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d  he management..}
b9a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b9b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55   {SQLITE_OMIT_SU
b9c0: 42 51 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64  BQUERY} {.  If d
b9d0: 65 66 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20  efined, support 
b9e0: 66 6f 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20  for sub-selects 
b9f0: 61 6e 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65  and the IN() ope
ba00: 72 61 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65  rator are omitte
ba10: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
ba20: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ba30: 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20  T_TCL_VARIABLE} 
ba40: 7b 0a 20 20 49 66 20 74 68 69 73 20 6d 61 63 72  {.  If this macr
ba50: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  o is defined, th
ba60: 65 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20 22  en the special "
ba70: 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e  $<variable-name>
ba80: 22 20 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20  " syntax.  used 
ba90: 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
baa0: 20 62 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62   bind SQL variab
bab0: 6c 65 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61  les to TCL varia
bac0: 62 6c 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e  bles is omitted.
bad0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
bae0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
baf0: 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73  TEMPDB} {.  This
bb00: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
bb10: 70 70 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f  pport for TEMP o
bb20: 72 20 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c  r TEMPORARY tabl
bb30: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
bb40: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bb50: 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68  IT_TRACE} {.  Th
bb60: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
bb70: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  support for the 
bb80: 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
bb90: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
bba0: 65 33 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65  e3_trace()] inte
bbb0: 72 66 61 63 65 73 20 61 6e 64 20 74 68 65 69 72  rfaces and their
bbc0: 20 61 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69   associated logi
bbd0: 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  c..}..COMPILE_OP
bbe0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
bbf0: 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44  T_TRIGGER} {.  D
bc00: 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74  efining this opt
bc10: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
bc20: 74 20 66 6f 72 20 54 52 49 47 47 45 52 20 6f 62  t for TRIGGER ob
bc30: 6a 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74  jects. Neither t
bc40: 68 65 20 0a 20 20 5b 43 52 45 41 54 45 20 54 52  he .  [CREATE TR
bc50: 49 47 47 45 52 5d 20 6f 72 20 5b 44 52 4f 50 20  IGGER] or [DROP 
bc60: 54 52 49 47 47 45 52 5d 0a 20 20 63 6f 6d 6d 61  TRIGGER].  comma
bc70: 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c  nds are availabl
bc80: 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20  e in this case, 
bc90: 61 6e 64 20 61 74 74 65 6d 70 74 69 6e 67 20 74  and attempting t
bca0: 6f 20 65 78 65 63 75 74 65 0a 20 20 65 69 74 68  o execute.  eith
bcb0: 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  er will result i
bcc0: 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e  n a parse error.
bcd0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
bce0: 6c 73 6f 20 64 69 73 61 62 6c 65 73 20 65 6e 66  lso disables enf
bcf0: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f 72  orcement of [for
bd00: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
bd10: 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63 65 20 74  ints],.  since t
bd20: 68 65 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70  he code that imp
bd30: 6c 65 6d 65 6e 74 73 20 74 72 69 67 67 65 72 73  lements triggers
bd40: 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 6f 6d   and which is om
bd50: 69 74 74 65 64 20 62 79 20 74 68 69 73 0a 20 20  itted by this.  
bd60: 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75  option is also u
bd70: 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
bd80: 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63   [foreign key ac
bd90: 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  tions]..}..COMPI
bda0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
bdb0: 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
bdc0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
bdd0: 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c    A default buil
bde0: 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20  d of SQLite, if 
bdf0: 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  a [DELETE] state
be00: 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52  ment has no WHER
be10: 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f  E clause.  and o
be20: 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62  perates on a tab
be30: 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67  le with no trigg
be40: 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61  ers, an optimiza
be50: 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74  tion occurs that
be60: 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44 45  .  causes the DE
be70: 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79  LETE to occur by
be80: 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   dropping and re
be90: 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62  creating the tab
bea0: 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67  le.  .  Dropping
beb0: 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
bec0: 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c  a table is usual
bed0: 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20 74  ly much faster t
bee0: 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74  han deleting.  t
bef0: 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  he table content
bf00: 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68   row by row.  Th
bf10: 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e 63  is is the "trunc
bf20: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
bf30: 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  "..}..COMPILE_OP
bf40: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
bf50: 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69  T_UTF16} {.  Thi
bf60: 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
bf70: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
bf80: 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20 65  for UTF16 text e
bf90: 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68  ncoding. When th
bfa0: 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20  is is.  defined 
bfb0: 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  all API function
bfc0: 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72  s that return or
bfd0: 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65 6e   accept UTF16 en
bfe0: 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a 20  coded text are. 
bff0: 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68   unavailable. Th
c000: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61  ese functions ca
c010: 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20  n be identified 
c020: 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61 74  by the fact that
c030: 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68   they end.  with
c040: 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70   '16', for examp
c050: 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  le [sqlite3_prep
c060: 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74  are16()], [sqlit
c070: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
c080: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
c090: 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29  e3_bind_text16()
c0a0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
c0b0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c0c0: 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68  T_VACUUM} {.  Wh
c0d0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
c0e0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
c0f0: 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e  VACUUM].  comman
c100: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
c110: 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
c120: 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
c130: 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65  [VACUUM] stateme
c140: 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70  nt causes .  a p
c150: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
c160: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c170: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d  QLITE_OMIT_VIEW}
c180: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
c190: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
c1a0: 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57  support for VIEW
c1b0: 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
c1c0: 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
c1d0: 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b   VIEW] nor the [
c1e0: 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d  DROP VIEW].  com
c1f0: 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61  mands are availa
c200: 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65  ble in this case
c210: 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69  , and.  attempti
c220: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65 69  ng to execute ei
c230: 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74  ther will result
c240: 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
c250: 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49  r...  WARNING: I
c260: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
c270: 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c  defined, it will
c280: 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65   not be possible
c290: 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62   to open a datab
c2a0: 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20  ase.  for which 
c2b0: 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61  the schema conta
c2c0: 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73  ins VIEW objects
c2d0: 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  . .}..COMPILE_OP
c2e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
c2f0: 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20  T_VIRTUALTABLE} 
c300: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c310: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
c320: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  r the [sqlite3_v
c330: 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61  tab | Virtual Ta
c340: 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d  ble].  mechanism
c350: 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   in SQLite..}..C
c360: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
c370: 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 7d 20  QLITE_OMIT_WAL} 
c380: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
c390: 6f 6d 69 74 73 20 74 68 65 20 22 5b 77 72 69 74  omits the "[writ
c3a0: 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22 20 28 61  e-ahead log]" (a
c3b0: 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22 29 20 63  .k.a. "[WAL]") c
c3c0: 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a 0a 43 4f  apability..}..CO
c3d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
c3e0: 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20 7b  LITE_OMIT_WSD} {
c3f0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 62  .  This option b
c400: 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f 6e 20  uilds a version 
c410: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
c420: 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e 74 61  brary that conta
c430: 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61 62 6c  ins no.  Writabl
c440: 65 20 53 74 61 74 69 63 20 44 61 74 61 20 28 57  e Static Data (W
c450: 53 44 29 2e 20 20 57 53 44 20 69 73 20 67 6c 6f  SD).  WSD is glo
c460: 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e  bal variables an
c470: 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20 76 61  d/or static.  va
c480: 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65 20 70  riables.  Some p
c490: 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f 74 20  latforms do not 
c4a0: 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61 6e 64  support WSD, and
c4b0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
c4c0: 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e 20 6f  necessary.  in o
c4d0: 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20  rder for SQLite 
c4e0: 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20 70 6c  to work those pl
c4f0: 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20 55 6e  atforms.  ..  Un
c500: 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49 54 20  like other OMIT 
c510: 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 61  options which ma
c520: 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  ke the SQLite li
c530: 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c 0a 20  brary smaller,. 
c540: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 63 74   this option act
c550: 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65 73 20  ually increases 
c560: 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51 4c 69  the size of SQLi
c570: 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20  te and makes it 
c580: 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65 20 73  run.  a little s
c590: 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75 73 65  lower.  Only use
c5a0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 66 20   this option if 
c5b0: 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e 67 20  SQLite is being 
c5c0: 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20 20 65  built for an.  e
c5d0: 6d 62 65 64 64 65 64 20 74 61 72 67 65 74 20 74  mbedded target t
c5e0: 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  hat does not sup
c5f0: 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43 4f 4d  port WSD..}..COM
c600: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
c610: 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50  ITE_OMIT_XFER_OP
c620: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
c630: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
c640: 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f   for optimizatio
c650: 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73 74 61  ns that help sta
c660: 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65  tements.  of the
c670: 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e   form "INSERT IN
c680: 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e  TO ... SELECT ..
c690: 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d  ." run faster..}
c6a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c6b0: 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41   {SQLITE_ZERO_MA
c6c0: 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOC} {.  This o
c6d0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f 74 68  ption omits both
c6e0: 20 74 68 65 20 5b 64 65 66 61 75 6c 74 20 6d 65   the [default me
c6f0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20  mory allocator] 
c700: 61 6e 64 20 74 68 65 0a 20 20 5b 64 65 62 75 67  and the.  [debug
c710: 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ging memory allo
c720: 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68 65 20  cator] from the 
c730: 62 75 69 6c 64 20 61 6e 64 20 73 75 62 73 74 69  build and substi
c740: 74 75 74 65 73 20 61 20 73 74 75 62 0a 20 20 6d  tutes a stub.  m
c750: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
c760: 74 68 61 74 20 61 6c 77 61 79 73 20 66 61 69 6c  that always fail
c770: 73 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  s.  SQLite will 
c780: 6e 6f 74 20 72 75 6e 20 77 69 74 68 20 74 68 69  not run with thi
c790: 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72 79 20  s.  stub memory 
c7a0: 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63 65 20  allocator since 
c7b0: 69 74 20 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c  it will be unabl
c7c0: 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65  e to allocate me
c7d0: 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20 74 68 69  mory.  But.  thi
c7e0: 73 20 73 74 75 62 20 63 61 6e 20 62 65 20 72 65  s stub can be re
c7f0: 70 6c 61 63 65 64 20 61 74 20 73 74 61 72 74 2d  placed at start-
c800: 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b 73 71  time using.  [sq
c810: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53  lite3_config]([S
c820: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
c830: 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20 20 5b  LOC],...) or.  [
c840: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28  sqlite3_config](
c850: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  [SQLITE_CONFIG_H
c860: 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53 6f 20  EAP],...)..  So 
c870: 74 68 65 20 6e 65 74 20 65 66 66 65 63 74 20 6f  the net effect o
c880: 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74  f this compile-t
c890: 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 74 68  ime option is th
c8a0: 61 74 20 69 74 20 61 6c 6c 6f 77 73 20 53 51 4c  at it allows SQL
c8b0: 69 74 65 0a 20 20 74 6f 20 62 65 20 63 6f 6d 70  ite.  to be comp
c8c0: 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65 64 20  iled and linked 
c8d0: 61 67 61 69 6e 73 74 20 61 20 73 79 73 74 65 6d  against a system
c8e0: 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 64 6f   library that do
c8f0: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20  es not support. 
c900: 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65 65 28   malloc(), free(
c910: 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c 6c 6f  ), and/or reallo
c920: 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c  c()..}..</tcl>.<
c930: 61 20 6e 61 6d 65 3d 22 64 65 62 75 67 6f 70 74  a name="debugopt
c940: 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31  ions"></a>.<h2>1
c950: 2e 37 20 41 6e 61 6c 79 73 69 73 20 61 6e 64 20  .7 Analysis and 
c960: 44 65 62 75 67 67 69 6e 67 20 4f 70 74 69 6f 6e  Debugging Option
c970: 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43 4f  s</h2>.<tcl>..CO
c980: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
c990: 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a 20 20  LITE_DEBUG} {.  
c9a0: 54 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  The SQLite sourc
c9b0: 65 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e 73 20  e code contains 
c9c0: 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f 75 73 61  literally thousa
c9d0: 6e 64 73 20 6f 66 20 61 73 73 65 72 74 28 29 20  nds of assert() 
c9e0: 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75 73 65  statements.  use
c9f0: 64 20 74 6f 20 76 65 72 69 66 79 20 69 6e 74 65  d to verify inte
ca00: 72 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73  rnal assumptions
ca10: 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e 65 20   and subroutine 
ca20: 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e  preconditions an
ca30: 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74 69 6f  d.  postconditio
ca40: 6e 73 2e 20 20 54 68 65 73 65 20 61 73 73 65 72  ns.  These asser
ca50: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 61  t() statements a
ca60: 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75 72 6e  re normally turn
ca70: 65 64 20 6f 66 66 0a 20 20 28 74 68 65 79 20 67  ed off.  (they g
ca80: 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64 65 29  enerate no code)
ca90: 20 73 69 6e 63 65 20 74 75 72 6e 69 6e 67 20 74   since turning t
caa0: 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53 51 4c  hem on makes SQL
cab0: 69 74 65 20 72 75 6e 20 61 70 70 72 6f 78 69 6d  ite run approxim
cac0: 61 74 65 6c 79 0a 20 20 74 68 72 65 65 20 74 69  ately.  three ti
cad0: 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20 42 75 74  mes slower.  But
cae0: 20 66 6f 72 20 74 65 73 74 69 6e 67 20 61 6e 64   for testing and
caf0: 20 61 6e 61 6c 79 73 69 73 2c 20 69 74 20 69 73   analysis, it is
cb00: 20 75 73 65 66 75 6c 20 74 6f 20 74 75 72 6e 0a   useful to turn.
cb10: 20 20 74 68 65 20 61 73 73 65 72 74 28 29 20 73    the assert() s
cb20: 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20 20 54  tatements on.  T
cb30: 68 65 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20  he SQLITE_DEBUG 
cb40: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
cb50: 69 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e 0a 20  ion does this.. 
cb60: 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20 61 6c   SQLITE_DEBUG al
cb70: 73 6f 20 74 75 72 6e 73 20 6f 6e 20 73 6f 6d 65  so turns on some
cb80: 20 6f 74 68 65 72 20 64 65 62 75 67 67 69 6e 67   other debugging
cb90: 20 66 65 61 74 75 72 65 73 2e 0a 7d 0a 0a 43 4f   features..}..CO
cba0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
cbb0: 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b  LITE_MEMDEBUG} {
cbc0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 45  .  The SQLITE_ME
cbd0: 4d 44 45 42 55 47 20 6f 70 74 69 6f 6e 20 63 61  MDEBUG option ca
cbe0: 75 73 65 73 20 61 6e 20 69 6e 73 74 72 75 6d 65  uses an instrume
cbf0: 6e 74 65 64 20 0a 20 20 5b 64 65 62 75 67 67 69  nted .  [debuggi
cc00: 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ng memory alloca
cc10: 74 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75 73 65  tor].  to be use
cc20: 64 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74  d as the default
cc30: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
cc40: 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e  r within SQLite.
cc50: 20 20 54 68 65 0a 20 20 69 6e 73 74 72 75 6d 65    The.  instrume
cc60: 6e 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  nted memory allo
cc70: 63 61 74 6f 72 20 63 68 65 63 6b 73 20 66 6f 72  cator checks for
cc80: 20 6d 69 73 75 73 65 20 6f 66 20 64 79 6e 61 6d   misuse of dynam
cc90: 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64  ically allocated
cca0: 0a 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d  .  memory.  Exam
ccb0: 70 6c 65 73 20 6f 66 20 6d 69 73 75 73 65 20 69  ples of misuse i
ccc0: 6e 63 6c 75 64 65 20 75 73 69 6e 67 20 6d 65 6d  nclude using mem
ccd0: 6f 72 79 20 61 66 74 65 72 20 69 74 20 69 73 20  ory after it is 
cce0: 66 72 65 65 64 2c 0a 20 20 77 72 69 74 69 6e 67  freed,.  writing
ccf0: 20 6f 66 66 20 74 68 65 20 65 6e 64 73 20 6f 66   off the ends of
cd00: 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61   a memory alloca
cd10: 74 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65  tion, freeing me
cd20: 6d 6f 72 79 20 6e 6f 74 20 70 72 65 76 69 6f 75  mory not previou
cd30: 73 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64 20 66  sly.  obtained f
cd40: 72 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20 61  rom the memory a
cd50: 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61 69  llocator, or fai
cd60: 6c 69 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c 69  ling to initiali
cd70: 7a 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63  ze newly.  alloc
cd80: 61 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a  ated memory..}..
cd90: 3c 2f 74 63 6c 3e 0a                             </tcl>.