Documentation Source Text

Hex Artifact Content
Login

Artifact d9ccddb37150991cf3777c92fc56619e2bb78c2d:


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 46 54 53 33  LITE_ENABLE_FTS3
51f0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
5200: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
5210: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
5220: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
5230: 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   3.  of the full
5240: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
5250: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
5260: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
5270: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
5280: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5290: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50  TE_ENABLE_FTS3_P
52a0: 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a 20 20  ARENTHESIS} {.  
52b0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f 64 69  This option modi
52c0: 66 69 65 73 20 74 68 65 20 71 75 65 72 79 20 70  fies the query p
52d0: 61 74 74 65 72 6e 20 70 61 72 73 65 72 20 69 6e  attern parser in
52e0: 20 46 54 53 33 20 73 75 63 68 20 74 68 61 74 20   FTS3 such that 
52f0: 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20 6f 70  it.  supports op
5300: 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e 64 20  erators AND and 
5310: 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69 6f 6e  NOT (in addition
5320: 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20 4f 52   to the usual OR
5330: 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61 6e 64   and NEAR).  and
5340: 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71 75 65   also allows que
5350: 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  ry expressions t
5360: 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74 65 64  o contain nested
5370: 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a 7d 0a   parenthesis..}.
5380: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5390: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  {SQLITE_ENABLE_F
53a0: 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  TS4} {.  When th
53b0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
53c0: 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61  ined in the [ama
53d0: 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73  lgamation], vers
53e0: 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a 20 20 6f  ions 3 and 4.  o
53f0: 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20  f the full-text 
5400: 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73  search engine is
5410: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
5420: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
5430: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
5440: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
5450: 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69  BLE_ICU} {.  Thi
5460: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
5470: 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77  the .  [http://w
5480: 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f  ww.icu-project.o
5490: 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f  rg/ | Internatio
54a0: 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66  nal Components f
54b0: 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72  or Unicode].  or
54c0: 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e   "ICU" extension
54d0: 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65   to SQLite to be
54e0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
54f0: 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ild.  .}..COMPIL
5500: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
5510: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d  _ENABLE_IOTRACE}
5520: 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74   {.  When both t
5530: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61  he SQLite core a
5540: 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20  nd the [Command 
5550: 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20  Line Interface] 
5560: 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a  (CLI) are both .
5570: 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20    compiled with 
5580: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
5590: 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64  n the CLI provid
55a0: 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d  es an extra comm
55b0: 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f  and.  named ".io
55c0: 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f 76  trace" that prov
55d0: 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c  ides a low-level
55e0: 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69   log of I/O acti
55f0: 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74  vity..  This opt
5600: 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e  ion is experimen
5610: 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64  tal and may be d
5620: 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61  iscontinued in a
5630: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e   future release.
5640: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5650: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
5660: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d  E_LOCKING_STYLE}
5670: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5680: 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f   enables additio
5690: 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65  nal logic in the
56a0: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
56b0: 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53  yer for.  Mac OS
56c0: 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e   X. The addition
56d0: 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74  al logic attempt
56e0: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
56f0: 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20  he type of the. 
5700: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
5710: 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73  system and choos
5720: 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76  e and alternativ
5730: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65  e locking strate
5740: 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20  gy.  that works 
5750: 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68  correctly for th
5760: 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79  at filesystem ty
5770: 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67  pe. Five locking
5780: 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20 61   strategies .  a
5790: 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20  re available:.. 
57a0: 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50   <ul>.    <li> P
57b0: 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79  OSIX locking sty
57c0: 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20  le. This is the 
57d0: 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20  default locking 
57e0: 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20  style and the.  
57f0: 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73 65         style use
5800: 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20  d by other (non 
5810: 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73  Mac OS X) Unixes
5820: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
5830: 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20  ined and .      
5840: 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e     released usin
5850: 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79  g the fcntl() sy
5860: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
5870: 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67  <li> AFP locking
5880: 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63   style. This loc
5890: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
58a0: 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66  ed for network f
58b0: 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73 79  ile .         sy
58c0: 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20 74  stems that use t
58d0: 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46 69  he AFP (Apple Fi
58e0: 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70  ling Protocol) p
58f0: 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20  rotocol. Locks. 
5900: 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74 61          are obta
5910: 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  ined by calling 
5920: 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  the library func
5930: 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f  tion _AFPFSSetLo
5940: 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  ck()...    <li> 
5950: 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74  Flock locking st
5960: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73 65  yle. This is use
5970: 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65  d for file-syste
5980: 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20  ms that do not. 
5990: 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20          support 
59a0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
59b0: 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f  yle. Locks are o
59c0: 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65  btained and rele
59d0: 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20  ased using.     
59e0: 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20      the flock() 
59f0: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
5a00: 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20    <li> Dot-file 
5a10: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
5a20: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
5a30: 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e  e is used when n
5a40: 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20 20  either.         
5a50: 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20  flock nor POSIX 
5a60: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61  locking styles a
5a70: 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
5a80: 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e  the file system.
5a90: 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62 61  .         Databa
5aa0: 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74  se locks are obt
5ab0: 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e  ained by creatin
5ac0: 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74  g and entry in t
5ad0: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
5ae0: 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65 6c          at a wel
5af0: 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e  l-known location
5b00: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
5b10: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 28   database file (
5b20: 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20  a "dot-file").  
5b30: 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e         and relin
5b40: 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65 74  quished by delet
5b50: 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c  ing the same fil
5b60: 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20  e...    <li> No 
5b70: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49  locking style. I
5b80: 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  f none of the ab
5b90: 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f  ove can be suppo
5ba0: 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20  rted, this .    
5bb0: 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79       locking sty
5bc0: 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64  le is used. No d
5bd0: 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20  atabase locking 
5be0: 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65  mechanism is use
5bf0: 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20  d. When.        
5c00: 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73 20   this system is 
5c10: 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73  used it is not s
5c20: 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65  afe for a single
5c30: 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a   database to be.
5c40: 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73 65           accesse
5c50: 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c  d by multiple cl
5c60: 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a  ients..  </ul>..
5c70: 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
5c80: 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d  five extra [VFS]
5c90: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
5ca0: 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73   are provided as
5cb0: 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64   well as the.  d
5cc0: 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69  efault. By speci
5cd0: 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  fying one of the
5ce0: 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65   extra VFS imple
5cf0: 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68  mentations .  wh
5d00: 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69  en calling [sqli
5d10: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
5d20: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  an application m
5d30: 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69  ay bypass the fi
5d40: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65  le-system.  dete
5d50: 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20  ction logic and 
5d60: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63  explicitly selec
5d70: 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  t one of the abo
5d80: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ve locking style
5d90: 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78  s. The.  five ex
5da0: 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d  tra [VFS] implem
5db0: 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61  entations are ca
5dc0: 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78  lled "unix-posix
5dd0: 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20  ", "unix-afp",. 
5de0: 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22   "unix-flock", "
5df0: 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e  unix-dotfile" an
5e00: 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d  d "unix-none"..}
5e10: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5e20: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
5e30: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
5e40: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
5e50: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
5e60: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
5e70: 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20  at allows it to 
5e80: 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20  release unused. 
5e90: 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71   memory upon req
5ea0: 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69  uest.  This opti
5eb0: 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c  on must be enabl
5ec0: 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  ed in order for 
5ed0: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72  the.  [sqlite3_r
5ee0: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
5ef0: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f   interface to wo
5f00: 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d  rk.  If this com
5f10: 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69  pile-time.  opti
5f20: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
5f30: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  the [sqlite3_rel
5f40: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
5f50: 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 0a 20  nterface is a . 
5f60: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
5f70: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5f80: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
5f90: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
5fa0: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
5fb0: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
5fc0: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
5fd0: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
5fe0: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
5ff0: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
6000: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
6010: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
6020: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
6030: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
6040: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
6050: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
6060: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
6070: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
6080: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
6090: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
60a0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
60b0: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
60c0: 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c  MSYS3 memory all
60d0: 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20 68 79  ocator uses a hy
60e0: 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  brid allocation 
60f0: 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74  algorithm .  pat
6100: 74 65 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d  terned after dlm
6110: 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20  alloc().   Only 
6120: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e  one of SQLITE_EN
6130: 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64  ABLE_MEMSYS3 and
6140: 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   .  SQLITE_ENABL
6150: 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65  E_MEMSYS5 may be
6160: 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65   enabled at once
6170: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6180: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
6190: 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20  LE_MEMSYS5} {.  
61a0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
61b0: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
61c0: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
61d0: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
61e0: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
61f0: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
6200: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
6210: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
6220: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
6230: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
6240: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
6250: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
6260: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
6270: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
6280: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
6290: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
62a0: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
62b0: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
62c0: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20  ..  The MEMSYS5 
62d0: 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c  module rounds al
62e0: 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70  l allocations up
62f0: 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77   to the next pow
6300: 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20  er.  of two and 
6310: 75 73 65 73 20 61 20 66 69 72 73 74 2d 66 69 74  uses a first-fit
6320: 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f  , buddy-allocato
6330: 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68  r algorithm.  th
6340: 61 74 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f  at provides stro
6350: 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20 61 67  ng guarantees ag
6360: 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74  ainst fragmentat
6370: 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77  ion and breakdow
6380: 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63  n.  subject to c
6390: 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67  ertain operating
63a0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a   constraints..}.
63b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
63c0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52  {SQLITE_ENABLE_R
63d0: 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TREE} {.  This o
63e0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
63f0: 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 73  ite to include s
6400: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20  upport for the. 
6410: 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65   [rtree | R*Tree
6420: 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69 6f 6e   index extension
6430: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
6440: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52  TION {SQLITE_RTR
6450: 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20  EE_INT_ONLY} {. 
6460: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
6470: 69 73 20 75 73 65 64 20 74 6f 67 65 74 68 65 72  is used together
6480: 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e   with [SQLITE_EN
6490: 41 42 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e  ABLE_RTREE] then
64a0: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
64b0: 52 2a 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e  R*Tree extension
64c0: 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72  ] will only stor
64d0: 65 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20  e 32-bit signed 
64e0: 69 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69  integer.  coordi
64f0: 6e 61 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e  nates and all in
6500: 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69  ternal computati
6510: 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65  ons will be done
6520: 20 75 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a   using integers.
6530: 20 20 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f    instead of flo
6540: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
6550: 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ers..}..COMPILE_
6560: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
6570: 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a  NABLE_SQLLOG} {.
6580: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
6590: 61 62 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65  ables extra code
65a0: 20 28 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65   (especially the
65b0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
65c0: 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e  SQLLOG].  option
65d0: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
65e0: 66 69 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e  fig()]) that can
65f0: 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61   be used to crea
6600: 74 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20  te logs of all. 
6610: 20 53 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69   SQLite processi
6620: 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  ng performed by 
6630: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  an application. 
6640: 20 54 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20   These logs can 
6650: 62 65 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64  be useful.  in d
6660: 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e  oing off-line an
6670: 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 62 65  alysis of the be
6680: 68 61 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70  havior of an app
6690: 6c 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73  lication, and es
66a0: 70 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70  pecially.  for p
66b0: 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79  erformance analy
66c0: 73 69 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66  sis.  In order f
66d0: 6f 72 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e  or the SQLITE_EN
66e0: 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69  ABLE_SQLLOG opti
66f0: 6f 6e 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66  on to .  be usef
6700: 75 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63  ul, some extra c
6710: 6f 64 65 20 69 73 20 72 65 71 75 69 72 65 64 2e  ode is required.
6720: 20 20 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66    The .  <a href
6730: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c  ="http://www.sql
6740: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f  ite.org/src/doc/
6750: 74 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73  trunk/src/test_s
6760: 71 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73  qllog.c">"test_s
6770: 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73  qllog.c"</a>.  s
6780: 6f 75 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c  ource code.  fil
6790: 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20  e in the SQLite 
67a0: 73 6f 75 72 63 65 20 74 72 65 65 20 69 73 20 61  source tree is a
67b0: 20 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65   working example
67c0: 20 6f 66 20 74 68 65 20 72 65 71 75 69 72 65 64   of the required
67d0: 20 65 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20   extra.  code.  
67e0: 4f 6e 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64  On unix and wind
67f0: 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64  ows systems, a d
6800: 65 76 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70  eveloper can app
6810: 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20  end the text of 
6820: 74 68 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c  the.  "test_sqll
6830: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64  og.c" source cod
6840: 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e  e file to the en
6850: 64 20 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33  d of an "sqlite3
6860: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
6870: 2c 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68  ,.  recompile th
6880: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
6890: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
68a0: 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f  _ENABLE_SQLLOG o
68b0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63  ption, then .  c
68c0: 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75  ontrol logging u
68d0: 73 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  sing environment
68e0: 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65   variables.  See
68f0: 20 74 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d   the header comm
6900: 65 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74  ent on .  the "t
6910: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
6920: 75 72 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64  urce file for ad
6930: 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e  ditional detail.
6940: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
6950: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
6960: 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54  BLE_STAT2} {.  T
6970: 68 69 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20  his option used 
6980: 74 6f 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e  to cause the [AN
6990: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74  ALYZE] command t
69a0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65  o collect.  inde
69b0: 78 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  x histogram data
69c0: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
69d0: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
69e0: 65 2e 20 20 42 75 74 20 74 68 61 74 0a 20 20 66  e.  But that.  f
69f0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73  unctionality was
6a00: 20 73 75 70 65 72 63 65 64 65 64 20 62 79 20 5b   superceded by [
6a10: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
6a20: 41 54 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c  AT3] as of.  SQL
6a30: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
6a40: 39 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45  9.  The SQLITE_E
6a50: 4e 41 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70  NABLE_STAT2 comp
6a60: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a  ile-time option.
6a70: 20 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70    is now a no-op
6a80: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6a90: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
6aa0: 4c 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68  LE_STAT3} {.  Th
6ab0: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61  is option adds a
6ac0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
6ad0: 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  to the [ANALYZE]
6ae0: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a   command and to.
6af0: 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61    the [query pla
6b00: 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68  nner] that can h
6b10: 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68  elp SQLite to ch
6b20: 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65  ose a better que
6b30: 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20  ry plan.  under 
6b40: 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f  certain situatio
6b50: 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a  ns.  The [ANALYZ
6b60: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e  E] command is en
6b70: 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63  hanced to collec
6b80: 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  t.  histogram da
6b90: 74 61 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74  ta from the left
6ba0: 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20  -most column of 
6bb0: 65 61 63 68 20 69 6e 64 65 78 20 61 6e 64 20 73  each index and s
6bc0: 74 6f 72 65 20 74 68 61 74 20 64 61 74 61 0a 20  tore that data. 
6bd0: 20 69 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f   in the [sqlite_
6be0: 73 74 61 74 33 5d 20 74 61 62 6c 65 2e 20 20 54  stat3] table.  T
6bf0: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
6c00: 20 77 69 6c 6c 20 74 68 65 6e 20 75 73 65 20 74   will then use t
6c10: 68 65 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64  he.  histogram d
6c20: 61 74 61 20 74 6f 20 68 65 6c 70 20 69 74 20 6d  ata to help it m
6c30: 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78  ake better index
6c40: 20 63 68 6f 69 63 65 73 2e 0a 20 20 3c 70 3e 0a   choices..  <p>.
6c50: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6c60: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
6c70: 5f 53 54 41 54 34 7d 20 7b 0a 20 20 54 68 69 73  _STAT4} {.  This
6c80: 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61 64 64   option adds add
6c90: 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20 74 6f  itional logic to
6ca0: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
6cb0: 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a 20 20  ommand and to.  
6cc0: 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
6cd0: 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68 65 6c  er] that can hel
6ce0: 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68 6f 73  p SQLite to chos
6cf0: 65 20 61 20 62 65 74 74 65 72 20 71 75 65 72 79  e a better query
6d00: 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20 63 65   plan.  under ce
6d10: 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f 6e 73  rtain situations
6d20: 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  .  The [ANALYZE]
6d30: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 68 61   command is enha
6d40: 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63 74 0a  nced to collect.
6d50: 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61    histogram data
6d60: 20 66 72 6f 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e   from all column
6d70: 73 20 6f 66 20 65 76 65 72 79 20 69 6e 64 65 78  s of every index
6d80: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61 74 20   and store that 
6d90: 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20 5b 73  data.  in the [s
6da0: 71 6c 69 74 65 5f 73 74 61 74 34 5d 20 74 61 62  qlite_stat4] tab
6db0: 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79 20 70  le.  The query p
6dc0: 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 65 6e  lanner will then
6dd0: 20 75 73 65 20 74 68 65 0a 20 20 68 69 73 74 6f   use the.  histo
6de0: 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68 65 6c  gram data to hel
6df0: 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74 65 72  p it make better
6e00: 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 0a   index choices..
6e10: 20 20 3c 70 3e 0a 20 20 53 51 4c 49 54 45 5f 45    <p>.  SQLITE_E
6e20: 4e 41 42 4c 45 5f 53 54 41 54 34 20 69 73 20 61  NABLE_STAT4 is a
6e30: 6e 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 6f 66  n enhancement of
6e40: 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
6e50: 53 54 41 54 33 5d 2e 20 20 53 54 41 54 33 0a 20  STAT3].  STAT3. 
6e60: 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 68   only recorded h
6e70: 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20 66 6f  istogram data fo
6e80: 72 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20  r the left-most 
6e90: 63 6f 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69  column of each i
6ea0: 6e 64 65 78 0a 20 20 77 68 65 72 65 61 73 20 74  ndex.  whereas t
6eb0: 68 65 20 53 54 41 54 34 20 65 6e 68 61 6e 63 65  he STAT4 enhance
6ec0: 6d 65 6e 74 20 72 65 63 6f 72 64 73 20 68 69 73  ment records his
6ed0: 74 6f 67 72 61 70 68 20 64 61 74 61 20 66 72 6f  tograph data fro
6ee0: 6d 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 0a 20 20  m all columns.  
6ef0: 6f 66 20 65 61 63 68 20 69 6e 64 65 78 2e 0a 20  of each index.. 
6f00: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41   The [SQLITE_ENA
6f10: 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69  BLE_STAT3] compi
6f20: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
6f30: 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 69 73  s a no-op and is
6f40: 20 69 67 6e 6f 72 65 64 0a 20 20 69 66 20 74 68   ignored.  if th
6f50: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
6f60: 53 54 41 54 34 20 63 6f 6d 70 69 6c 65 2d 74 69  STAT4 compile-ti
6f70: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  me option is use
6f80: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
6f90: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
6fa0: 42 4c 45 5f 54 52 45 45 5f 45 58 50 4c 41 49 4e  BLE_TREE_EXPLAIN
6fb0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
6fc0: 6e 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66  n adds support f
6fd0: 6f 72 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  or the [SQLITE_T
6fe0: 45 53 54 43 54 52 4c 5f 45 58 50 4c 41 49 4e 5f  ESTCTRL_EXPLAIN_
6ff0: 53 54 4d 54 5d 20 74 65 73 74 2d 63 6f 6e 74 72  STMT] test-contr
7000: 6f 6c 0a 20 20 69 6e 20 74 68 65 20 53 51 4c 69  ol.  in the SQLi
7010: 74 65 20 63 6f 72 65 2e 20 20 57 68 65 6e 20 74  te core.  When t
7020: 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65  he [command-line
7030: 20 73 68 65 6c 6c 5d 20 69 73 20 61 6c 73 6f 20   shell] is also 
7040: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 20 20  compiled with.  
7050: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
7060: 20 22 2e 65 78 70 6c 61 69 6e 22 20 64 6f 74 2d   ".explain" dot-
7070: 63 6f 6d 6d 61 6e 64 20 65 6e 61 62 6c 65 73 20  command enables 
7080: 61 20 6d 6f 64 65 20 74 68 61 74 20 75 73 65 73  a mode that uses
7090: 20 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 54   the.  [SQLITE_T
70a0: 45 53 54 43 54 52 4c 5f 45 58 50 4c 41 49 4e 5f  ESTCTRL_EXPLAIN_
70b0: 53 54 4d 54 5d 20 69 6e 74 65 72 66 61 63 65 20  STMT] interface 
70c0: 74 6f 20 64 69 73 70 6c 61 79 20 61 6e 20 41 53  to display an AS
70d0: 43 49 49 2d 61 72 74 20 64 69 61 67 72 61 6d 0a  CII-art diagram.
70e0: 20 20 6f 66 20 74 68 65 20 70 61 72 73 65 20 74    of the parse t
70f0: 72 65 65 20 66 6f 72 20 65 61 63 68 20 53 51 4c  ree for each SQL
7100: 20 71 75 65 72 79 20 73 74 61 74 65 6d 65 6e 74   query statement
7110: 20 74 68 61 74 20 69 73 20 72 75 6e 20 69 6e 20   that is run in 
7120: 74 68 65 20 73 68 65 6c 6c 2e 0a 20 20 54 68 69  the shell..  Thi
7130: 73 20 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75  s mechanism is u
7140: 73 65 66 75 6c 20 66 6f 72 20 64 65 62 75 67 67  seful for debugg
7150: 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 70  ing the SQLite p
7160: 61 72 73 65 72 20 61 6e 64 20 63 6f 64 65 0a 20  arser and code. 
7170: 20 67 65 6e 65 72 61 74 6f 72 2e 20 20 54 68 69   generator.  Thi
7180: 73 20 77 68 6f 6c 65 20 6d 65 63 68 61 6e 69 73  s whole mechanis
7190: 6d 20 69 73 20 68 69 67 68 6c 79 20 65 78 70 65  m is highly expe
71a0: 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 63 6f 75  rimental and cou
71b0: 6c 64 20 63 68 61 6e 67 65 0a 20 20 64 72 61 73  ld change.  dras
71c0: 74 69 63 61 6c 6c 79 20 6f 72 20 62 65 20 65 6c  tically or be el
71d0: 69 6d 69 6e 61 74 65 64 20 69 6e 20 66 75 74 75  iminated in futu
71e0: 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53  re releases of S
71f0: 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  QLite..}..COMPIL
7200: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
7210: 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44  _ENABLE_UPDATE_D
7220: 45 4c 45 54 45 5f 4c 49 4d 49 54 7d 20 7b 0a 20  ELETE_LIMIT} {. 
7230: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
7240: 62 6c 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c  bles an optional
7250: 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c 49   ORDER BY and LI
7260: 4d 49 54 20 63 6c 61 75 73 65 20 6f 6e 20 0a 20  MIT clause on . 
7270: 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44   [UPDATE] and [D
7280: 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74  ELETE] statement
7290: 73 2e 0a 0a 20 20 3c 70 3e 49 66 20 74 68 69 73  s...  <p>If this
72a0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
72b0: 65 64 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74  ed, then it must
72c0: 20 61 6c 73 6f 20 62 65 20 0a 20 20 64 65 66 69   also be .  defi
72d0: 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ned when using t
72e0: 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20  he 'lemon' tool 
72f0: 74 6f 20 67 65 6e 65 72 61 74 65 20 61 20 70 61  to generate a pa
7300: 72 73 65 2e 63 0a 20 20 66 69 6c 65 2e 20 42 65  rse.c.  file. Be
7310: 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74  cause of this, t
7320: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 6f  his option may o
7330: 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e  nly be used when
7340: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
7350: 62 75 69 6c 74 0a 20 20 66 72 6f 6d 20 73 6f 75  built.  from sou
7360: 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68  rce, not from th
7370: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
7380: 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c   or from the col
7390: 6c 65 63 74 69 6f 6e 20 6f 66 0a 20 20 70 72 65  lection of.  pre
73a0: 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c 65  -packaged C file
73b0: 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 6e  s provided for n
73c0: 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61  on-Unix like pla
73d0: 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77 65  tforms on the we
73e0: 62 73 69 74 65 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a  bsite..  </p>.}.
73f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7400: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55  {SQLITE_ENABLE_U
7410: 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 7d 20 7b 0a  NLOCK_NOTIFY} {.
7420: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
7430: 61 62 6c 65 73 20 74 68 65 20 5b 73 71 6c 69 74  ables the [sqlit
7440: 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f 74 69 66 79  e3_unlock_notify
7450: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ()] interface an
7460: 64 0a 20 20 69 74 73 20 61 73 73 6f 63 69 61 74  d.  its associat
7470: 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  ed functionality
7480: 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75 6d  .  See the docum
7490: 65 6e 74 61 74 69 6f 6e 20 74 69 74 6c 65 64 0a  entation titled.
74a0: 20 20 5b 55 73 69 6e 67 20 74 68 65 20 53 51 4c    [Using the SQL
74b0: 69 74 65 20 55 6e 6c 6f 63 6b 20 4e 6f 74 69 66  ite Unlock Notif
74c0: 69 63 61 74 69 6f 6e 20 46 65 61 74 75 72 65 5d  ication Feature]
74d0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a   for additional.
74e0: 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 7d    information..}
74f0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
7500: 20 7b 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58   {SQLITE_SOUNDEX
7510: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
7520: 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73  n enables the [s
7530: 6f 75 6e 64 65 78 28 29 20 53 51 4c 20 66 75 6e  oundex() SQL fun
7540: 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ction]..}..COMPI
7550: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 54 52 41  LE_OPTION {YYTRA
7560: 43 4b 4d 41 58 53 54 41 43 4b 44 45 50 54 48 7d  CKMAXSTACKDEPTH}
7570: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
7580: 20 63 61 75 73 65 73 20 74 68 65 20 4c 41 4c 52   causes the LALR
7590: 28 31 29 20 70 61 72 73 65 72 20 73 74 61 63 6b  (1) parser stack
75a0: 20 64 65 70 74 68 20 74 6f 20 62 65 20 74 72 61   depth to be tra
75b0: 63 6b 65 64 0a 20 20 61 6e 64 20 72 65 70 6f 72  cked.  and repor
75c0: 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b 73  ted using the [s
75d0: 71 6c 69 74 65 33 5f 73 74 61 74 75 73 5d 28 5b  qlite3_status]([
75e0: 53 51 4c 49 54 45 5f 53 54 41 54 55 53 5f 50 41  SQLITE_STATUS_PA
75f0: 52 53 45 52 5f 53 54 41 43 4b 5d 2c 2e 2e 2e 29  RSER_STACK],...)
7600: 0a 20 20 69 6e 74 65 72 66 61 63 65 2e 20 20 53  .  interface.  S
7610: 51 4c 69 74 65 27 73 20 4c 41 4c 52 28 31 29 20  QLite's LALR(1) 
7620: 70 61 72 73 65 72 20 68 61 73 20 61 20 66 69 78  parser has a fix
7630: 65 64 20 73 74 61 63 6b 20 64 65 70 74 68 0a 20  ed stack depth. 
7640: 20 28 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20   (determined at 
7650: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73 69  compile-time usi
7660: 6e 67 20 74 68 65 20 5b 59 59 53 54 41 43 4b 44  ng the [YYSTACKD
7670: 45 50 54 48 5d 20 6f 70 74 69 6f 6e 73 29 2e 0a  EPTH] options)..
7680: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
7690: 6e 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c  n be used to hel
76a0: 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61  p determine if a
76b0: 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73  n application is
76c0: 0a 20 20 67 65 74 74 69 6e 67 20 63 6c 6f 73 65  .  getting close
76d0: 20 74 6f 20 65 78 63 65 65 64 69 6e 67 20 74 68   to exceeding th
76e0: 65 20 6d 61 78 69 6d 75 6d 20 4c 41 4c 52 28 31  e maximum LALR(1
76f0: 29 20 73 74 61 63 6b 20 64 65 70 74 68 2e 0a 7d  ) stack depth..}
7700: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
7710: 3d 22 64 69 73 61 62 6c 65 66 65 61 74 75 72 65  ="disablefeature
7720: 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20  s"></a>.<h2>1.5 
7730: 4f 70 74 69 6f 6e 73 20 54 6f 20 44 69 73 61 62  Options To Disab
7740: 6c 65 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d  le Features Norm
7750: 61 6c 6c 79 20 54 75 72 6e 65 64 20 4f 6e 3c 2f  ally Turned On</
7760: 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49  h2>..<tcl>.COMPI
7770: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
7780: 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 7d 20 7b  E_DISABLE_LFS} {
7790: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
77a0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
77b0: 69 73 20 64 65 66 69 6e 65 64 2c 20 6c 61 72 67  is defined, larg
77c0: 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74 0a 20  e file support. 
77d0: 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a 7d 0a   is disabled..}.
77e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
77f0: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
7800: 44 49 52 53 59 4e 43 7d 20 7b 0a 20 20 49 66 20  DIRSYNC} {.  If 
7810: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
7820: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
7830: 69 6e 65 64 2c 20 64 69 72 65 63 74 6f 72 79 20  ined, directory 
7840: 73 79 6e 63 73 0a 20 20 61 72 65 20 64 69 73 61  syncs.  are disa
7850: 62 6c 65 64 2e 20 20 53 51 4c 69 74 65 20 74 79  bled.  SQLite ty
7860: 70 69 63 61 6c 6c 79 20 61 74 74 65 6d 70 74 73  pically attempts
7870: 20 74 6f 20 73 79 6e 63 20 74 68 65 20 70 61 72   to sync the par
7880: 65 6e 74 0a 20 20 64 69 72 65 63 74 6f 72 79 20  ent.  directory 
7890: 77 68 65 6e 20 61 20 66 69 6c 65 20 69 73 20 64  when a file is d
78a0: 65 6c 65 74 65 64 20 74 6f 20 65 6e 73 75 72 65  eleted to ensure
78b0: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20   the directory. 
78c0: 20 65 6e 74 72 69 65 73 20 61 72 65 20 75 70 64   entries are upd
78d0: 61 74 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79  ated immediately
78e0: 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d   on disk..}..COM
78f0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
7900: 49 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 33  ITE_DISABLE_FTS3
7910: 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a 20 20 49 66  _UNICODE} {.  If
7920: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
7930: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
7940: 66 69 6e 65 64 2c 20 74 68 65 20 5b 75 6e 69 63  fined, the [unic
7950: 6f 64 65 36 31 5d 20 74 6f 6b 65 6e 69 7a 65 72  ode61] tokenizer
7960: 0a 20 20 69 6e 20 5b 46 54 53 33 5d 20 69 73 20  .  in [FTS3] is 
7970: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
7980: 20 62 75 69 6c 64 20 61 6e 64 20 69 73 20 75 6e   build and is un
7990: 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 0a 20 20  available to .  
79a0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a  applications..}.
79b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
79c0: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
79d0: 46 54 53 34 5f 44 45 46 45 52 52 45 44 7d 20 7b  FTS4_DEFERRED} {
79e0: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
79f0: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
7a00: 64 69 73 61 62 6c 65 73 20 74 68 65 20 22 64 65  disables the "de
7a10: 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70  ferred token" op
7a20: 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20 69 6e 20  timization.  in 
7a30: 5b 46 54 53 34 5d 2e 20 20 54 68 65 20 22 64 65  [FTS4].  The "de
7a40: 66 65 72 72 65 64 20 74 6f 6b 65 6e 22 20 6f 70  ferred token" op
7a50: 74 69 6d 69 7a 61 74 69 6f 6e 20 61 76 6f 69 64  timization avoid
7a60: 73 20 6c 6f 61 64 69 6e 67 20 6d 61 73 73 69 76  s loading massiv
7a70: 65 0a 20 20 70 6f 73 74 69 6e 67 20 6c 69 73 74  e.  posting list
7a80: 73 20 66 6f 72 20 74 65 72 6d 73 20 74 68 61 74  s for terms that
7a90: 20 61 72 65 20 69 6e 20 6d 6f 73 74 20 64 6f 63   are in most doc
7aa0: 75 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 63 6f  uments of the co
7ab0: 6c 6c 65 63 74 69 6f 6e 0a 20 20 61 6e 64 20 69  llection.  and i
7ac0: 6e 73 74 65 61 64 20 73 69 6d 70 6c 79 20 73 63  nstead simply sc
7ad0: 61 6e 73 20 66 6f 72 20 74 68 6f 73 65 20 74 6f  ans for those to
7ae0: 6b 65 6e 73 20 69 6e 20 74 68 65 20 64 6f 63 75  kens in the docu
7af0: 6d 65 6e 74 20 73 6f 75 72 63 65 2e 20 20 5b 46  ment source.  [F
7b00: 54 53 34 5d 0a 20 20 73 68 6f 75 6c 64 20 67 65  TS4].  should ge
7b10: 74 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61  t exactly the sa
7b20: 6d 65 20 61 6e 73 77 65 72 20 62 6f 74 68 20 77  me answer both w
7b30: 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75 74 20  ith and without 
7b40: 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f  this optimizatio
7b50: 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 74 63  n..}.</tcl>..<tc
7b60: 6c 3e 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e 74  l>.  hd_fragment
7b70: 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 0a   "omitfeatures".
7b80: 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 22 6f    hd_keywords "o
7b90: 6d 69 74 66 65 61 74 75 72 65 73 22 0a 3c 2f 74  mitfeatures".</t
7ba0: 63 6c 3e 0a 3c 68 32 3e 31 2e 36 20 4f 70 74 69  cl>.<h2>1.6 Opti
7bb0: 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65 61 74  ons To Omit Feat
7bc0: 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68  ures</h2>..<p>Th
7bd0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69  e following opti
7be0: 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  ons can be used 
7bf0: 74 6f 20 0a 5b 72 65 6c 66 6f 6f 74 70 72 69 6e  to .[relfootprin
7c00: 74 20 7c 20 72 65 64 75 63 65 20 74 68 65 20 73  t | reduce the s
7c10: 69 7a 65 20 6f 66 20 74 68 65 20 63 6f 6d 70 69  ize of the compi
7c20: 6c 65 64 20 6c 69 62 72 61 72 79 5d 0a 62 79 20  led library].by 
7c30: 6f 6d 69 74 74 69 6e 67 20 75 6e 75 73 65 64 20  omitting unused 
7c40: 66 65 61 74 75 72 65 73 2e 20 54 68 69 73 20 69  features. This i
7c50: 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20  s probably only 
7c60: 75 73 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64  useful.in embedd
7c70: 65 64 20 73 79 73 74 65 6d 73 20 77 68 65 72 65  ed systems where
7c80: 20 73 70 61 63 65 20 69 73 20 65 73 70 65 63 69   space is especi
7c90: 61 6c 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65  ally tight, as e
7ca0: 76 65 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61  ven with all.fea
7cb0: 74 75 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74  tures included t
7cc0: 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
7cd0: 79 20 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20  y is relatively 
7ce0: 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72  small. Don't for
7cf0: 67 65 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72  get.to tell your
7d00: 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74   compiler to opt
7d10: 69 6d 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79  imize for binary
7d20: 20 73 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20   size! (the -Os 
7d30: 6f 70 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20  option if.using 
7d40: 47 43 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79  GCC).  Telling y
7d50: 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20  our compiler to 
7d60: 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a  optimize for siz
7d70: 65 20 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20  e usually has.a 
7d80: 6d 75 63 68 20 6c 61 72 67 65 72 20 69 6d 70 61  much larger impa
7d90: 63 74 20 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f  ct on library fo
7da0: 6f 74 70 72 69 6e 74 20 74 68 61 6e 20 65 6d 70  otprint than emp
7db0: 6c 6f 79 69 6e 67 20 61 6e 79 20 6f 66 20 74 68  loying any of th
7dc0: 65 73 65 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ese.compile-time
7dd0: 20 6f 70 74 69 6f 6e 73 2e 20 20 59 6f 75 20 73   options.  You s
7de0: 68 6f 75 6c 64 20 61 6c 73 6f 20 76 65 72 69 66  hould also verif
7df0: 79 20 74 68 61 74 20 0a 3c 61 20 68 72 65 66 3d  y that .<a href=
7e00: 22 23 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e  "#debugoptions">
7e10: 64 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e  debugging option
7e20: 73 3c 2f 61 3e 20 61 72 65 20 64 69 73 61 62 6c  s</a> are disabl
7e30: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
7e40: 6d 61 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73  macros in this s
7e50: 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65  ection do not re
7e60: 71 75 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68  quire values. Th
7e70: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d  e following .com
7e80: 70 69 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65  pilation switche
7e90: 73 20 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73  s all have the s
7ea0: 61 6d 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a  ame effect:<br>.
7eb0: 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c  -DSQLITE_OMIT_AL
7ec0: 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53  TERTABLE<br>.-DS
7ed0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52  QLITE_OMIT_ALTER
7ee0: 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51  TABLE=1<br>.-DSQ
7ef0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
7f00: 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ABLE=0.</p>..<p>
7f10: 49 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20  If any of these 
7f20: 6f 70 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69  options are defi
7f30: 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61  ned, then the sa
7f40: 6d 65 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45  me set of SQLITE
7f50: 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69 6f 6e 73 20  _OMIT_*.options 
7f60: 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66  must also be def
7f70: 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20  ined when using 
7f80: 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c  the 'lemon' tool
7f90: 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65   to generate the
7fa0: 0a 70 61 72 73 65 2e 63 20 66 69 6c 65 20 61 6e  .parse.c file an
7fb0: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67  d when compiling
7fc0: 20 74 68 65 20 27 6d 6b 6b 65 79 77 6f 72 64 68   the 'mkkeywordh
7fd0: 61 73 68 27 20 74 6f 6f 6c 20 77 68 69 63 68 20  ash' tool which 
7fe0: 67 65 6e 65 72 61 74 65 73 20 0a 74 68 65 20 6b  generates .the k
7ff0: 65 79 77 6f 72 64 68 61 73 68 2e 68 20 66 69 6c  eywordhash.h fil
8000: 65 2e 0a 42 65 63 61 75 73 65 20 6f 66 20 74 68  e..Because of th
8010: 69 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e  is, these option
8020: 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  s may only be us
8030: 65 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72  ed when the libr
8040: 61 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f  ary is built.fro
8050: 6d 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72  m canonical sour
8060: 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65  ce, not from the
8070: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20   [amalgamation] 
8080: 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c  or from the coll
8090: 65 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d 70 61  ection of.pre-pa
80a0: 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70  ckaged C files p
80b0: 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d  rovided for non-
80c0: 55 6e 69 78 20 6c 69 6b 65 20 70 6c 61 74 66 6f  Unix like platfo
80d0: 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69  rms on the websi
80e0: 74 65 2e 0a 41 6e 79 20 53 51 4c 49 54 45 5f 4f  te..Any SQLITE_O
80f0: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 77 68  MIT_* options wh
8100: 69 63 68 20 63 61 6e 20 62 65 20 75 73 65 64 20  ich can be used 
8110: 64 69 72 65 63 74 6c 79 20 77 69 74 68 20 74 68  directly with th
8120: 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e [amalgamation]
8130: 20 0a 61 72 65 20 6c 69 73 74 65 64 20 62 65 6c   .are listed bel
8140: 6f 77 2c 20 68 6f 77 65 76 65 72 2c 20 74 68 65  ow, however, the
8150: 20 77 61 72 6e 69 6e 67 73 20 69 6e 20 74 68 65   warnings in the
8160: 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 67   following parag
8170: 72 61 70 68 20 73 68 6f 75 6c 64 20 62 65 20 6e  raph should be n
8180: 6f 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  oted..</p>..<blo
8190: 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49  ckquote>.<i><b>I
81a0: 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f  mportant Note:</
81b0: 62 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d  b> The SQLITE_OM
81c0: 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 64 6f 20  IT_* options do 
81d0: 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 74 68  not work with th
81e0: 65 0a 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d  e.[amalgamation]
81f0: 20 6f 72 20 77 69 74 68 20 70 72 65 2d 70 61 63   or with pre-pac
8200: 6b 61 67 65 64 20 43 20 63 6f 64 65 20 66 69 6c  kaged C code fil
8210: 65 73 2e 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54  es.  SQLITE_OMIT
8220: 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  _* compile-time.
8230: 6f 70 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72  options only wor
8240: 6b 20 63 6f 72 72 65 63 74 6c 79 20 77 68 65 6e  k correctly when
8250: 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
8260: 20 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20   from canonical 
8270: 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 3c 2f  source files..</
8280: 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  i>.</blockquote>
8290: 0a 0a 0a 3c 70 3e 53 70 65 63 69 61 6c 20 76 65  ...<p>Special ve
82a0: 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51  rsions of the SQ
82b0: 4c 69 74 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f  Lite amalgamatio
82c0: 6e 20 74 68 61 74 20 64 6f 20 77 6f 72 6b 20 77  n that do work w
82d0: 69 74 68 20 61 0a 70 72 65 64 65 74 65 72 6d 69  ith a.predetermi
82e0: 6e 65 64 20 73 65 74 20 6f 66 20 53 51 4c 49 54  ned set of SQLIT
82f0: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
8300: 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65   can be generate
8310: 64 2e 20 20 54 6f 20 64 6f 20 73 6f 2c 0a 6d 61  d.  To do so,.ma
8320: 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ke a copy of the
8330: 20 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75 78 2d   Makefile.linux-
8340: 67 63 63 20 6d 61 6b 65 66 69 6c 65 20 74 65 6d  gcc makefile tem
8350: 70 6c 61 74 65 20 69 6e 20 74 68 65 20 63 61 6e  plate in the can
8360: 6f 6e 69 63 61 6c 0a 73 6f 75 72 63 65 20 63 6f  onical.source co
8370: 64 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e  de distribution.
8380: 20 20 43 68 61 6e 67 65 20 74 68 65 20 6e 61 6d    Change the nam
8390: 65 20 6f 66 20 79 6f 75 72 20 63 6f 70 79 20 74  e of your copy t
83a0: 6f 20 73 69 6d 70 6c 79 20 22 4d 61 6b 65 66 69  o simply "Makefi
83b0: 6c 65 22 2e 0a 54 68 65 6e 20 65 64 69 74 20 22  le"..Then edit "
83c0: 4d 61 6b 65 66 69 6c 65 22 20 74 6f 20 73 65 74  Makefile" to set
83d0: 20 75 70 20 61 70 70 72 6f 70 72 69 61 74 65 20   up appropriate 
83e0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
83f0: 69 6f 6e 73 2e 20 20 54 68 65 6e 0a 74 79 70 65  ions.  Then.type
8400: 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74  :.<blockquote><t
8410: 74 3e 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 6d 61  t>make clean; ma
8420: 6b 65 20 73 71 6c 69 74 65 33 2e 63 3c 2f 74 74  ke sqlite3.c</tt
8430: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54  ></blockquote>.T
8440: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 22 73 71  he resulting "sq
8450: 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c 67 61 6d  lite3.c" amalgam
8460: 61 74 69 6f 6e 20 63 6f 64 65 20 66 69 6c 65 20  ation code file 
8470: 28 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61  (and its associa
8480: 74 65 64 0a 68 65 61 64 65 72 20 66 69 6c 65 20  ted.header file 
8490: 22 73 71 6c 69 74 65 33 2e 68 22 29 20 63 61 6e  "sqlite3.h") can
84a0: 20 74 68 65 6e 20 62 65 20 6d 6f 76 65 64 20 74   then be moved t
84b0: 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78 20 70 6c 61  o a non-unix pla
84c0: 74 66 6f 72 6d 0a 66 6f 72 20 66 69 6e 61 6c 20  tform.for final 
84d0: 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 73 69 6e  compilation usin
84e0: 67 20 61 20 6e 61 74 69 76 65 20 63 6f 6d 70 69  g a native compi
84f0: 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c  ler.</p>..<p>All
8500: 20 6f 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f   of the SQLITE_O
8510: 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 61 72  MIT_* options ar
8520: 65 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 3c 2f  e unsupported.</
8530: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
8540: 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74 61 6e 74  .<i><b>Important
8550: 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54 68 65 20 53   Note:</b>.The S
8560: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d  QLITE_OMIT_* com
8570: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8580: 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65  s are unsupporte
8590: 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75  d..</i></blockqu
85a0: 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 53 51  ote>..<p>.The SQ
85b0: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70  LITE_OMIT_* comp
85c0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
85d0: 20 61 72 65 20 75 73 75 61 6c 6c 79 20 75 6e 74   are usually unt
85e0: 65 73 74 65 64 20 61 6e 64 0a 61 72 65 20 61 6c  ested and.are al
85f0: 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 75  most certainly u
8600: 6e 74 65 73 74 65 64 20 69 6e 20 63 6f 6d 62 69  ntested in combi
8610: 6e 61 74 69 6f 6e 2e 0a 41 6e 79 20 6f 72 20 61  nation..Any or a
8620: 6c 6c 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69  ll of these opti
8630: 6f 6e 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76  ons may be remov
8640: 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65  ed from the code
8650: 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
8660: 73 65 73 0a 61 6e 64 20 77 69 74 68 6f 75 74 20  ses.and without 
8670: 77 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61 6e  warning.  For an
8680: 79 20 70 61 72 74 69 63 75 6c 61 72 20 72 65 6c  y particular rel
8690: 65 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74 68  ease, some of th
86a0: 65 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ese.options may 
86b0: 63 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69  cause compile-ti
86c0: 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20 66  me or run-time f
86d0: 61 69 6c 75 72 65 73 2c 20 70 61 72 74 69 63 75  ailures, particu
86e0: 6c 61 72 6c 79 0a 77 68 65 6e 20 75 73 65 64 20  larly.when used 
86f0: 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 77  in combination w
8700: 69 74 68 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e  ith other option
8710: 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f  s.</p>..<tcl>.CO
8720: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8730: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54  LITE_OMIT_ALTERT
8740: 41 42 4c 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74  ABLE} {.  When t
8750: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
8760: 66 69 6e 65 64 2c 20 74 68 65 20 0a 20 20 5b 41  fined, the .  [A
8770: 4c 54 45 52 20 54 41 42 4c 45 5d 20 63 6f 6d 6d  LTER TABLE] comm
8780: 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75  and is not inclu
8790: 64 65 64 20 69 6e 20 74 68 65 20 0a 20 20 6c 69  ded in the .  li
87a0: 62 72 61 72 79 2e 20 45 78 65 63 75 74 69 6e 67  brary. Executing
87b0: 20 61 6e 20 5b 41 4c 54 45 52 20 54 41 42 4c 45   an [ALTER TABLE
87c0: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  ] statement caus
87d0: 65 73 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  es a parse error
87e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
87f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8800: 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a 20 20 57 68  _ANALYZE} {.  Wh
8810: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
8820: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
8830: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
8840: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
8850: 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
8860: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
8870: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54  {SQLITE_OMIT_ATT
8880: 41 43 48 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ACH} {.  When th
8890: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
88a0: 69 6e 65 64 2c 20 74 68 65 20 5b 41 54 54 41 43  ined, the [ATTAC
88b0: 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20  H] and [DETACH] 
88c0: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 0a 20 20 6f  commands are.  o
88d0: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
88e0: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
88f0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
8900: 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54  _OMIT_AUTHORIZAT
8910: 49 4f 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  ION} {.  Definin
8920: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
8930: 69 74 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a  its the authoriz
8940: 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 66  ation callback f
8950: 65 61 74 75 72 65 20 66 72 6f 6d 20 74 68 65 0a  eature from the.
8960: 20 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 5b    library. The [
8970: 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
8980: 6f 72 69 7a 65 72 28 29 5d 20 41 50 49 20 66 75  orizer()] API fu
8990: 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72  nction is not pr
89a0: 65 73 65 6e 74 0a 20 20 69 6e 20 74 68 65 20 6c  esent.  in the l
89b0: 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  ibrary..}..COMPI
89c0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
89d0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45  E_OMIT_AUTOINCRE
89e0: 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MENT} {.  This o
89f0: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
8a00: 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 41 55   omit the .  [AU
8a10: 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 66 75 6e  TOINCREMENT] fun
8a20: 63 74 69 6f 6e 61 6c 69 74 79 2e 20 57 68 65 6e  ctionality. When
8a30: 20 74 68 69 73 20 0a 20 20 69 73 20 6d 61 63 72   this .  is macr
8a40: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 63 6f  o is defined, co
8a50: 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61  lumns declared a
8a60: 73 20 0a 20 20 22 5b 49 4e 54 45 47 45 52 20 50  s .  "[INTEGER P
8a70: 52 49 4d 41 52 59 20 4b 45 59 5d 20 41 55 54 4f  RIMARY KEY] AUTO
8a80: 49 4e 43 52 45 4d 45 4e 54 22 0a 20 20 62 65 68  INCREMENT".  beh
8a90: 61 76 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20  ave in the same 
8aa0: 77 61 79 20 61 73 20 63 6f 6c 75 6d 6e 73 20 64  way as columns d
8ab0: 65 63 6c 61 72 65 64 20 61 73 20 22 5b 49 4e 54  eclared as "[INT
8ac0: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
8ad0: 5d 22 20 77 68 65 6e 20 61 20 0a 20 20 4e 55 4c  ]" when a .  NUL
8ae0: 4c 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 54  L is inserted. T
8af0: 68 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  he sqlite_sequen
8b00: 63 65 20 73 79 73 74 65 6d 20 74 61 62 6c 65 20  ce system table 
8b10: 69 73 20 6e 65 69 74 68 65 72 20 63 72 65 61 74  is neither creat
8b20: 65 64 2c 20 6e 6f 72 0a 20 20 72 65 73 70 65 63  ed, nor.  respec
8b30: 74 65 64 20 69 66 20 69 74 20 61 6c 72 65 61 64  ted if it alread
8b40: 79 20 65 78 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d  y exists..}..COM
8b50: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
8b60: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
8b70: 54 7d 20 7b 0a 20 20 46 6f 72 20 62 61 63 6b 77  T} {.  For backw
8b80: 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69  ards compatibili
8b90: 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65  ty with older ve
8ba0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
8bb0: 20 74 68 61 74 20 6c 61 63 6b 0a 20 20 74 68 65   that lack.  the
8bc0: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
8bd0: 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61 63  lize()] interfac
8be0: 65 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  e, the [sqlite3_
8bf0: 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e  initialize()] in
8c00: 74 65 72 66 61 63 65 0a 20 20 69 73 20 63 61 6c  terface.  is cal
8c10: 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  led automaticall
8c20: 79 20 75 70 6f 6e 20 65 6e 74 72 79 20 74 6f 20  y upon entry to 
8c30: 63 65 72 74 61 69 6e 20 6b 65 79 20 69 6e 74 65  certain key inte
8c40: 72 66 61 63 65 73 20 73 75 63 68 20 61 73 0a 20  rfaces such as. 
8c50: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
8c60: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f  ], [sqlite3_vfs_
8c70: 72 65 67 69 73 74 65 72 28 29 5d 2c 20 61 6e 64  register()], and
8c80: 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74   [sqlite3_mprint
8c90: 66 28 29 5d 2e 0a 20 20 54 68 65 20 6f 76 65 72  f()]..  The over
8ca0: 68 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67  head of invoking
8cb0: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
8cc0: 6c 69 7a 65 28 29 5d 20 61 75 74 6f 6d 61 74 69  lize()] automati
8cd0: 63 61 6c 6c 79 20 69 6e 20 74 68 69 73 0a 20 20  cally in this.  
8ce0: 77 61 79 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  way may be omitt
8cf0: 65 64 20 62 79 20 62 75 69 6c 64 69 6e 67 20 53  ed by building S
8d00: 51 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 53  QLite with the S
8d10: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
8d20: 4e 49 54 0a 20 20 43 2d 70 72 65 70 72 6f 63 65  NIT.  C-preproce
8d30: 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20 57 68 65  ssor macro.  Whe
8d40: 6e 20 62 75 69 6c 74 20 75 73 69 6e 67 20 53 51  n built using SQ
8d50: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e  LITE_OMIT_AUTOIN
8d60: 49 54 2c 20 53 51 4c 69 74 65 0a 20 20 77 69 6c  IT, SQLite.  wil
8d70: 6c 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61  l not automatica
8d80: 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65 20 69  lly initialize i
8d90: 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20 61 70  tself and the ap
8da0: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72 65 71  plication is req
8db0: 75 69 72 65 64 0a 20 20 74 6f 20 69 6e 76 6f 6b  uired.  to invok
8dc0: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  e [sqlite3_initi
8dd0: 61 6c 69 7a 65 28 29 5d 20 64 69 72 65 63 74 6c  alize()] directl
8de0: 79 20 70 72 69 6f 72 20 74 6f 20 62 65 67 69 6e  y prior to begin
8df0: 6e 69 6e 67 20 75 73 65 20 6f 66 20 74 68 65 0a  ning use of the.
8e00: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
8e10: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
8e20: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
8e30: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
8e40: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
8e50: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
8e60: 74 20 74 68 65 20 0a 20 20 5b 61 75 74 6f 6d 61  t the .  [automa
8e70: 74 69 63 20 69 6e 64 65 78 69 6e 67 5d 20 66 75  tic indexing] fu
8e80: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 20 20 53  nctionality..  S
8e90: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
8ea0: 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54  _DEFAULT_AUTOMAT
8eb0: 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d 0a 0a 43 4f  IC_INDEX]..}..CO
8ec0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8ed0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45  LITE_OMIT_AUTORE
8ee0: 53 45 54 7d 20 7b 0a 20 20 42 79 20 64 65 66 61  SET} {.  By defa
8ef0: 75 6c 74 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ult, the [sqlite
8f00: 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65 72 66  3_step()] interf
8f10: 61 63 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74  ace will automat
8f20: 69 63 61 6c 6c 79 20 69 6e 76 6f 6b 65 0a 20 20  ically invoke.  
8f30: 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
8f40: 5d 20 74 6f 20 72 65 73 65 74 20 74 68 65 20 5b  ] to reset the [
8f50: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
8f60: 6e 74 5d 20 69 66 20 6e 65 63 65 73 73 61 72 79  nt] if necessary
8f70: 2e 20 20 54 68 69 73 0a 20 20 63 6f 6d 70 69 6c  .  This.  compil
8f80: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 68  e-time option ch
8f90: 61 6e 67 65 73 20 74 68 61 74 20 62 65 68 61 76  anges that behav
8fa0: 69 6f 72 20 73 6f 20 74 68 61 74 20 5b 73 71 6c  ior so that [sql
8fb0: 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c  ite3_step()] wil
8fc0: 6c 0a 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  l.  return [SQLI
8fd0: 54 45 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74  TE_MISUSE] if it
8fe0: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 61 66   called again af
8ff0: 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e  ter returning an
9000: 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 74  ything other.  t
9010: 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d  han [SQLITE_ROW]
9020: 2c 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c  , [SQLITE_BUSY],
9030: 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b   or [SQLITE_LOCK
9040: 45 44 5d 20 75 6e 6c 65 73 73 20 74 68 65 72 65  ED] unless there
9050: 20 77 61 73 20 61 6e 0a 20 20 69 6e 74 65 72 76   was an.  interv
9060: 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b 73  ening call to [s
9070: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2e  qlite3_reset()].
9080: 0a 0a 20 20 49 6e 20 53 51 4c 69 74 65 20 76 65  ..  In SQLite ve
9090: 72 73 69 6f 6e 20 33 2e 36 2e 32 33 2e 31 20 61  rsion 3.6.23.1 a
90a0: 6e 64 20 65 61 72 6c 69 65 72 2c 20 5b 73 71 6c  nd earlier, [sql
90b0: 69 74 65 33 5f 73 74 65 70 28 29 5d 20 75 73 65  ite3_step()] use
90c0: 64 20 74 6f 20 61 6c 77 61 79 73 0a 20 20 72 65  d to always.  re
90d0: 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53  turn [SQLITE_MIS
90e0: 55 53 45 5d 20 69 66 20 69 74 20 77 61 73 20 69  USE] if it was i
90f0: 6e 76 6f 6b 65 64 20 61 67 61 69 6e 20 61 66 74  nvoked again aft
9100: 65 72 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 79  er returning any
9110: 74 68 69 6e 67 0a 20 20 6f 74 68 65 72 20 74 68  thing.  other th
9120: 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 20  an [SQLITE_ROW] 
9130: 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72  without an inter
9140: 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 5b  vening call to [
9150: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d  sqlite3_reset()]
9160: 2e 0a 20 20 54 68 69 73 20 63 61 75 73 65 64 20  ..  This caused 
9170: 70 72 6f 62 6c 65 6d 73 20 6f 6e 20 73 6f 6d 65  problems on some
9180: 20 70 6f 6f 72 6c 79 20 77 72 69 74 74 65 6e 20   poorly written 
9190: 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69  smartphone appli
91a0: 63 61 74 69 6f 6e 73 20 77 68 69 63 68 0a 20 20  cations which.  
91b0: 64 69 64 20 6e 6f 74 20 63 6f 72 72 65 63 74 6c  did not correctl
91c0: 79 20 68 61 6e 64 6c 65 20 74 68 65 20 5b 53 51  y handle the [SQ
91d0: 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 61 6e 64  LITE_LOCKED] and
91e0: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 65   [SQLITE_BUSY] e
91f0: 72 72 6f 72 20 0a 20 20 72 65 74 75 72 6e 73 2e  rror .  returns.
9200: 20 20 52 61 74 68 65 72 20 74 68 61 6e 20 66 69    Rather than fi
9210: 78 20 74 68 65 20 6d 61 6e 79 20 64 65 66 65 63  x the many defec
9220: 74 69 76 65 20 73 6d 61 72 74 70 68 6f 6e 65 20  tive smartphone 
9230: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 0a 20  applications, . 
9240: 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66   the behavior of
9250: 20 53 51 4c 69 74 65 20 77 61 73 20 63 68 61 6e   SQLite was chan
9260: 67 65 64 20 69 6e 20 33 2e 36 2e 32 33 2e 32 20  ged in 3.6.23.2 
9270: 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
9280: 20 72 65 73 65 74 0a 20 20 74 68 65 20 70 72 65   reset.  the pre
9290: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e  pared statement.
92a0: 20 20 42 75 74 20 74 68 61 74 20 63 68 61 6e 67    But that chang
92b0: 65 64 20 63 61 75 73 65 64 20 69 73 73 75 65 73  ed caused issues
92c0: 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 69 6d 70   in other .  imp
92d0: 72 6f 70 65 72 6c 79 20 69 6d 70 6c 65 6d 65 6e  roperly implemen
92e0: 74 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ted applications
92f0: 20 74 68 61 74 20 77 65 72 65 20 61 63 74 75 61   that were actua
9300: 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a 20 20 66 6f  lly looking.  fo
9310: 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 4d 49 53  r an [SQLITE_MIS
9320: 55 53 45 5d 20 72 65 74 75 72 6e 20 74 6f 20 74  USE] return to t
9330: 65 72 6d 69 6e 61 74 65 20 74 68 65 69 72 20 71  erminate their q
9340: 75 65 72 79 20 6c 6f 6f 70 73 2e 20 20 28 41 6e  uery loops.  (An
9350: 79 74 69 6d 65 0a 20 20 61 6e 20 61 70 70 6c 69  ytime.  an appli
9360: 63 61 74 69 6f 6e 20 67 65 74 73 20 61 6e 20 53  cation gets an S
9370: 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65 72 72  QLITE_MISUSE err
9380: 6f 72 20 63 6f 64 65 20 66 72 6f 6d 20 53 51 4c  or code from SQL
9390: 69 74 65 2c 20 74 68 61 74 20 6d 65 61 6e 73 20  ite, that means 
93a0: 74 68 65 0a 20 20 61 70 70 6c 69 63 61 74 69 6f  the.  applicatio
93b0: 6e 20 69 73 20 6d 69 73 75 73 69 6e 67 20 74 68  n is misusing th
93c0: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  e SQLite interfa
93d0: 63 65 20 61 6e 64 20 69 73 20 74 68 75 73 20 69  ce and is thus i
93e0: 6e 63 6f 72 72 65 63 74 6c 79 0a 20 20 69 6d 70  ncorrectly.  imp
93f0: 6c 65 6d 65 6e 74 65 64 2e 29 20 20 54 68 65 20  lemented.)  The 
9400: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
9410: 52 45 53 45 54 20 69 6e 74 65 72 66 61 63 65 20  RESET interface 
9420: 77 61 73 20 61 64 64 65 64 20 74 6f 20 53 51 4c  was added to SQL
9430: 69 74 65 0a 20 20 76 65 72 73 69 6f 6e 20 33 2e  ite.  version 3.
9440: 37 2e 35 20 69 6e 20 61 6e 20 65 66 66 6f 72 74  7.5 in an effort
9450: 20 74 6f 20 67 65 74 20 61 6c 6c 20 6f 66 20 74   to get all of t
9460: 68 65 20 28 62 72 6f 6b 65 6e 29 0a 20 20 61 70  he (broken).  ap
9470: 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 77 6f  plications to wo
9480: 72 6b 20 61 67 61 69 6e 20 77 69 74 68 6f 75 74  rk again without
9490: 20 68 61 76 69 6e 67 20 74 6f 20 61 63 74 75 61   having to actua
94a0: 6c 6c 79 20 66 69 78 20 74 68 65 20 61 70 70 6c  lly fix the appl
94b0: 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d  ications..}..COM
94c0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
94d0: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43  ITE_OMIT_AUTOVAC
94e0: 55 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  UUM} {.  If this
94f0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
9500: 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20  ed, the library 
9510: 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 6f 72  cannot create or
9520: 20 77 72 69 74 65 20 74 6f 20 0a 20 20 64 61 74   write to .  dat
9530: 61 62 61 73 65 73 20 74 68 61 74 20 73 75 70 70  abases that supp
9540: 6f 72 74 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d  ort [auto_vacuum
9550: 5d 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61  ]..  Executing a
9560: 20 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61   [PRAGMA auto_va
9570: 63 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e 74 20  cuum] statement 
9580: 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 0a  is not an error.
9590: 20 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e    (since unknown
95a0: 20 50 52 41 47 4d 41 73 20 61 72 65 20 73 69 6c   PRAGMAs are sil
95b0: 65 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29 2c 20  ently ignored), 
95c0: 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 74  but does not ret
95d0: 75 72 6e 20 61 20 76 61 6c 75 65 0a 20 20 6f 72  urn a value.  or
95e0: 20 6d 6f 64 69 66 79 20 74 68 65 20 61 75 74 6f   modify the auto
95f0: 2d 76 61 63 75 75 6d 20 66 6c 61 67 20 69 6e 20  -vacuum flag in 
9600: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
9610: 65 2e 20 49 66 20 61 20 64 61 74 61 62 61 73 65  e. If a database
9620: 20 74 68 61 74 0a 20 20 73 75 70 70 6f 72 74 73   that.  supports
9630: 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69 73 20   auto-vacuum is 
9640: 6f 70 65 6e 65 64 20 62 79 20 61 20 6c 69 62 72  opened by a libr
9650: 61 72 79 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  ary compiled wit
9660: 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69  h this option, i
9670: 74 0a 20 20 69 73 20 61 75 74 6f 6d 61 74 69 63  t.  is automatic
9680: 61 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e 20 72  ally opened in r
9690: 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d  ead-only mode..}
96a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
96b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45   {SQLITE_OMIT_BE
96c0: 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49  TWEEN_OPTIMIZATI
96d0: 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
96e0: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
96f0: 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65 73 20   use of indices 
9700: 77 69 74 68 20 57 48 45 52 45 20 63 6c 61 75 73  with WHERE claus
9710: 65 20 74 65 72 6d 73 0a 20 20 74 68 61 74 20 65  e terms.  that e
9720: 6d 70 6c 6f 79 20 74 68 65 20 42 45 54 57 45 45  mploy the BETWEE
9730: 4e 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43  N operator..}..C
9740: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
9750: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f  QLITE_OMIT_BLOB_
9760: 4c 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57 68 65  LITERAL} {.  Whe
9770: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
9780: 20 64 65 66 69 6e 65 64 2c 20 69 74 20 69 73 20   defined, it is 
9790: 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  not possible to 
97a0: 73 70 65 63 69 66 79 20 61 20 62 6c 6f 62 20 69  specify a blob i
97b0: 6e 0a 20 20 61 6e 20 53 51 4c 20 73 74 61 74 65  n.  an SQL state
97c0: 6d 65 6e 74 20 75 73 69 6e 67 20 74 68 65 20 58  ment using the X
97d0: 27 41 42 43 44 27 20 73 79 6e 74 61 78 2e 0a 7d  'ABCD' syntax..}
97e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
97f0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 54   {SQLITE_OMIT_BT
9800: 52 45 45 43 4f 55 4e 54 7d 20 7b 0a 20 20 57 68  REECOUNT} {.  Wh
9810: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
9820: 73 20 64 65 66 69 6e 65 64 2c 20 61 6e 20 6f 70  s defined, an op
9830: 74 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20  timization that 
9840: 61 63 63 65 6c 65 72 61 74 65 73 20 63 6f 75 6e  accelerates coun
9850: 74 69 6e 67 0a 20 20 61 6c 6c 20 65 6e 74 72 69  ting.  all entri
9860: 65 73 20 69 6e 20 61 20 74 61 62 6c 65 20 28 69  es in a table (i
9870: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 61  n other words, a
9880: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74  n optimization t
9890: 68 61 74 20 68 65 6c 70 73 0a 20 20 22 53 45 4c  hat helps.  "SEL
98a0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
98b0: 4d 20 74 61 62 6c 65 22 20 72 75 6e 20 66 61 73  M table" run fas
98c0: 74 65 72 29 20 69 73 20 6f 6d 69 74 74 65 64 2e  ter) is omitted.
98d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
98e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
98f0: 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20 7b 0a  BUILTIN_TEST} {.
9900: 20 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c    A standard SQL
9910: 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c 75 64  ite build includ
9920: 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e  es a small amoun
9930: 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f 6e 74 72  t of logic contr
9940: 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68 65 20 5b  olled.  by the [
9950: 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e  sqlite3_test_con
9960: 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61 63  trol()] interfac
9970: 65 20 74 68 61 74 20 69 73 20 75 73 65 64 20 74  e that is used t
9980: 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70 61 72  o exercise.  par
9990: 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  ts of the SQLite
99a0: 20 63 6f 72 65 20 74 68 61 74 20 61 72 65 20 64   core that are d
99b0: 69 66 66 69 63 75 6c 74 20 74 6f 20 63 6f 6e 74  ifficult to cont
99c0: 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75 72 65 20  rol and measure 
99d0: 75 73 69 6e 67 0a 20 20 74 68 65 20 73 74 61 6e  using.  the stan
99e0: 64 61 72 64 20 41 50 49 2e 20 20 54 68 69 73 20  dard API.  This 
99f0: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61  option omits tha
9a00: 74 20 62 75 69 6c 74 2d 69 6e 20 74 65 73 74 20  t built-in test 
9a10: 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  logic..}..COMPIL
9a20: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9a30: 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20  _OMIT_CAST} {.  
9a40: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
9a50: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69  es SQLite to omi
9a60: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  t support for th
9a70: 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f 72 2e  e CAST operator.
9a80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9a90: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9aa0: 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  CHECK} {.  This 
9ab0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
9ac0: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
9ad0: 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63  port for CHECK c
9ae0: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20 54 68  onstraints..  Th
9af0: 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20 73 74  e parser will st
9b00: 69 6c 6c 20 61 63 63 65 70 74 20 43 48 45 43 4b  ill accept CHECK
9b10: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20   constraints in 
9b20: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 0a  SQL statements,.
9b30: 20 20 74 68 65 79 20 77 69 6c 6c 20 6a 75 73 74    they will just
9b40: 20 6e 6f 74 20 62 65 20 65 6e 66 6f 72 63 65 64   not be enforced
9b50: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
9b60: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
9b70: 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44  _COMPILEOPTION_D
9b80: 49 41 47 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  IAGS} {.  This o
9b90: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
9ba0: 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 69 6c   omit the compil
9bb0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 69  e-time option di
9bc0: 61 67 6e 6f 73 74 69 63 73 20 61 76 61 69 6c 61  agnostics availa
9bd0: 62 6c 65 0a 20 20 69 6e 20 53 51 4c 69 74 65 2c  ble.  in SQLite,
9be0: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 5b   including the [
9bf0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
9c00: 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e  ption_used()] an
9c10: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  d.  [sqlite3_com
9c20: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
9c30: 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e  ] C/C++ function
9c40: 73 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  s, the.  [sqlite
9c50: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
9c60: 73 65 64 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  sed()] and [sqli
9c70: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
9c80: 5f 67 65 74 28 29 5d 20 53 51 4c 20 66 75 6e 63  _get()] SQL func
9c90: 74 69 6f 6e 73 2c 0a 20 20 61 6e 64 20 74 68 65  tions,.  and the
9ca0: 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e   [compile_option
9cb0: 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f  s pragma]..}..CO
9cc0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9cd0: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45  LITE_OMIT_COMPLE
9ce0: 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TE} {.  This opt
9cf0: 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b  ion causes the [
9d00: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
9d10: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
9d20: 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20  _complete16()]. 
9d30: 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62   interfaces to b
9d40: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f  e omitted..}..CO
9d50: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9d60: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55  LITE_OMIT_COMPOU
9d70: 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54  ND_SELECT} {.  T
9d80: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
9d90: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63  ed to omit the c
9da0: 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d  ompound [SELECT]
9db0: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20   functionality. 
9dc0: 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74  .  [SELECT] stat
9dd0: 65 6d 65 6e 74 73 20 74 68 61 74 20 75 73 65 20  ements that use 
9de0: 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e  the .  UNION, UN
9df0: 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45  ION ALL, INTERSE
9e00: 43 54 20 6f 72 20 45 58 43 45 50 54 20 63 6f 6d  CT or EXCEPT com
9e10: 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 6f 70 65  pound SELECT ope
9e20: 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63  rators will .  c
9e30: 61 75 73 65 20 61 20 70 61 72 73 65 20 65 72 72  ause a parse err
9e40: 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49 4e 53 45 52  or...  An [INSER
9e50: 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74  T] statement wit
9e60: 68 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65  h multiple value
9e70: 73 20 69 6e 20 74 68 65 20 56 41 4c 55 45 53 20  s in the VALUES 
9e80: 63 6c 61 75 73 65 20 69 73 0a 20 20 69 6d 70 6c  clause is.  impl
9e90: 65 6d 65 6e 74 65 64 20 69 6e 74 65 72 6e 61 6c  emented internal
9ea0: 6c 79 20 61 73 20 61 20 63 6f 6d 70 6f 75 6e 64  ly as a compound
9eb0: 20 53 45 4c 45 43 54 2e 20 20 48 65 6e 63 65 2c   SELECT.  Hence,
9ec0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 6c 73   this option als
9ed0: 6f 0a 20 20 64 69 73 61 62 6c 65 73 20 74 68 65  o.  disables the
9ee0: 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73 65   ability to inse
9ef0: 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 61 20 73  rt more than a s
9f00: 69 6e 67 6c 65 20 72 6f 77 20 75 73 69 6e 67 20  ingle row using 
9f10: 61 6e 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  an.  INSERT INTO
9f20: 20 2e 2e 2e 20 56 41 4c 55 45 53 20 2e 2e 2e 20   ... VALUES ... 
9f30: 73 74 61 74 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f  statement..}..CO
9f40: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9f50: 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49  LITE_OMIT_DATETI
9f60: 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66  ME_FUNCS} {.  If
9f70: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
9f80: 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 27  defined, SQLite'
9f90: 73 20 62 75 69 6c 74 2d 69 6e 20 64 61 74 65 20  s built-in date 
9fa0: 61 6e 64 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c  and time manipul
9fb0: 61 74 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e  ation.  function
9fc0: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 53  s are omitted. S
9fd0: 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65  pecifically, the
9fe0: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a   SQL functions j
9ff0: 75 6c 69 61 6e 64 61 79 28 29 2c 20 64 61 74 65  ulianday(), date
a000: 28 29 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64 61  (),.  time(), da
a010: 74 65 74 69 6d 65 28 29 20 61 6e 64 20 73 74 72  tetime() and str
a020: 66 74 69 6d 65 28 29 20 61 72 65 20 6e 6f 74 20  ftime() are not 
a030: 61 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 20 64  available. The d
a040: 65 66 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20  efault column.  
a050: 76 61 6c 75 65 73 20 43 55 52 52 45 4e 54 5f 54  values CURRENT_T
a060: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
a070: 45 20 61 6e 64 20 43 55 52 52 45 4e 54 5f 54 49  E and CURRENT_TI
a080: 4d 45 53 54 41 4d 50 20 61 72 65 20 73 74 69 6c  MESTAMP are stil
a090: 6c 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a  l available..}..
a0a0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a0b0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c  SQLITE_OMIT_DECL
a0c0: 54 59 50 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TYPE} {.  This o
a0d0: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
a0e0: 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70  ite to omit supp
a0f0: 6f 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 73  ort for the.  [s
a100: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
a110: 63 6c 74 79 70 65 28 29 5d 20 61 6e 64 20 5b 73  cltype()] and [s
a120: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
a130: 63 6c 74 79 70 65 31 36 28 29 5d 0a 20 20 69 6e  cltype16()].  in
a140: 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d  terfaces..}..COM
a150: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a160: 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41  ITE_OMIT_DEPRECA
a170: 54 45 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  TED} {.  This op
a180: 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69  tion causes SQLi
a190: 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f  te to omit suppo
a1a0: 72 74 20 66 6f 72 20 69 6e 74 65 72 66 61 63 65  rt for interface
a1b0: 73 0a 20 20 6d 61 72 6b 65 64 20 61 73 20 64 65  s.  marked as de
a1c0: 70 72 65 63 61 74 65 64 2e 20 20 54 68 69 73 20  precated.  This 
a1d0: 69 6e 63 6c 75 64 65 73 20 0a 20 20 5b 73 71 6c  includes .  [sql
a1e0: 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
a1f0: 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  ount()],.  [sqli
a200: 74 65 33 5f 65 78 70 69 72 65 64 28 29 5d 2c 0a  te3_expired()],.
a210: 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 6e 73    [sqlite3_trans
a220: 66 65 72 5f 62 69 6e 64 69 6e 67 73 28 29 5d 2c  fer_bindings()],
a230: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 67 6c 6f 62  .  [sqlite3_glob
a240: 61 6c 5f 72 65 63 6f 76 65 72 28 29 5d 2c 0a 20  al_recover()],. 
a250: 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64   [sqlite3_thread
a260: 5f 63 6c 65 61 6e 75 70 28 29 5d 20 61 6e 64 0a  _cleanup()] and.
a270: 20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72    [sqlite3_memor
a280: 79 5f 61 6c 61 72 6d 28 29 5d 20 69 6e 74 65 72  y_alarm()] inter
a290: 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  faces..}..COMPIL
a2a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
a2b0: 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a  _OMIT_DISKIO} {.
a2c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
a2d0: 69 74 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 20  its all support 
a2e0: 66 6f 72 20 77 72 69 74 69 6e 67 20 74 6f 20 74  for writing to t
a2f0: 68 65 20 64 69 73 6b 20 61 6e 64 20 66 6f 72 63  he disk and forc
a300: 65 73 0a 20 20 64 61 74 61 62 61 73 65 73 20 74  es.  databases t
a310: 6f 20 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f 72  o exist in memor
a320: 79 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20 6f 70  y only.  This op
a330: 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65 65  tion has not bee
a340: 6e 20 0a 20 20 6d 61 69 6e 74 61 69 6e 65 64 20  n .  maintained 
a350: 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 64 6f 65  and probably doe
a360: 73 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20  s not work with 
a370: 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  newer versions o
a380: 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d  f SQLite..}..COM
a390: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a3a0: 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e  ITE_OMIT_EXPLAIN
a3b0: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
a3c0: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
a3d0: 73 20 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d 20  s the [EXPLAIN] 
a3e0: 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f 6d  command to be om
a3f0: 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20  itted from the. 
a400: 20 6c 69 62 72 61 72 79 2e 20 41 74 74 65 6d 70   library. Attemp
a410: 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20  ting to execute 
a420: 61 6e 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74 61  an [EXPLAIN] sta
a430: 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75 73  tement will caus
a440: 65 20 61 20 70 61 72 73 65 0a 20 20 65 72 72 6f  e a parse.  erro
a450: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
a460: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
a470: 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d 20  T_FLAG_PRAGMAS} 
a480: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a490: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
a4a0: 72 20 61 20 73 75 62 73 65 74 20 6f 66 20 5b 50  r a subset of [P
a4b0: 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73 20  RAGMA] commands 
a4c0: 74 68 61 74 0a 20 20 71 75 65 72 79 20 61 6e 64  that.  query and
a4d0: 20 73 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72 6f   set boolean pro
a4e0: 70 65 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50  perties..}..COMP
a4f0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a500: 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47  TE_OMIT_FLOATING
a510: 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69 73  _POINT} {.  This
a520: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
a530: 74 6f 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e 67  to omit floating
a540: 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73 75  -point number su
a550: 70 70 6f 72 74 20 66 72 6f 6d 20 74 68 65 20 53  pport from the S
a560: 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e  QLite.  library.
a570: 20 57 68 65 6e 20 73 70 65 63 69 66 69 65 64 2c   When specified,
a580: 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 66 6c   specifying a fl
a590: 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d  oating point num
a5a0: 62 65 72 20 61 73 20 61 20 6c 69 74 65 72 61 6c  ber as a literal
a5b0: 20 0a 20 20 28 69 2e 65 2e 20 22 31 2e 30 31 22   .  (i.e. "1.01"
a5c0: 29 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20 70  ) results in a p
a5d0: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 3c  arse error...  <
a5e0: 70 3e 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c  p>In the future,
a5f0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   this option may
a600: 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f 74   also disable ot
a610: 68 65 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  her floating poi
a620: 6e 74 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c  nt .  functional
a630: 69 74 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  ity, for example
a640: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65   the [sqlite3_re
a650: 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c 20  sult_double()], 
a660: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  .  [sqlite3_bind
a670: 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71 6c  _double()], [sql
a680: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
a690: 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69  e()] and.  [sqli
a6a0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
a6b0: 65 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f  e()] API functio
a6c0: 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f  ns..  </p>.}..CO
a6d0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a6e0: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47  LITE_OMIT_FOREIG
a6f0: 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74 68  N_KEY} {.  If th
a700: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
a710: 69 6e 65 64 2c 20 74 68 65 6e 20 5b 66 6f 72 65  ined, then [fore
a720: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
a730: 6e 74 5d 20 73 79 6e 74 61 78 20 69 73 0a 20 20  nt] syntax is.  
a740: 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 2e 0a  not recognized..
a750: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
a760: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47  N {SQLITE_OMIT_G
a770: 45 54 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68  ET_TABLE} {.  Th
a780: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
a790: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71   support for [sq
a7a0: 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
a7b0: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
a7c0: 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20  3_free_table()] 
a7d0: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  to be omitted..}
a7e0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
a7f0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e   {SQLITE_OMIT_IN
a800: 43 52 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69 73  CRBLOB} {.  This
a810: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
a820: 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69  upport for [sqli
a830: 74 65 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72 65  te3_blob | incre
a840: 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d  mental BLOB I/O]
a850: 0a 20 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64  .  to be omitted
a860: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a870: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
a880: 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b  _INTEGRITY_CHECK
a890: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a8a0: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
a8b0: 66 6f 72 20 74 68 65 20 5b 69 6e 74 65 67 72 69  for the [integri
a8c0: 74 79 5f 63 68 65 63 6b 20 70 72 61 67 6d 61 5d  ty_check pragma]
a8d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a8e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
a8f0: 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49  _LIKE_OPTIMIZATI
a900: 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  ON} {.  This opt
a910: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65  ion disables the
a920: 20 61 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69   ability of SQLi
a930: 74 65 20 74 6f 20 75 73 65 20 69 6e 64 69 63 65  te to use indice
a940: 73 20 74 6f 20 68 65 6c 70 0a 20 20 72 65 73 6f  s to help.  reso
a950: 6c 76 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b  lve [LIKE] and [
a960: 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73 20  GLOB] operators 
a970: 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  in a WHERE claus
a980: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
a990: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
a9a0: 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e  T_LOAD_EXTENSION
a9b0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a9c0: 6e 20 6f 6d 69 74 73 20 74 68 65 20 65 6e 74 69  n omits the enti
a9d0: 72 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61  re extension loa
a9e0: 64 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20 66  ding mechanism f
a9f0: 72 6f 6d 0a 20 20 53 51 4c 69 74 65 2c 20 69 6e  rom.  SQLite, in
aa00: 63 6c 75 64 69 6e 67 20 5b 73 71 6c 69 74 65 33  cluding [sqlite3
aa10: 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74  _enable_load_ext
aa20: 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 0a 20 20  ension()] and.  
aa30: 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
aa40: 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72  tension()] inter
aa50: 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  faces..}..COMPIL
aa60: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
aa70: 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d  _OMIT_LOCALTIME}
aa80: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
aa90: 20 6f 6d 69 74 73 20 74 68 65 20 22 6c 6f 63 61   omits the "loca
aaa0: 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20  ltime" modifier 
aab0: 66 72 6f 6d 20 74 68 65 20 64 61 74 65 20 61 6e  from the date an
aac0: 64 20 74 69 6d 65 0a 20 20 66 75 6e 63 74 69 6f  d time.  functio
aad0: 6e 73 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e  ns.  This option
aae0: 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73   is sometimes us
aaf0: 65 66 75 6c 20 77 68 65 6e 20 74 72 79 69 6e 67  eful when trying
ab00: 20 74 6f 20 63 6f 6d 70 69 6c 65 0a 20 20 74 68   to compile.  th
ab10: 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
ab20: 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 61 20 70  functions on a p
ab30: 6c 61 74 66 6f 72 6d 20 74 68 61 74 20 64 6f 65  latform that doe
ab40: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 74 68  s not support th
ab50: 65 0a 20 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c  e.  concept of l
ab60: 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f  ocal time..}..CO
ab70: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
ab80: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53  LITE_OMIT_LOOKAS
ab90: 49 44 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  IDE} {.  This op
aba0: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 5b  tion omits the [
abb0: 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79  lookaside memory
abc0: 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a   allocator]..}..
abd0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
abe0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f  SQLITE_OMIT_MEMO
abf0: 52 59 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20 74  RYDB} {.  When t
ac00: 68 69 73 20 69 73 20 64 65 66 69 6e 65 64 2c 20  his is defined, 
ac10: 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73  the library does
ac20: 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74 68 65   not respect the
ac30: 20 73 70 65 63 69 61 6c 20 64 61 74 61 62 61 73   special databas
ac40: 65 0a 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72  e.  name ":memor
ac50: 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75 73  y:" (normally us
ac60: 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e 20  ed to create an 
ac70: 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62  [in-memory datab
ac80: 61 73 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a 6d  ase]). If .  ":m
ac90: 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73 73 65  emory:" is passe
aca0: 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70  d to [sqlite3_op
acb0: 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  en()], [sqlite3_
acc0: 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20 20  open16()], or.  
acd0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
ace0: 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69 74 68  ()], a file with
acf0: 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c 20   this name will 
ad00: 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72 20  be .  opened or 
ad10: 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  created..}..COMP
ad20: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
ad30: 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d  TE_OMIT_OR_OPTIM
ad40: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69  IZATION} {.  Thi
ad50: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
ad60: 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66  s the ability of
ad70: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 61   SQLite to use a
ad80: 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68 65 72  n index together
ad90: 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20 6f 66  .  with terms of
ada0: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20   a WHERE clause 
adb0: 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68 65  connected by the
adc0: 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a   OR operator..}.
add0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ade0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47  {SQLITE_OMIT_PAG
adf0: 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20  ER_PRAGMAS} {.  
ae00: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
ae10: 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d  tion omits pragm
ae20: 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68  as related to th
ae30: 65 20 70 61 67 65 72 20 73 75 62 73 79 73 74 65  e pager subsyste
ae40: 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75  m from .  the bu
ae50: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
ae60: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
ae70: 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20 20  MIT_PRAGMA} {.  
ae80: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
ae90: 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  sed to omit the 
aea0: 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64  [PRAGMA] command
aeb0: 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72  .  from the libr
aec0: 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 69  ary. Note that i
aed0: 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64  t is useful to d
aee0: 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72 6f 73  efine the macros
aef0: 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73 70 65   that omit.  spe
af00: 63 69 66 69 63 20 70 72 61 67 6d 61 73 20 69 6e  cific pragmas in
af10: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 69   addition to thi
af20: 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79 20 61  s, as they may a
af30: 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70 70 6f  lso remove suppo
af40: 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e 20  rting code.  in 
af50: 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74 65 6d  other sub-system
af60: 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 72 65  s. This macro re
af70: 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41 47 4d  moves the [PRAGM
af80: 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e  A] command only.
af90: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
afa0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
afb0: 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43  PROGRESS_CALLBAC
afc0: 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  K} {.  This opti
afd0: 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69 6e 65  on may be define
afe0: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 61  d to omit the ca
aff0: 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73 73 75  pability to issu
b000: 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a 20 20  e "progress" .  
b010: 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e 67  callbacks during
b020: 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53 51   long-running SQ
b030: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54 68  L statements. Th
b040: 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72  e .  [sqlite3_pr
b050: 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 29  ogress_handler()
b060: 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  ].  API function
b070: 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20   is not present 
b080: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a  in the library..
b090: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b0a0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51  N {SQLITE_OMIT_Q
b0b0: 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a 20  UICKBALANCE} {. 
b0c0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
b0d0: 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  ts an alternativ
b0e0: 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72 65 65  e, faster B-Tree
b0f0: 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74 69   balancing routi
b100: 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68 69 73  ne..  Using this
b110: 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51   option makes SQ
b120: 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20 73 6d  Lite slightly sm
b130: 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65 78 70  aller at the exp
b140: 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e 67  ense of.  making
b150: 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74 6c 79   it run slightly
b160: 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50   slower..}..COMP
b170: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b180: 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58 7d  TE_OMIT_REINDEX}
b190: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
b1a0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
b1b0: 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58 5d 0a  , the [REINDEX].
b1c0: 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74    command is not
b1d0: 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65   included in the
b1e0: 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63   library..  Exec
b1f0: 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44 45 58  uting a [REINDEX
b200: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  ] statement caus
b210: 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65 72  es .  a parse er
b220: 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ror..}..COMPILE_
b230: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b240: 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d  MIT_SCHEMA_PRAGM
b250: 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  AS} {.  Defining
b260: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
b270: 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71  ts pragmas for q
b280: 75 65 72 79 69 6e 67 20 74 68 65 20 64 61 74 61  uerying the data
b290: 62 61 73 65 20 73 63 68 65 6d 61 20 66 72 6f 6d  base schema from
b2a0: 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d   .  the build..}
b2b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b2c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43   {SQLITE_OMIT_SC
b2d0: 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41  HEMA_VERSION_PRA
b2e0: 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69  GMAS} {.  Defini
b2f0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
b300: 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72  mits pragmas for
b310: 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20 6d 6f   querying and mo
b320: 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20 20 64  difying the .  d
b330: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 76  atabase schema v
b340: 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65 72 20  ersion and user 
b350: 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65  version from the
b360: 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66 69 63   build. Specific
b370: 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73 63  ally, the .  [sc
b380: 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61 6e  hema_version] an
b390: 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e 5d  d [user_version]
b3a0: 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f 6d 69   PRAGMAs are omi
b3b0: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
b3c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b3d0: 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48  OMIT_SHARED_CACH
b3e0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
b3f0: 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69 74 65  on builds SQLite
b400: 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f 72 74   without support
b410: 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61 63 68   for shared-cach
b420: 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b 73  e mode..  The [s
b430: 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68  qlite3_enable_sh
b440: 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20 69 73  ared_cache()] is
b450: 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20 77   omitted along w
b460: 69 74 68 20 61 20 66 61 69 72 0a 20 20 61 6d 6f  ith a fair.  amo
b470: 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77 69 74  unt of logic wit
b480: 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65 20 73  hin the B-Tree s
b490: 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63 69 61  ubsystem associa
b4a0: 74 65 64 20 77 69 74 68 20 73 68 61 72 65 64 0a  ted with shared.
b4b0: 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65 6d 65    cache manageme
b4c0: 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nt..}..COMPILE_O
b4d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b4e0: 49 54 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a 20  IT_SUBQUERY} {. 
b4f0: 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73 75 70   If defined, sup
b500: 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73 65 6c  port for sub-sel
b510: 65 63 74 73 20 61 6e 64 20 74 68 65 20 49 4e 28  ects and the IN(
b520: 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65 20 6f  ) operator are o
b530: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
b540: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b550: 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41  E_OMIT_TCL_VARIA
b560: 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  BLE} {.  If this
b570: 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65   macro is define
b580: 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70 65 63  d, then the spec
b590: 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c 65 2d  ial "$<variable-
b5a0: 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20 20  name>" syntax.  
b5b0: 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61 74 69  used to automati
b5c0: 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20 76  cally bind SQL v
b5d0: 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43 4c 20  ariables to TCL 
b5e0: 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f 6d 69  variables is omi
b5f0: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
b600: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
b610: 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a 20  OMIT_TEMPDB} {. 
b620: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
b630: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54  ts support for T
b640: 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41 52 59  EMP or TEMPORARY
b650: 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50   tables..}..COMP
b660: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b670: 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20 7b  TE_OMIT_TRACE} {
b680: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
b690: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
b6a0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72   the [sqlite3_pr
b6b0: 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b  ofile()] and.  [
b6c0: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d  sqlite3_trace()]
b6d0: 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64 20   interfaces and 
b6e0: 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64  their associated
b6f0: 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49   logic..}..COMPI
b700: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b710: 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d 20  E_OMIT_TRIGGER} 
b720: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
b730: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
b740: 75 70 70 6f 72 74 20 66 6f 72 20 54 52 49 47 47  upport for TRIGG
b750: 45 52 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74  ER objects. Neit
b760: 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41  her the .  [CREA
b770: 54 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20 5b  TE TRIGGER] or [
b780: 44 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20 20  DROP TRIGGER].  
b790: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61  commands are ava
b7a0: 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63  ilable in this c
b7b0: 61 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70 74  ase, and attempt
b7c0: 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a 20  ing to execute. 
b7d0: 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73   either will res
b7e0: 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65  ult in a parse e
b7f0: 72 72 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70 74  rror..  This opt
b800: 69 6f 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c 65  ion also disable
b810: 73 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66  s enforcement of
b820: 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f   [foreign key co
b830: 6e 73 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73 69  nstraints],.  si
b840: 6e 63 65 20 74 68 65 20 63 6f 64 65 20 74 68 61  nce the code tha
b850: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72 69  t implements tri
b860: 67 67 65 72 73 20 61 6e 64 20 77 68 69 63 68 20  ggers and which 
b870: 69 73 20 6f 6d 69 74 74 65 64 20 62 79 20 74 68  is omitted by th
b880: 69 73 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 61  is.  option is a
b890: 6c 73 6f 20 75 73 65 64 20 74 6f 20 69 6d 70 6c  lso used to impl
b8a0: 65 6d 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20 6b  ement [foreign k
b8b0: 65 79 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a  ey actions]..}..
b8c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b8d0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e  SQLITE_OMIT_TRUN
b8e0: 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CATE_OPTIMIZATIO
b8f0: 4e 7d 20 7b 0a 20 20 41 20 64 65 66 61 75 6c 74  N} {.  A default
b900: 20 62 75 69 6c 64 20 6f 66 20 53 51 4c 69 74 65   build of SQLite
b910: 2c 20 69 66 20 61 20 5b 44 45 4c 45 54 45 5d 20  , if a [DELETE] 
b920: 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f  statement has no
b930: 20 57 48 45 52 45 20 63 6c 61 75 73 65 0a 20 20   WHERE clause.  
b940: 61 6e 64 20 6f 70 65 72 61 74 65 73 20 6f 6e 20  and operates on 
b950: 61 20 74 61 62 6c 65 20 77 69 74 68 20 6e 6f 20  a table with no 
b960: 74 72 69 67 67 65 72 73 2c 20 61 6e 20 6f 70 74  triggers, an opt
b970: 69 6d 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73  imization occurs
b980: 20 74 68 61 74 0a 20 20 63 61 75 73 65 73 20 74   that.  causes t
b990: 68 65 20 44 45 4c 45 54 45 20 74 6f 20 6f 63 63  he DELETE to occ
b9a0: 75 72 20 62 79 20 64 72 6f 70 70 69 6e 67 20 61  ur by dropping a
b9b0: 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 74 68  nd recreating th
b9c0: 65 20 74 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f  e table.  .  Dro
b9d0: 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61  pping and recrea
b9e0: 74 69 6e 67 20 61 20 74 61 62 6c 65 20 69 73 20  ting a table is 
b9f0: 75 73 75 61 6c 6c 79 20 6d 75 63 68 20 66 61 73  usually much fas
ba00: 74 65 72 20 74 68 61 6e 20 64 65 6c 65 74 69 6e  ter than deletin
ba10: 67 0a 20 20 74 68 65 20 74 61 62 6c 65 20 63 6f  g.  the table co
ba20: 6e 74 65 6e 74 20 72 6f 77 20 62 79 20 72 6f 77  ntent row by row
ba30: 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 22  .  This is the "
ba40: 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a  truncate optimiz
ba50: 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49  ation"..}..COMPI
ba60: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
ba70: 45 5f 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a  E_OMIT_UTF16} {.
ba80: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20    This macro is 
ba90: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 73 75 70  used to omit sup
baa0: 70 6f 72 74 20 66 6f 72 20 55 54 46 31 36 20 74  port for UTF16 t
bab0: 65 78 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68  ext encoding. Wh
bac0: 65 6e 20 74 68 69 73 20 69 73 0a 20 20 64 65 66  en this is.  def
bad0: 69 6e 65 64 20 61 6c 6c 20 41 50 49 20 66 75 6e  ined all API fun
bae0: 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74 75  ctions that retu
baf0: 72 6e 20 6f 72 20 61 63 63 65 70 74 20 55 54 46  rn or accept UTF
bb00: 31 36 20 65 6e 63 6f 64 65 64 20 74 65 78 74 20  16 encoded text 
bb10: 61 72 65 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c  are.  unavailabl
bb20: 65 2e 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  e. These functio
bb30: 6e 73 20 63 61 6e 20 62 65 20 69 64 65 6e 74 69  ns can be identi
bb40: 66 69 65 64 20 62 79 20 74 68 65 20 66 61 63 74  fied by the fact
bb50: 20 74 68 61 74 20 74 68 65 79 20 65 6e 64 0a 20   that they end. 
bb60: 20 77 69 74 68 20 27 31 36 27 2c 20 66 6f 72 20   with '16', for 
bb70: 65 78 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33  example [sqlite3
bb80: 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c 20 5b  _prepare16()], [
bb90: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
bba0: 65 78 74 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b  ext16()] and.  [
bbb0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
bbc0: 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  t16()]..}..COMPI
bbd0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
bbe0: 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b  E_OMIT_VACUUM} {
bbf0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
bc00: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
bc10: 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63  the [VACUUM].  c
bc20: 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e  ommand is not in
bc30: 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69  cluded in the li
bc40: 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69  brary..  Executi
bc50: 6e 67 20 61 20 5b 56 41 43 55 55 4d 5d 20 73 74  ng a [VACUUM] st
bc60: 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a  atement causes .
bc70: 20 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e    a parse error.
bc80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
bc90: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
bca0: 56 49 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69  VIEW} {.  Defini
bcb0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
bcc0: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
bcd0: 20 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e   VIEW objects. N
bce0: 65 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43  either the .  [C
bcf0: 52 45 41 54 45 20 56 49 45 57 5d 20 6e 6f 72 20  REATE VIEW] nor 
bd00: 74 68 65 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a  the [DROP VIEW].
bd10: 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61    commands are a
bd20: 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73  vailable in this
bd30: 20 63 61 73 65 2c 20 61 6e 64 0a 20 20 61 74 74   case, and.  att
bd40: 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75  empting to execu
bd50: 74 65 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72  te either will r
bd60: 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65  esult in a parse
bd70: 20 65 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49   error...  WARNI
bd80: 4e 47 3a 20 49 66 20 74 68 69 73 20 6d 61 63 72  NG: If this macr
bd90: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74  o is defined, it
bda0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73   will not be pos
bdb0: 73 69 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20  sible to open a 
bdc0: 64 61 74 61 62 61 73 65 0a 20 20 66 6f 72 20 77  database.  for w
bdd0: 68 69 63 68 20 74 68 65 20 73 63 68 65 6d 61 20  hich the schema 
bde0: 63 6f 6e 74 61 69 6e 73 20 56 49 45 57 20 6f 62  contains VIEW ob
bdf0: 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49  jects. .}..COMPI
be00: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
be10: 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54 41  E_OMIT_VIRTUALTA
be20: 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  BLE} {.  This op
be30: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
be40: 72 74 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69  rt for the [sqli
be50: 74 65 33 5f 76 74 61 62 20 7c 20 56 69 72 74 75  te3_vtab | Virtu
be60: 61 6c 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68  al Table].  mech
be70: 61 6e 69 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e  anism in SQLite.
be80: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
be90: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
bea0: 57 41 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  WAL} {.  This op
beb0: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22  tion omits the "
bec0: 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67  [write-ahead log
bed0: 5d 22 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c  ]" (a.k.a. "[WAL
bee0: 5d 22 29 20 63 61 70 61 62 69 6c 69 74 79 2e 0a  ]") capability..
bef0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
bf00: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57  N {SQLITE_OMIT_W
bf10: 53 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  SD} {.  This opt
bf20: 69 6f 6e 20 62 75 69 6c 64 73 20 61 20 76 65 72  ion builds a ver
bf30: 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  sion of the SQLi
bf40: 74 65 20 6c 69 62 72 61 72 79 20 74 68 61 74 20  te library that 
bf50: 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72  contains no.  Wr
bf60: 69 74 61 62 6c 65 20 53 74 61 74 69 63 20 44 61  itable Static Da
bf70: 74 61 20 28 57 53 44 29 2e 20 20 57 53 44 20 69  ta (WSD).  WSD i
bf80: 73 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c  s global variabl
bf90: 65 73 20 61 6e 64 2f 6f 72 20 73 74 61 74 69 63  es and/or static
bfa0: 0a 20 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53  .  variables.  S
bfb0: 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f  ome platforms do
bfc0: 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44   not support WSD
bfd0: 2c 20 61 6e 64 20 74 68 69 73 20 6f 70 74 69 6f  , and this optio
bfe0: 6e 20 69 73 20 6e 65 63 65 73 73 61 72 79 0a 20  n is necessary. 
bff0: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 53 51   in order for SQ
c000: 4c 69 74 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f  Lite to work tho
c010: 73 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a  se platforms.  .
c020: 0a 20 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20  .  Unlike other 
c030: 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20 77 68 69  OMIT options whi
c040: 63 68 20 6d 61 6b 65 20 74 68 65 20 53 51 4c 69  ch make the SQLi
c050: 74 65 20 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c  te library small
c060: 65 72 2c 0a 20 20 74 68 69 73 20 6f 70 74 69 6f  er,.  this optio
c070: 6e 20 61 63 74 75 61 6c 6c 79 20 69 6e 63 72 65  n actually incre
c080: 61 73 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66  ases the size of
c090: 20 53 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65   SQLite and make
c0a0: 73 20 69 74 20 72 75 6e 0a 20 20 61 20 6c 69 74  s it run.  a lit
c0b0: 74 6c 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c  tle slower.  Onl
c0c0: 79 20 75 73 65 20 74 68 69 73 20 6f 70 74 69 6f  y use this optio
c0d0: 6e 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 62  n if SQLite is b
c0e0: 65 69 6e 67 20 62 75 69 6c 74 20 66 6f 72 20 61  eing built for a
c0f0: 6e 0a 20 20 65 6d 62 65 64 64 65 64 20 74 61 72  n.  embedded tar
c100: 67 65 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  get that does no
c110: 74 20 73 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d  t support WSD..}
c120: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c130: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46   {SQLITE_OMIT_XF
c140: 45 52 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73  ER_OPT} {.  This
c150: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
c160: 70 70 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d 69  pport for optimi
c170: 7a 61 74 69 6f 6e 73 20 74 68 61 74 20 68 65 6c  zations that hel
c180: 70 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f  p statements.  o
c190: 66 20 74 68 65 20 66 6f 72 6d 20 22 49 4e 53 45  f the form "INSE
c1a0: 52 54 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45  RT INTO ... SELE
c1b0: 43 54 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74  CT ..." run fast
c1c0: 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  er..}..COMPILE_O
c1d0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45  PTION {SQLITE_ZE
c1e0: 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54  RO_MALLOC} {.  T
c1f0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
c200: 20 62 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75   both the [defau
c210: 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
c220: 74 6f 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b  tor] and the.  [
c230: 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79  debugging memory
c240: 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d   allocator] from
c250: 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73   the build and s
c260: 75 62 73 74 69 74 75 74 65 73 20 61 20 73 74 75  ubstitutes a stu
c270: 62 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  b.  memory alloc
c280: 61 74 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73  ator that always
c290: 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20   fails.  SQLite 
c2a0: 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74  will not run wit
c2b0: 68 20 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65  h this.  stub me
c2c0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73  mory allocator s
c2d0: 69 6e 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20  ince it will be 
c2e0: 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61  unable to alloca
c2f0: 74 65 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a  te memory.  But.
c300: 20 20 74 68 69 73 20 73 74 75 62 20 63 61 6e 20    this stub can 
c310: 62 65 20 72 65 70 6c 61 63 65 64 20 61 74 20 73  be replaced at s
c320: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a  tart-time using.
c330: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69    [sqlite3_confi
c340: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
c350: 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f  G_MALLOC],...) o
c360: 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  r.  [sqlite3_con
c370: 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
c380: 46 49 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a  FIG_HEAP],...)..
c390: 20 20 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66    So the net eff
c3a0: 65 63 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70  ect of this comp
c3b0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
c3c0: 69 73 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77  is that it allow
c3d0: 73 20 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65  s SQLite.  to be
c3e0: 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69   compiled and li
c3f0: 6e 6b 65 64 20 61 67 61 69 6e 73 74 20 61 20 73  nked against a s
c400: 79 73 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68  ystem library th
c410: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
c420: 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20  ort.  malloc(), 
c430: 66 72 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72  free(), and/or r
c440: 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74  ealloc()..}..</t
c450: 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62  cl>.<a name="deb
c460: 75 67 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a  ugoptions"></a>.
c470: 3c 68 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73  <h2>1.7 Analysis
c480: 20 61 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f   and Debugging O
c490: 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c  ptions</h2>.<tcl
c4a0: 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  >..COMPILE_OPTIO
c4b0: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d  N {SQLITE_DEBUG}
c4c0: 20 7b 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20   {.  The SQLite 
c4d0: 73 6f 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74  source code cont
c4e0: 61 69 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74  ains literally t
c4f0: 68 6f 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65  housands of asse
c500: 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a  rt() statements.
c510: 20 20 75 73 65 64 20 74 6f 20 76 65 72 69 66 79    used to verify
c520: 20 69 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70   internal assump
c530: 74 69 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75  tions and subrou
c540: 74 69 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f  tine preconditio
c550: 6e 73 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e  ns and.  postcon
c560: 64 69 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20  ditions.  These 
c570: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
c580: 6e 74 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79  nts are normally
c590: 20 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74   turned off.  (t
c5a0: 68 65 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20  hey generate no 
c5b0: 63 6f 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e  code) since turn
c5c0: 69 6e 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65  ing them on make
c5d0: 73 20 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70  s SQLite run app
c5e0: 72 6f 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72  roximately.  thr
c5f0: 65 65 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e  ee times slower.
c600: 20 20 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e    But for testin
c610: 67 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20  g and analysis, 
c620: 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  it is useful to 
c630: 74 75 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72  turn.  the asser
c640: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  t() statements o
c650: 6e 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44  n.  The SQLITE_D
c660: 45 42 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  EBUG compile-tim
c670: 65 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68  e option does th
c680: 69 73 2e 0a 20 20 53 51 4c 49 54 45 5f 44 45 42  is..  SQLITE_DEB
c690: 55 47 20 61 6c 73 6f 20 74 75 72 6e 73 20 6f 6e  UG also turns on
c6a0: 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75   some other debu
c6b0: 67 67 69 6e 67 20 66 65 61 74 75 72 65 73 2e 0a  gging features..
c6c0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
c6d0: 4e 20 7b 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42  N {SQLITE_MEMDEB
c6e0: 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  UG} {.  The SQLI
c6f0: 54 45 5f 4d 45 4d 44 45 42 55 47 20 6f 70 74 69  TE_MEMDEBUG opti
c700: 6f 6e 20 63 61 75 73 65 73 20 61 6e 20 69 6e 73  on causes an ins
c710: 74 72 75 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65  trumented .  [de
c720: 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61  bugging memory a
c730: 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62  llocator].  to b
c740: 65 20 75 73 65 64 20 61 73 20 74 68 65 20 64 65  e used as the de
c750: 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c  fault memory all
c760: 6f 63 61 74 6f 72 20 77 69 74 68 69 6e 20 53 51  ocator within SQ
c770: 4c 69 74 65 2e 20 20 54 68 65 0a 20 20 69 6e 73  Lite.  The.  ins
c780: 74 72 75 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79  trumented memory
c790: 20 61 6c 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b   allocator check
c7a0: 73 20 66 6f 72 20 6d 69 73 75 73 65 20 6f 66 20  s for misuse of 
c7b0: 64 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f  dynamically allo
c7c0: 63 61 74 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20  cated.  memory. 
c7d0: 20 45 78 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73   Examples of mis
c7e0: 75 73 65 20 69 6e 63 6c 75 64 65 20 75 73 69 6e  use include usin
c7f0: 67 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69  g memory after i
c800: 74 20 69 73 20 66 72 65 65 64 2c 0a 20 20 77 72  t is freed,.  wr
c810: 69 74 69 6e 67 20 6f 66 66 20 74 68 65 20 65 6e  iting off the en
c820: 64 73 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61  ds of a memory a
c830: 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66 72 65 65 69  llocation, freei
c840: 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72  ng memory not pr
c850: 65 76 69 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69  eviously.  obtai
c860: 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d  ned from the mem
c870: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f  ory allocator, o
c880: 72 20 66 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69  r failing to ini
c890: 74 69 61 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20  tialize newly.  
c8a0: 61 6c 6c 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79  allocated memory
c8b0: 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a              ..}..</tcl>.