Documentation Source Text

Hex Artifact Content
Login

Artifact 98934613300fc9146836dd1b2d367aa1f152db41:


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 4d 41 58  TION {SQLITE_MAX
1a00: 5f 4d 4d 41 50 5f 53 49 5a 45 3d 3c 69 3e 4e 3c  _MMAP_SIZE=<i>N<
1a10: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
1a20: 63 72 6f 20 73 65 74 73 20 61 20 68 61 72 64 20  cro sets a hard 
1a30: 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74  upper bound on t
1a40: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 61 64 64  he amount of add
1a50: 72 65 73 73 20 73 70 61 63 65 20 74 68 61 74 0a  ress space that.
1a60: 20 20 63 61 6e 20 62 65 20 75 73 65 64 20 62 79    can be used by
1a70: 20 61 6e 79 20 73 69 6e 67 6c 65 20 64 61 74 61   any single data
1a80: 62 61 73 65 20 66 6f 72 20 6d 65 6d 6f 72 79 2d  base for memory-
1a90: 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 20 20 53 65  mapped I/O..  Se
1aa0: 74 74 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65  tting this value
1ab0: 20 74 6f 20 30 20 63 6f 6d 70 6c 65 74 65 6c 79   to 0 completely
1ac0: 20 64 69 73 61 62 6c 65 73 20 6d 65 6d 6f 72 79   disables memory
1ad0: 2d 6d 61 70 70 65 64 20 49 2f 4f 20 61 6e 64 0a  -mapped I/O and.
1ae0: 20 20 63 61 75 73 65 73 20 6c 6f 67 69 63 20 61    causes logic a
1af0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 6d  ssociated with m
1b00: 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f  emory-mapped I/O
1b10: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66   to be omitted f
1b20: 72 6f 6d 20 74 68 65 0a 20 20 62 75 69 6c 64 2e  rom the.  build.
1b30: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f    This option do
1b40: 65 73 20 63 68 61 6e 67 65 20 74 68 65 20 64 65  es change the de
1b50: 66 61 75 6c 74 20 6d 65 6d 6f 72 79 2d 6d 61 70  fault memory-map
1b60: 70 65 64 20 49 2f 4f 20 61 64 64 72 65 73 73 0a  ped I/O address.
1b70: 20 20 73 70 61 63 65 20 73 69 7a 65 20 28 73 65    space size (se
1b80: 74 20 62 79 20 5b 53 51 4c 49 54 45 5f 44 45 46  t by [SQLITE_DEF
1b90: 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  AULT_MMAP_SIZE] 
1ba0: 6f 72 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  or.  sqlite3_con
1bb0: 66 69 67 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  fig([SQLITE_CONF
1bc0: 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f  IG_MMAP_SIZE]) o
1bd0: 72 20 74 68 65 0a 20 20 72 75 6e 2d 74 69 6d 65  r the.  run-time
1be0: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
1bf0: 2f 4f 20 61 64 64 72 65 73 73 20 73 70 61 63 65  /O address space
1c00: 20 73 69 7a 65 20 28 73 65 74 20 62 79 0a 20 20   size (set by.  
1c10: 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
1c20: 74 72 6f 6c 28 5b 53 51 4c 49 54 45 5f 46 43 4e  trol([SQLITE_FCN
1c30: 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 6f  TL_MMAP_SIZE]) o
1c40: 72 0a 20 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70  r.  [PRAGMA mmap
1c50: 5f 73 69 7a 65 5d 29 20 61 73 20 6c 6f 6e 67 20  _size]) as long 
1c60: 61 73 20 74 68 6f 73 65 20 6f 74 68 65 72 20 73  as those other s
1c70: 65 74 74 69 6e 67 73 20 61 72 65 20 6c 65 73 73  ettings are less
1c80: 20 74 68 61 6e 20 74 68 65 0a 20 20 6d 61 78 69   than the.  maxi
1c90: 6d 75 6d 20 76 61 6c 75 65 20 64 65 66 69 6e 65  mum value define
1ca0: 64 20 68 65 72 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  d here..}..COMPI
1cb0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
1cc0: 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54  E_MAX_SCHEMA_RET
1cd0: 52 59 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  RY=<i>N</i>} {. 
1ce0: 20 57 68 65 6e 65 76 65 72 20 74 68 65 20 64 61   Whenever the da
1cf0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63 68  tabase schema ch
1d00: 61 6e 67 65 73 2c 20 70 72 65 70 61 72 65 64 20  anges, prepared 
1d10: 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 61  statements are a
1d20: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 72  utomatically.  r
1d30: 65 70 72 65 70 61 72 65 64 20 74 6f 20 61 63 63  eprepared to acc
1d40: 6f 6d 6d 6f 64 61 74 65 20 74 68 65 20 6e 65 77  ommodate the new
1d50: 20 73 63 68 65 6d 61 2e 20 20 54 68 65 72 65 20   schema.  There 
1d60: 69 73 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74  is a race condit
1d70: 69 6f 6e 20 68 65 72 65 0a 20 20 69 6e 20 74 68  ion here.  in th
1d80: 61 74 20 69 66 20 6f 6e 65 20 74 68 72 65 61 64  at if one thread
1d90: 20 69 73 20 63 6f 6e 73 74 61 6e 74 6c 79 20 63   is constantly c
1da0: 68 61 6e 67 69 6e 67 20 74 68 65 20 73 63 68 65  hanging the sche
1db0: 6d 61 2c 20 61 6e 6f 74 68 65 72 20 74 68 72 65  ma, another thre
1dc0: 61 64 0a 20 20 6d 69 67 68 74 20 73 70 69 6e 20  ad.  might spin 
1dd0: 6f 6e 20 72 65 70 61 72 73 65 73 20 61 6e 64 20  on reparses and 
1de0: 72 65 70 72 65 70 61 72 61 74 69 6f 6e 73 20 6f  repreparations o
1df0: 66 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61  f a prepared sta
1e00: 74 65 6d 65 6e 74 20 61 6e 64 0a 20 20 6e 65 76  tement and.  nev
1e10: 65 72 20 67 65 74 20 61 6e 79 20 72 65 61 6c 20  er get any real 
1e20: 77 6f 72 6b 20 64 6f 6e 65 2e 20 20 54 68 69 73  work done.  This
1e30: 20 70 61 72 61 6d 65 74 65 72 20 70 72 65 76 65   parameter preve
1e40: 6e 74 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20  nts an infinite 
1e50: 6c 6f 6f 70 0a 20 20 62 79 20 66 6f 72 63 69 6e  loop.  by forcin
1e60: 67 20 74 68 65 20 73 70 69 6e 6e 69 6e 67 20 74  g the spinning t
1e70: 68 72 65 61 64 20 74 6f 20 67 69 76 65 20 75 70  hread to give up
1e80: 20 61 66 74 65 72 20 61 20 66 69 78 65 64 20 6e   after a fixed n
1e90: 75 6d 62 65 72 20 6f 66 20 61 74 74 65 6d 70 74  umber of attempt
1ea0: 73 0a 20 20 61 74 20 72 65 63 6f 6d 70 69 6c 69  s.  at recompili
1eb0: 6e 67 20 74 68 65 20 70 72 65 70 61 72 65 64 20  ng the prepared 
1ec0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
1ed0: 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
1ee0: 69 73 20 35 30 20 77 68 69 63 68 20 69 73 0a 20  is 50 which is. 
1ef0: 20 6d 6f 72 65 20 74 68 61 6e 20 61 64 65 71 75   more than adequ
1f00: 61 74 65 20 66 6f 72 20 6d 6f 73 74 20 61 70 70  ate for most app
1f10: 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f  lications..}..CO
1f20: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
1f30: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
1f40: 56 45 52 57 52 49 54 45 3d 3c 69 3e 26 6c 74 3b  VERWRITE=<i>&lt;
1f50: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
1f60: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
1f70: 63 68 61 6e 67 65 73 20 74 68 65 20 64 65 66 61  changes the defa
1f80: 75 6c 74 20 61 73 73 75 6d 70 74 69 6f 6e 20 61  ult assumption a
1f90: 62 6f 75 74 20 5b 70 6f 77 65 72 73 61 66 65 20  bout [powersafe 
1fa0: 6f 76 65 72 77 72 69 74 65 5d 0a 20 20 66 6f 72  overwrite].  for
1fb0: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
1fc0: 66 69 6c 65 73 79 73 74 65 6d 73 20 66 6f 72 20  filesystems for 
1fd0: 74 68 65 20 75 6e 69 78 20 61 6e 64 20 77 69 6e  the unix and win
1fe0: 64 6f 77 73 20 5b 56 46 53 65 73 5d 2e 0a 20 20  dows [VFSes]..  
1ff0: 53 65 74 74 69 6e 67 20 53 51 4c 49 54 45 5f 50  Setting SQLITE_P
2000: 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
2010: 54 45 20 74 6f 20 31 20 63 61 75 73 65 73 20 53  TE to 1 causes S
2020: 51 4c 69 74 65 20 74 6f 20 61 73 73 75 6d 65 20  QLite to assume 
2030: 74 68 61 74 0a 20 20 61 70 70 6c 69 63 61 74 69  that.  applicati
2040: 6f 6e 2d 6c 65 76 65 6c 20 77 72 69 74 65 73 20  on-level writes 
2050: 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 73 20 62  cannot changes b
2060: 79 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 65  ytes outside the
2070: 20 72 61 6e 67 65 20 6f 66 0a 20 20 62 79 74 65   range of.  byte
2080: 73 20 77 72 69 74 74 65 6e 20 65 76 65 6e 20 69  s written even i
2090: 66 20 74 68 65 20 77 72 69 74 65 20 6f 63 63 75  f the write occu
20a0: 72 73 20 6a 75 73 74 20 62 65 66 6f 72 65 20 61  rs just before a
20b0: 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 20 20 57   power loss..  W
20c0: 69 74 68 20 53 51 4c 49 54 45 5f 50 4f 57 45 52  ith SQLITE_POWER
20d0: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20 73  SAFE_OVERWRITE s
20e0: 65 74 20 74 6f 20 30 2c 20 53 51 4c 69 74 65 20  et to 0, SQLite 
20f0: 61 73 73 75 6d 65 73 20 74 68 61 74 20 6f 74 68  assumes that oth
2100: 65 72 0a 20 20 62 79 74 65 73 20 69 6e 20 74 68  er.  bytes in th
2110: 65 20 73 61 6d 65 20 73 65 63 74 6f 72 20 77 69  e same sector wi
2120: 74 68 20 61 20 77 72 69 74 74 65 6e 20 62 79 74  th a written byt
2130: 65 20 6d 69 67 68 74 20 62 65 20 63 68 61 6e 67  e might be chang
2140: 65 64 20 6f 72 20 0a 20 20 64 61 6d 61 67 65 64  ed or .  damaged
2150: 20 62 79 20 61 20 70 6f 77 65 72 20 6c 6f 73 73   by a power loss
2160: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2170: 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54  ION {YYSTACKDEPT
2180: 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70  H=<i>&lt;max_dep
2190: 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  th&gt;</i>} {.  
21a0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
21b0: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
21c0: 68 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29  h of the LALR(1)
21d0: 20 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20   stack used by. 
21e0: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
21f0: 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20  within SQLite.  
2200: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
2210: 65 20 69 73 20 31 30 30 2e 20 20 41 20 74 79 70  e is 100.  A typ
2220: 69 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69  ical.  applicati
2230: 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73  on will use less
2240: 20 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c   than about 20 l
2250: 65 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61  evels of the sta
2260: 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73  ck..  Developers
2270: 20 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69   whose applicati
2280: 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20  ons contain SQL 
2290: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
22a0: 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61  .  need more tha
22b0: 6e 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74  n 100 LALR(1) st
22c0: 61 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75  ack entries shou
22d0: 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63  ld seriously.  c
22e0: 6f 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f 72  onsider refactor
22f0: 69 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61 73  ing their SQL as
2300: 20 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f   it is likely to
2310: 20 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a   be well beyond.
2320: 20 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66    the ability of
2330: 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f   any human to co
2340: 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63  mprehend..}.</tc
2350: 6c 3e 0a 0a 3c 68 32 3e 31 2e 32 20 4f 70 74 69  l>..<h2>1.2 Opti
2360: 6f 6e 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20  ons To Set Size 
2370: 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  Limits</h2>..<p>
2380: 54 68 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c  There are compil
2390: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74  e-time options t
23a0: 68 61 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70  hat will set upp
23b0: 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65  er bounds.on the
23c0: 20 73 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75   sizes of variou
23d0: 73 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 20  s structures in 
23e0: 53 51 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d  SQLite.  The com
23f0: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
2400: 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61  s normally set a
2410: 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
2420: 64 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 68  d that can be ch
2430: 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d  anged.at run-tim
2440: 65 20 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20  e on individual 
2450: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
2460: 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65  tions] using the
2470: 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28  .[sqlite3_limit(
2480: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70  )] interface.</p
2490: 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c  >..<p>The compil
24a0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66  e-time options f
24b0: 6f 72 20 73 65 74 74 69 6e 67 20 75 70 70 65 72  or setting upper
24c0: 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d   bounds are.[lim
24d0: 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64  its | documented
24e0: 20 73 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54   separately].  T
24f0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20  he following is 
2500: 61 20 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76  a list of.the av
2510: 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73  ailable settings
2520: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
2530: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54   [SQLITE_MAX_ATT
2540: 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ACHED]  </li>.<l
2550: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
2560: 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  OLUMN]  </li>.<l
2570: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
2580: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20  OMPOUND_SELECT] 
2590: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
25a0: 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  ITE_MAX_EXPR_DEP
25b0: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
25c0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43  [SQLITE_MAX_FUNC
25d0: 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e  TION_ARG]  </li>
25e0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
25f0: 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  X_LENGTH]  </li>
2600: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
2610: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
2620: 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ENGTH]  </li>.<l
2630: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50  i> [SQLITE_MAX_P
2640: 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69  AGE_COUNT]  </li
2650: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
2660: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20  AX_SQL_LENGTH]  
2670: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
2680: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
2690: 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c  NUMBER]  </li>.<
26a0: 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63  /ul>..<a name="c
26b0: 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e  ontrolfeatures">
26c0: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 33 20 4f 70 74  </a>.<h2>1.3 Opt
26d0: 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20  ions To Control 
26e0: 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72 61 63  Operating Charac
26f0: 74 65 72 69 73 74 69 63 73 3c 2f 68 32 3e 0a 0a  teristics</h2>..
2700: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
2710: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42  TION {SQLITE_4_B
2720: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
2730: 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20  OC} {.  On most 
2740: 73 79 73 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c  systems, the mal
2750: 6c 6f 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c  loc() system cal
2760: 6c 20 72 65 74 75 72 6e 73 20 61 20 62 75 66 66  l returns a buff
2770: 65 72 20 74 68 61 74 20 69 73 0a 20 20 61 6c 69  er that is.  ali
2780: 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74  gned to an 8-byt
2790: 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 42 75 74  e boundary.  But
27a0: 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73   on some systems
27b0: 20 28 65 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d   (ex: windows) m
27c0: 61 6c 6c 6f 63 28 29 0a 20 20 72 65 74 75 72 6e  alloc().  return
27d0: 73 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  s 4-byte aligned
27e0: 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 69 73 20   pointer.  This 
27f0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
2800: 69 6f 6e 20 6d 75 73 74 20 62 65 20 75 73 65 64  ion must be used
2810: 0a 20 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  .  on systems th
2820: 61 74 20 72 65 74 75 72 6e 20 34 2d 62 79 74 65  at return 4-byte
2830: 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
2840: 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e  s from malloc().
2850: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
2860: 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f  ON {SQLITE_CASE_
2870: 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20  SENSITIVE_LIKE} 
2880: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
2890: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  on is present, t
28a0: 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hen the built-in
28b0: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
28c0: 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 73 65 20   will be.  case 
28d0: 73 65 6e 73 69 74 69 76 65 2e 20 20 54 68 69 73  sensitive.  This
28e0: 20 73 61 6d 65 20 65 66 66 65 63 74 20 63 61 6e   same effect can
28f0: 20 62 65 20 61 63 68 69 65 76 65 64 20 61 74 20   be achieved at 
2900: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  run-time using. 
2910: 20 74 68 65 20 5b 63 61 73 65 5f 73 65 6e 73 69   the [case_sensi
2920: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
2930: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
2940: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 52  TION {SQLITE_DIR
2950: 45 43 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41  ECT_OVERFLOW_REA
2960: 44 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  D} {.  When this
2970: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
2980: 6e 74 2c 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74  nt, content cont
2990: 61 69 6e 65 64 20 69 6e 0a 20 20 5b 6f 76 65 72  ained in.  [over
29a0: 66 6c 6f 77 20 70 61 67 65 73 5d 20 6f 66 20 74  flow pages] of t
29b0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
29c0: 20 69 73 20 72 65 61 64 20 64 69 72 65 63 74 6c   is read directl
29d0: 79 20 66 72 6f 6d 20 64 69 73 6b 2c 0a 20 20 62  y from disk,.  b
29e0: 79 70 61 73 73 69 6e 67 20 74 68 65 20 5b 70 61  ypassing the [pa
29f0: 67 65 20 63 61 63 68 65 5d 2c 20 64 75 72 69 6e  ge cache], durin
2a00: 67 20 72 65 61 64 20 74 72 61 6e 73 61 63 74 69  g read transacti
2a10: 6f 6e 73 2e 20 20 49 6e 20 61 70 70 6c 69 63 61  ons.  In applica
2a20: 74 69 6f 6e 73 0a 20 20 74 68 61 74 20 64 6f 20  tions.  that do 
2a30: 61 20 6c 6f 74 20 6f 66 20 72 65 61 64 73 20 6f  a lot of reads o
2a40: 66 20 6c 61 72 67 65 20 42 4c 4f 42 73 2c 20 74  f large BLOBs, t
2a50: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 69 67 68 74  his option might
2a60: 20 69 6d 70 72 6f 76 65 20 72 65 61 64 0a 20 20   improve read.  
2a70: 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 7d 0a 0a  performance..}..
2a80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
2a90: 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e 41  SQLITE_HAVE_ISNA
2aa0: 4e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  N} {.  If this o
2ab0: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
2ac0: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 77 69  , then SQLite wi
2ad0: 6c 6c 20 75 73 65 20 74 68 65 20 69 73 6e 61 6e  ll use the isnan
2ae0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d  () function from
2af0: 0a 20 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61  .  the system ma
2b00: 74 68 20 6c 69 62 72 61 72 79 2e 20 20 57 69 74  th library.  Wit
2b10: 68 6f 75 74 20 74 68 69 73 20 6f 70 74 69 6f 6e  hout this option
2b20: 20 28 74 68 65 20 64 65 66 61 75 6c 74 20 62 65   (the default be
2b30: 68 61 76 69 6f 72 29 0a 20 20 53 51 4c 69 74 65  havior).  SQLite
2b40: 20 75 73 65 73 20 69 74 73 20 6f 77 6e 20 69 6e   uses its own in
2b50: 74 65 72 6e 61 6c 20 69 6d 70 6c 65 6d 65 6e 74  ternal implement
2b60: 61 74 69 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29  ation of isnan()
2b70: 2e 20 20 53 51 4c 69 74 65 20 75 73 65 73 0a 20  .  SQLite uses. 
2b80: 20 69 74 73 20 6f 77 6e 20 69 6e 74 65 72 6e 61   its own interna
2b90: 6c 20 69 73 6e 61 6e 28 29 20 69 6d 70 6c 65 6d  l isnan() implem
2ba0: 65 6e 74 61 74 69 6f 6e 20 62 79 20 64 65 66 61  entation by defa
2bb0: 75 6c 74 20 62 65 63 61 75 73 65 20 6f 66 20 70  ult because of p
2bc0: 61 73 74 0a 20 20 70 72 6f 62 6c 65 6d 73 20 77  ast.  problems w
2bd0: 69 74 68 20 73 79 73 74 65 6d 20 69 73 6e 61 6e  ith system isnan
2be0: 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a  () functions..}.
2bf0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2c00: 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52  {SQLITE_OS_OTHER
2c10: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
2c20: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  t;</i>} {.  The 
2c30: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
2c40: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69 74 73  Lite to omit its
2c50: 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74   built-in operat
2c60: 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
2c70: 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e 69 78  faces.  for Unix
2c80: 2c 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f  , Windows, and O
2c90: 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75 6c 74  S/2.  The result
2ca0: 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ing library will
2cb0: 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75 6c 74   have no default
2cc0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20  .  [sqlite3_vfs 
2cd0: 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  | operating syst
2ce0: 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e 20 20  em interface].  
2cf0: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
2d00: 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74 65 33  t use.  [sqlite3
2d10: 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
2d20: 20 74 6f 20 72 65 67 69 73 74 65 72 20 61 6e 20   to register an 
2d30: 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65  appropriate inte
2d40: 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20 20 75  rface before.  u
2d50: 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20 41 70  sing SQLite.  Ap
2d60: 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20  plications must 
2d70: 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c  also supply impl
2d80: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20  ementations for 
2d90: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f  the.  [sqlite3_o
2da0: 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73  s_init()] and [s
2db0: 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d  qlite3_os_end()]
2dc0: 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54 68   interfaces.  Th
2dd0: 65 20 75 73 75 61 6c 20 70 72 61 63 74 69 63 65  e usual practice
2de0: 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20 73 75  .  is for the su
2df0: 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65 33 5f  pplied [sqlite3_
2e00: 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e  os_init()] to in
2e10: 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 66  voke [sqlite3_vf
2e20: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e 0a 20  s_register()].. 
2e30: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 75 74   SQLite will aut
2e40: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b  omatically invok
2e50: 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  e [sqlite3_os_in
2e60: 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20 69 6e  it()] when it in
2e70: 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68  itializes...  Th
2e80: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 79 70  is option is typ
2e90: 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68 65 6e  ically used when
2ea0: 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65   building SQLite
2eb0: 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64 65 64   for an embedded
2ec0: 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69 74 68  .  platform with
2ed0: 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72 61 74   a custom operat
2ee0: 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43  ing system..}..C
2ef0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
2f00: 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c  QLITE_SECURE_DEL
2f10: 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f  ETE} {.  This co
2f20: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
2f30: 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 65  n changes the de
2f40: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66  fault setting of
2f50: 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64   the.  [secure_d
2f60: 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e 20 20  elete pragma].  
2f70: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
2f80: 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 73 65   is not used, se
2f90: 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61  cure_delete defa
2fa0: 75 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e 20 20  ults.  to off.  
2fb0: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
2fc0: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 73 65 63   is present, sec
2fd0: 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75  ure_delete defau
2fe0: 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54 68  lts to on...  Th
2ff0: 65 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  e secure_delete 
3000: 73 65 74 74 69 6e 67 20 63 61 75 73 65 73 20 64  setting causes d
3010: 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74 20 74  eleted content t
3020: 6f 20 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e  o be overwritten
3030: 20 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e 20 20   with.  zeros.  
3040: 54 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c 6c  There is a small
3050: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
3060: 61 6c 74 79 20 66 6f 72 20 74 68 69 73 20 73 69  alty for this si
3070: 6e 63 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 49  nce additional I
3080: 2f 4f 0a 20 20 6d 75 73 74 20 6f 63 63 75 72 2e  /O.  must occur.
3090: 20 20 4f 6e 20 74 68 65 20 6f 74 68 65 72 20 68    On the other h
30a0: 61 6e 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65  and, secure_dele
30b0: 74 65 20 63 61 6e 20 70 72 65 76 65 6e 74 20 73  te can prevent s
30c0: 65 6e 73 69 74 69 76 65 20 0a 20 20 69 6e 66 6f  ensitive .  info
30d0: 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 6c 69 6e  rmation from lin
30e0: 67 65 72 69 6e 67 20 69 6e 20 75 6e 75 73 65 64  gering in unused
30f0: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 64 61   parts of the da
3100: 74 61 62 61 73 65 20 66 69 6c 65 20 61 66 74 65  tabase file afte
3110: 72 20 69 74 0a 20 20 68 61 73 20 61 6c 6c 65 67  r it.  has alleg
3120: 65 64 6c 79 20 62 65 65 6e 20 64 65 6c 65 74 65  edly been delete
3130: 64 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75  d.  See the docu
3140: 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65  mentation on the
3150: 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74  .  [secure_delet
3160: 65 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61 64  e pragma] for ad
3170: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
3180: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
3190: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
31a0: 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c  THREADSAFE=<i>&l
31b0: 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74  t;0 or 1 or 2&gt
31c0: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
31d0: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
31e0: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63  whether or not c
31f0: 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20  ode is included 
3200: 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65  in SQLite to.  e
3210: 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72  nable it to oper
3220: 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20  ate safely in a 
3230: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
3240: 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a  vironment.  The.
3250: 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c    default is SQL
3260: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
3270: 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20 66   which is safe f
3280: 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74  or use in a mult
3290: 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69  ithreaded.  envi
32a0: 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63  ronment.  When c
32b0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
32c0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
32d0: 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f   all mutexing co
32e0: 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20  de.  is omitted 
32f0: 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66 65  and it is unsafe
3300: 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69   to use SQLite i
3310: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
3320: 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65  d program..  Whe
3330: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
3340: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
3350: 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20  E=2, SQLite can 
3360: 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c  be used in a mul
3370: 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f  tithreaded.  pro
3380: 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20  gram so long as 
3390: 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61  no two threads a
33a0: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
33b0: 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61  e same.  [databa
33c0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28  se connection] (
33d0: 6f 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65 64  or any [prepared
33e0: 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65 72   statements] der
33f0: 69 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61 74  ived from.  that
3400: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
3410: 74 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61 6d  tion) at the sam
3420: 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75  e time...  To pu
3430: 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61 79  t it another way
3440: 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  , SQLITE_THREADS
3450: 41 46 45 3d 31 20 73 65 74 73 20 74 68 65 20 64  AFE=1 sets the d
3460: 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64  efault.  [thread
3470: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72  ing mode] to Ser
3480: 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54 45  ialized.  SQLITE
3490: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 73 65  _THREADSAFE=2 se
34a0: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  ts the default. 
34b0: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
34c0: 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61  ] to Multi-threa
34d0: 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54 45  ded.  And SQLITE
34e0: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 73 65  _THREADSAFE=0 se
34f0: 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61 64  ts the.  [thread
3500: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e  ing mode] to Sin
3510: 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20  gle-threaded... 
3520: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53 51   The value of SQ
3530: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20  LITE_THREADSAFE 
3540: 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65  can be determine
3550: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20  d at run-time.  
3560: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
3570: 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d  e3_threadsafe()]
3580: 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 57   interface...  W
3590: 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20 62  hen SQLite has b
35a0: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
35b0: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
35c0: 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54  AFE=1 or.  SQLIT
35d0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 74  E_THREADSAFE=2 t
35e0: 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64 69  hen the [threadi
35f0: 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62  ng mode].  can b
3600: 65 20 61 6c 74 65 72 65 64 20 61 74 20 72 75 6e  e altered at run
3610: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  -time using the 
3620: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
3630: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67  )] interface tog
3640: 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e 65  ether.  with one
3650: 20 6f 66 20 74 68 65 73 65 20 76 65 72 62 73 3a   of these verbs:
3660: 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b  ..  <ul>.  <li>[
3670: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49  SQLITE_CONFIG_SI
3680: 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c  NGLETHREAD].  <l
3690: 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  i>[SQLITE_CONFIG
36a0: 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20 20  _MULTITHREAD].  
36b0: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
36c0: 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20  IG_SERIALIZED]. 
36d0: 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53   </ul>..  The [S
36e0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54  QLITE_OPEN_NOMUT
36f0: 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54  EX] and.  [SQLIT
3700: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
3710: 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69  ] flags to [sqli
3720: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63  te3_open_v2()] c
3730: 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 0a  an also be used.
3740: 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20    to adjust the 
3750: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
3760: 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 5b   of individual [
3770: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
3780: 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74  ions].  at run-t
3790: 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61  ime...  Note tha
37a0: 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  t when SQLite is
37b0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
37c0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
37d0: 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20 74  =0, the code.  t
37e0: 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74 68  o make SQLite th
37f0: 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69 74  readsafe is omit
3800: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
3810: 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  ld.  When this o
3820: 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20 69  ccurs,.  it is i
3830: 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61  mpossible to cha
3840: 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  nge the [threadi
3850: 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61 72  ng mode] at star
3860: 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69  t-time or run-ti
3870: 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20 5b  me...  See the [
3880: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
3890: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
38a0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
38b0: 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73  ormation.  on as
38c0: 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20 53  pects of using S
38d0: 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69  QLite in a multi
38e0: 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e  threaded environ
38f0: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
3900: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3910: 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c  TEMP_STORE=<i>&l
3920: 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67 74  t;0 through 3&gt
3930: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
3940: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
3950: 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61 72  whether temporar
3960: 79 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72  y files are stor
3970: 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20  ed on disk or.  
3980: 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20  in memory.  The 
3990: 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61 72  meanings for var
39a0: 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f 66  ious settings of
39b0: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
39c0: 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65 20  me.  option are 
39d0: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c  as follows:..  <
39e0: 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e  table cellpaddin
39f0: 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31 22  g="2" border="1"
3a00: 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49  >.  <tr><th>SQLI
3a10: 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74  TE_TEMP_STORE</t
3a20: 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74  h><th>Meaning</t
3a30: 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  h></tr>.  <tr><t
3a40: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
3a50: 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79  >0</td><td>Alway
3a60: 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20  s use temporary 
3a70: 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  files</td></tr>.
3a80: 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d    <tr><td align=
3a90: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
3aa0: 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79 20  td>Use files by 
3ab0: 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f  default but allo
3ac0: 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  w the.  [PRAGMA 
3ad0: 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d  temp_store] comm
3ae0: 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c  and to override<
3af0: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
3b00: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
3b10: 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65  r">2</td><td>Use
3b20: 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61 75   memory by defau
3b30: 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65  lt but allow the
3b40: 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f  .  [PRAGMA temp_
3b50: 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74  store] command t
3b60: 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c  o override</td><
3b70: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
3b80: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c  lign="center">3<
3b90: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
3ba0: 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f  se memory</td></
3bb0: 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a  tr>.  </table>..
3bc0: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65    The default se
3bd0: 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20 20  tting is 1.  .  
3be0: 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  Additional infor
3bf0: 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f  mation can be fo
3c00: 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72  und in [tempstor
3c10: 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68 74  e | tempfiles.ht
3c20: 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ml]..}..COMPILE_
3c30: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
3c40: 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RACE_SIZE_LIMIT=
3c50: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  <i>N</i>} {.  If
3c60: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
3c70: 65 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73 69  efined to a posi
3c80: 74 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69 3e  tive integer <i>
3c90: 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65 20  N</i>, then the 
3ca0: 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72 69  length of.  stri
3cb0: 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68 61  ngs and BLOB tha
3cc0: 74 20 61 72 65 20 65 78 70 61 6e 64 65 64 20 69  t are expanded i
3cd0: 6e 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69  nto parameters i
3ce0: 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 0a  n the output of.
3cf0: 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65    [sqlite3_trace
3d00: 28 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20 74  ()] is limited t
3d10: 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73  o <i>N</i> bytes
3d20: 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  .  .}..COMPILE_O
3d30: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
3d40: 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73 20  E_URI} {.  This 
3d50: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
3d60: 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d  e [URI filename]
3d70: 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20 74   process logic t
3d80: 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20  o be enabled by 
3d90: 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a  .  default.  .}.
3da0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
3db0: 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73  ="enablefeatures
3dc0: 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f  "></a>.<h2>1.4 O
3dd0: 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65  ptions To Enable
3de0: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
3df0: 6c 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68  ly Turned Off</h
3e00: 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  2>..<tcl>.COMPIL
3e10: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3e20: 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f  _ALLOW_COVERING_
3e30: 49 4e 44 45 58 5f 53 43 41 4e 3d 3c 69 3e 26 6c  INDEX_SCAN=<i>&l
3e40: 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e  t;0 or 1&gt;</i>
3e50: 7d 20 7b 0a 20 20 54 68 69 73 20 43 2d 70 72 65  } {.  This C-pre
3e60: 70 72 6f 63 65 73 73 20 6d 61 63 72 6f 20 64 65  process macro de
3e70: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
3e80: 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66 20  ault setting of 
3e90: 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 43 4f  the.  [SQLITE_CO
3ea0: 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e  NFIG_COVERING_IN
3eb0: 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6e 66 69 67  DEX_SCAN] config
3ec0: 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 2e  uration setting.
3ed0: 20 20 49 74 20 64 65 66 61 75 6c 74 73 0a 20 20    It defaults.  
3ee0: 74 6f 20 31 20 28 6f 6e 29 20 77 68 69 63 68 20  to 1 (on) which 
3ef0: 6d 65 61 6e 73 20 74 68 61 74 20 63 6f 76 65 72  means that cover
3f00: 69 6e 67 20 69 6e 64 69 63 65 73 20 61 72 65 20  ing indices are 
3f10: 75 73 65 64 20 66 6f 72 20 66 75 6c 6c 20 74 61  used for full ta
3f20: 62 6c 65 0a 20 20 73 63 61 6e 73 20 77 68 65 72  ble.  scans wher
3f30: 65 20 70 6f 73 73 69 62 6c 65 2c 20 69 6e 20 6f  e possible, in o
3f40: 72 64 65 72 20 74 6f 20 72 65 64 75 63 65 20 49  rder to reduce I
3f50: 2f 4f 20 61 6e 64 20 69 6d 70 72 6f 76 65 20 70  /O and improve p
3f60: 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 20 20 48 6f  erformance..  Ho
3f70: 77 65 76 65 72 2c 20 74 68 65 20 75 73 65 20 6f  wever, the use o
3f80: 66 20 61 20 63 6f 76 65 72 69 6e 67 20 69 6e 64  f a covering ind
3f90: 65 78 20 66 6f 72 20 61 20 66 75 6c 6c 20 73 63  ex for a full sc
3fa0: 61 6e 20 77 69 6c 6c 20 63 61 75 73 65 20 72 65  an will cause re
3fb0: 73 75 6c 74 73 0a 20 20 74 6f 20 61 70 70 65 61  sults.  to appea
3fc0: 72 20 69 6e 20 61 20 64 69 66 66 65 72 65 6e 74  r in a different
3fd0: 20 6f 72 64 65 72 20 66 72 6f 6d 20 6c 65 67 61   order from lega
3fe0: 63 79 2c 20 77 68 69 63 68 20 63 6f 75 6c 64 20  cy, which could 
3ff0: 63 61 75 73 65 20 73 6f 6d 65 0a 20 20 28 69 6e  cause some.  (in
4000: 63 6f 72 72 65 63 74 6c 79 2d 63 6f 64 65 64 29  correctly-coded)
4010: 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61 74   legacy applicat
4020: 69 6f 6e 73 20 74 6f 20 62 72 65 61 6b 2e 20 20  ions to break.  
4030: 48 65 6e 63 65 2c 20 74 68 65 20 63 6f 76 65 72  Hence, the cover
4040: 69 6e 67 0a 20 20 69 6e 64 65 78 20 73 63 61 6e  ing.  index scan
4050: 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 64   option can be d
4060: 69 73 61 62 6c 65 64 20 61 74 20 63 6f 6d 70 69  isabled at compi
4070: 6c 65 2d 74 69 6d 65 20 6f 6e 20 73 79 73 74 65  le-time on syste
4080: 6d 73 20 74 68 61 74 20 77 68 61 74 0a 20 20 74  ms that what.  t
4090: 6f 20 6d 69 6e 69 6d 69 7a 65 20 74 68 65 69 72  o minimize their
40a0: 20 72 69 73 6b 20 6f 66 20 65 78 70 6f 73 69 6e   risk of exposin
40b0: 67 20 65 72 72 6f 72 73 20 69 6e 20 6c 65 67 61  g errors in lega
40c0: 63 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  cy applications.
40d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
40e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
40f0: 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 3c 69 3e 26  E_8_3_NAMES=<i>&
4100: 6c 74 3b 31 20 6f 72 20 32 26 67 74 3b 3c 2f 69  lt;1 or 2&gt;</i
4110: 3e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  >} {.  If this C
4120: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
4130: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
4140: 74 68 65 6e 20 65 78 74 72 61 20 63 6f 64 65 20  then extra code 
4150: 69 73 0a 20 20 69 6e 63 6c 75 64 65 64 20 74 68  is.  included th
4160: 61 74 20 61 6c 6c 6f 77 73 20 53 51 4c 69 74 65  at allows SQLite
4170: 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20   to function on 
4180: 61 20 66 69 6c 65 73 79 73 74 65 6d 20 74 68 61  a filesystem tha
4190: 74 0a 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  t.  only support
41a0: 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 2e 20   8+3 filenames. 
41b0: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66   If the value of
41c0: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 31   this macro is 1
41d0: 2c 0a 20 20 74 68 65 6e 20 74 68 65 20 64 65 66  ,.  then the def
41e0: 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73  ault behavior is
41f0: 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20   to continue to 
4200: 75 73 65 20 6c 6f 6e 67 20 66 69 6c 65 6e 61 6d  use long filenam
4210: 65 73 20 61 6e 64 0a 20 20 74 6f 20 6f 6e 6c 79  es and.  to only
4220: 20 75 73 65 20 38 2b 33 20 66 69 6c 65 6e 61 6d   use 8+3 filenam
4230: 65 73 20 69 66 20 74 68 65 20 0a 20 20 64 61 74  es if the .  dat
4240: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
4250: 20 69 73 20 6f 70 65 6e 65 64 20 75 73 69 6e 67   is opened using
4260: 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d   [URI filenames]
4270: 20 77 69 74 68 0a 20 20 74 68 65 20 22 3c 74 74   with.  the "<tt
4280: 3e 38 5f 33 5f 6e 61 6d 65 73 3d 31 3c 2f 74 74  >8_3_names=1</tt
4290: 3e 22 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  >" query paramet
42a0: 65 72 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75  er.  If the valu
42b0: 65 20 6f 66 0a 20 20 74 68 69 73 20 6d 61 63 72  e of.  this macr
42c0: 6f 20 69 73 20 32 2c 20 74 68 65 6e 20 74 68 65  o is 2, then the
42d0: 20 75 73 65 20 6f 66 20 38 2b 33 20 66 69 6c 65   use of 8+3 file
42e0: 6e 61 6d 65 73 20 62 65 63 6f 6d 65 73 20 74 68  names becomes th
42f0: 65 20 64 65 66 61 75 6c 74 0a 20 20 62 75 74 20  e default.  but 
4300: 6d 61 79 20 62 65 20 64 69 73 61 62 6c 65 64 20  may be disabled 
4310: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 3c 74 74  on using the <tt
4320: 3e 38 5f 33 5f 6e 61 6d 65 73 3d 30 3c 2f 74 74  >8_3_names=0</tt
4330: 3e 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65  > query paramete
4340: 72 2e 0a 20 20 53 65 65 20 0a 7d 0a 0a 43 4f 4d  r..  See .}..COM
4350: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4360: 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49  ITE_ENABLE_ATOMI
4370: 43 5f 57 52 49 54 45 7d 20 7b 0a 20 20 49 66 20  C_WRITE} {.  If 
4380: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
4390: 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66  sor macro is def
43a0: 69 6e 65 64 20 61 6e 64 20 69 66 20 74 68 65 0a  ined and if the.
43b0: 20 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74    xDeviceCharact
43c0: 65 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20  eristics method 
43d0: 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  of [sqlite3_io_m
43e0: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 66  ethods] object f
43f0: 6f 72 0a 20 20 61 20 64 61 74 61 62 61 73 65 20  or.  a database 
4400: 66 69 6c 65 20 72 65 70 6f 72 74 73 20 28 76 69  file reports (vi
4410: 61 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53 51  a one of the [SQ
4420: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
4430: 43 5d 20 62 69 74 73 29 0a 20 20 74 68 61 74 20  C] bits).  that 
4440: 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d 20 73  the filesystem s
4450: 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 77  upports atomic w
4460: 72 69 74 65 73 20 61 6e 64 20 69 66 20 61 20 74  rites and if a t
4470: 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 69 6e 76  ransaction.  inv
4480: 6f 6c 76 65 73 20 61 20 63 68 61 6e 67 65 20 74  olves a change t
4490: 6f 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  o only a single 
44a0: 70 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61  page of the data
44b0: 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 74 68 65  base file,.  the
44c0: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
44d0: 6e 20 63 6f 6d 6d 69 74 73 20 77 69 74 68 20 6a  n commits with j
44e0: 75 73 74 20 61 20 73 69 6e 67 6c 65 20 77 72 69  ust a single wri
44f0: 74 65 20 72 65 71 75 65 73 74 20 6f 66 0a 20 20  te request of.  
4500: 61 20 73 69 6e 67 6c 65 20 70 61 67 65 20 6f 66  a single page of
4510: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
4520: 64 20 6e 6f 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  d no rollback jo
4530: 75 72 6e 61 6c 20 69 73 20 63 72 65 61 74 65 64  urnal is created
4540: 0a 20 20 6f 72 20 77 72 69 74 74 65 6e 2e 20 20  .  or written.  
4550: 4f 6e 20 66 69 6c 65 73 79 73 74 65 6d 73 20 74  On filesystems t
4560: 68 61 74 20 73 75 70 70 6f 72 74 20 61 74 6f 6d  hat support atom
4570: 69 63 20 77 72 69 74 65 73 2c 20 74 68 69 73 0a  ic writes, this.
4580: 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63    optimization c
4590: 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 73 69 67  an result in sig
45a0: 6e 69 66 69 63 61 6e 74 20 73 70 65 65 64 20 69  nificant speed i
45b0: 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 0a  mprovements for.
45c0: 20 20 73 6d 61 6c 6c 20 75 70 64 61 74 65 73 2e    small updates.
45d0: 20 20 48 6f 77 65 76 65 72 2c 20 66 65 77 20 66    However, few f
45e0: 69 6c 65 73 79 73 74 65 6d 73 20 73 75 70 70 6f  ilesystems suppo
45f0: 72 74 20 74 68 69 73 20 63 61 70 61 62 69 6c 69  rt this capabili
4600: 74 79 0a 20 20 61 6e 64 20 74 68 65 20 63 6f 64  ty.  and the cod
4610: 65 20 70 61 74 68 73 20 74 68 61 74 20 63 68 65  e paths that che
4620: 63 6b 20 66 6f 72 20 74 68 69 73 20 63 61 70 61  ck for this capa
4630: 62 69 6c 69 74 79 20 73 6c 6f 77 20 64 6f 77 6e  bility slow down
4640: 20 77 72 69 74 65 0a 20 20 70 65 72 66 6f 72 6d   write.  perform
4650: 61 6e 63 65 20 6f 6e 20 73 79 73 74 65 6d 73 20  ance on systems 
4660: 74 68 61 74 20 6c 61 63 6b 20 61 74 6f 6d 69 63  that lack atomic
4670: 20 77 72 69 74 65 20 63 61 70 61 62 69 6c 69 74   write capabilit
4680: 79 2c 20 73 6f 20 74 68 69 73 0a 20 20 66 65 61  y, so this.  fea
4690: 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65 64  ture is disabled
46a0: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a   by default..}..
46b0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
46c0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
46d0: 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 7d 20 7b  LUMN_METADATA} {
46e0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 43 2d 70  .  When this C-p
46f0: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
4700: 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51  o is defined, SQ
4710: 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 73 6f  Lite includes so
4720: 6d 65 0a 20 20 61 64 64 69 74 69 6f 6e 61 6c 20  me.  additional 
4730: 41 50 49 73 20 74 68 61 74 20 70 72 6f 76 69 64  APIs that provid
4740: 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 63 63  e convenient acc
4750: 65 73 73 20 74 6f 20 6d 65 74 61 2d 64 61 74 61  ess to meta-data
4760: 20 61 62 6f 75 74 0a 20 20 74 61 62 6c 65 73 20   about.  tables 
4770: 61 6e 64 20 71 75 65 72 69 65 73 2e 20 20 54 68  and queries.  Th
4780: 65 20 41 50 49 73 20 74 68 61 74 20 61 72 65 20  e APIs that are 
4790: 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20  enabled by this 
47a0: 6f 70 74 69 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c  option are:..  <
47b0: 75 6c 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  ul>.  <li> [sqli
47c0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
47d0: 61 73 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  ase_name()] </li
47e0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
47f0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
4800: 65 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69  e_name16()] </li
4810: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
4820: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
4830: 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c  ame()] </li>.  <
4840: 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  li> [sqlite3_col
4850: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
4860: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
4870: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
4880: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 29 5d 20  _origin_name()] 
4890: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
48a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
48b0: 67 69 6e 5f 6e 61 6d 65 31 36 28 29 5d 20 3c 2f  gin_name16()] </
48c0: 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  li>.  <li> [sqli
48d0: 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
48e0: 5f 6d 65 74 61 64 61 74 61 28 29 5d 20 3c 2f 6c  _metadata()] </l
48f0: 69 3e 0a 20 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f  i>.  </ul>.}..CO
4900: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4910: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
4920: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
4930: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
4940: 64 20 69 6e 20 74 68 65 20 5b 61 6d 61 6c 67 61  d in the [amalga
4950: 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e  mation], version
4960: 20 33 0a 20 20 6f 66 20 74 68 65 20 66 75 6c 6c   3.  of the full
4970: 2d 74 65 78 74 20 73 65 61 72 63 68 20 65 6e 67  -text search eng
4980: 69 6e 65 20 69 73 20 61 64 64 65 64 20 74 6f 20  ine is added to 
4990: 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f 6d 61  the build automa
49a0: 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50  tically..}..COMP
49b0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
49c0: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50  TE_ENABLE_FTS3_P
49d0: 41 52 45 4e 54 48 45 53 49 53 7d 20 7b 0a 20 20  ARENTHESIS} {.  
49e0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 6f 64 69  This option modi
49f0: 66 69 65 73 20 74 68 65 20 71 75 65 72 79 20 70  fies the query p
4a00: 61 74 74 65 72 6e 20 70 61 72 73 65 72 20 69 6e  attern parser in
4a10: 20 46 54 53 33 20 73 75 63 68 20 74 68 61 74 20   FTS3 such that 
4a20: 69 74 0a 20 20 73 75 70 70 6f 72 74 73 20 6f 70  it.  supports op
4a30: 65 72 61 74 6f 72 73 20 41 4e 44 20 61 6e 64 20  erators AND and 
4a40: 4e 4f 54 20 28 69 6e 20 61 64 64 69 74 69 6f 6e  NOT (in addition
4a50: 20 74 6f 20 74 68 65 20 75 73 75 61 6c 20 4f 52   to the usual OR
4a60: 20 61 6e 64 20 4e 45 41 52 29 0a 20 20 61 6e 64   and NEAR).  and
4a70: 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 71 75 65   also allows que
4a80: 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  ry expressions t
4a90: 6f 20 63 6f 6e 74 61 69 6e 20 6e 65 73 74 65 64  o contain nested
4aa0: 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a 7d 0a   parenthesis..}.
4ab0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4ac0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  {SQLITE_ENABLE_F
4ad0: 54 53 34 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  TS4} {.  When th
4ae0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
4af0: 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 61 6d 61  ined in the [ama
4b00: 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76 65 72 73  lgamation], vers
4b10: 69 6f 6e 73 20 33 20 61 6e 64 20 34 0a 20 20 6f  ions 3 and 4.  o
4b20: 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20  f the full-text 
4b30: 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73  search engine is
4b40: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
4b50: 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ild automaticall
4b60: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
4b70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
4b80: 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54 68 69  BLE_ICU} {.  Thi
4b90: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
4ba0: 74 68 65 20 0a 20 20 5b 68 74 74 70 3a 2f 2f 77  the .  [http://w
4bb0: 77 77 2e 69 63 75 2d 70 72 6f 6a 65 63 74 2e 6f  ww.icu-project.o
4bc0: 72 67 2f 20 7c 20 49 6e 74 65 72 6e 61 74 69 6f  rg/ | Internatio
4bd0: 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 66  nal Components f
4be0: 6f 72 20 55 6e 69 63 6f 64 65 5d 0a 20 20 6f 72  or Unicode].  or
4bf0: 20 22 49 43 55 22 20 65 78 74 65 6e 73 69 6f 6e   "ICU" extension
4c00: 20 74 6f 20 53 51 4c 69 74 65 20 74 6f 20 62 65   to SQLite to be
4c10: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 62 75   added to the bu
4c20: 69 6c 64 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c  ild.  .}..COMPIL
4c30: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
4c40: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 7d  _ENABLE_IOTRACE}
4c50: 20 7b 0a 20 20 57 68 65 6e 20 62 6f 74 68 20 74   {.  When both t
4c60: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61  he SQLite core a
4c70: 6e 64 20 74 68 65 20 5b 43 6f 6d 6d 61 6e 64 20  nd the [Command 
4c80: 4c 69 6e 65 20 49 6e 74 65 72 66 61 63 65 5d 20  Line Interface] 
4c90: 28 43 4c 49 29 20 61 72 65 20 62 6f 74 68 20 0a  (CLI) are both .
4ca0: 20 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20    compiled with 
4cb0: 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 74 68 65  this option, the
4cc0: 6e 20 74 68 65 20 43 4c 49 20 70 72 6f 76 69 64  n the CLI provid
4cd0: 65 73 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d  es an extra comm
4ce0: 61 6e 64 0a 20 20 6e 61 6d 65 64 20 22 2e 69 6f  and.  named ".io
4cf0: 74 72 61 63 65 22 20 74 68 61 74 20 70 72 6f 76  trace" that prov
4d00: 69 64 65 73 20 61 20 6c 6f 77 2d 6c 65 76 65 6c  ides a low-level
4d10: 20 6c 6f 67 20 6f 66 20 49 2f 4f 20 61 63 74 69   log of I/O acti
4d20: 76 69 74 79 2e 0a 20 20 54 68 69 73 20 6f 70 74  vity..  This opt
4d30: 69 6f 6e 20 69 73 20 65 78 70 65 72 69 6d 65 6e  ion is experimen
4d40: 74 61 6c 20 61 6e 64 20 6d 61 79 20 62 65 20 64  tal and may be d
4d50: 69 73 63 6f 6e 74 69 6e 75 65 64 20 69 6e 20 61  iscontinued in a
4d60: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e   future release.
4d70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
4d80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
4d90: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 7d  E_LOCKING_STYLE}
4da0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
4db0: 20 65 6e 61 62 6c 65 73 20 61 64 64 69 74 69 6f   enables additio
4dc0: 6e 61 6c 20 6c 6f 67 69 63 20 69 6e 20 74 68 65  nal logic in the
4dd0: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
4de0: 79 65 72 20 66 6f 72 0a 20 20 4d 61 63 20 4f 53  yer for.  Mac OS
4df0: 20 58 2e 20 54 68 65 20 61 64 64 69 74 69 6f 6e   X. The addition
4e00: 61 6c 20 6c 6f 67 69 63 20 61 74 74 65 6d 70 74  al logic attempt
4e10: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
4e20: 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20  he type of the. 
4e30: 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65   underlying file
4e40: 73 79 73 74 65 6d 20 61 6e 64 20 63 68 6f 6f 73  system and choos
4e50: 65 20 61 6e 64 20 61 6c 74 65 72 6e 61 74 69 76  e and alternativ
4e60: 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65  e locking strate
4e70: 67 79 0a 20 20 74 68 61 74 20 77 6f 72 6b 73 20  gy.  that works 
4e80: 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 74 68  correctly for th
4e90: 61 74 20 66 69 6c 65 73 79 73 74 65 6d 20 74 79  at filesystem ty
4ea0: 70 65 2e 20 46 69 76 65 20 6c 6f 63 6b 69 6e 67  pe. Five locking
4eb0: 20 73 74 72 61 74 65 67 69 65 73 20 0a 20 20 61   strategies .  a
4ec0: 72 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 0a 20  re available:.. 
4ed0: 20 3c 75 6c 3e 0a 20 20 20 20 3c 6c 69 3e 20 50   <ul>.    <li> P
4ee0: 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74 79  OSIX locking sty
4ef0: 6c 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20  le. This is the 
4f00: 64 65 66 61 75 6c 74 20 6c 6f 63 6b 69 6e 67 20  default locking 
4f10: 73 74 79 6c 65 20 61 6e 64 20 74 68 65 0a 20 20  style and the.  
4f20: 20 20 20 20 20 20 20 73 74 79 6c 65 20 75 73 65         style use
4f30: 64 20 62 79 20 6f 74 68 65 72 20 28 6e 6f 6e 20  d by other (non 
4f40: 4d 61 63 20 4f 53 20 58 29 20 55 6e 69 78 65 73  Mac OS X) Unixes
4f50: 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f 62 74 61  . Locks are obta
4f60: 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 20 20  ined and .      
4f70: 20 20 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e     released usin
4f80: 67 20 74 68 65 20 66 63 6e 74 6c 28 29 20 73 79  g the fcntl() sy
4f90: 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20 20 20  stem call...    
4fa0: 3c 6c 69 3e 20 41 46 50 20 6c 6f 63 6b 69 6e 67  <li> AFP locking
4fb0: 20 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63   style. This loc
4fc0: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
4fd0: 65 64 20 66 6f 72 20 6e 65 74 77 6f 72 6b 20 66  ed for network f
4fe0: 69 6c 65 20 0a 20 20 20 20 20 20 20 20 20 73 79  ile .         sy
4ff0: 73 74 65 6d 73 20 74 68 61 74 20 75 73 65 20 74  stems that use t
5000: 68 65 20 41 46 50 20 28 41 70 70 6c 65 20 46 69  he AFP (Apple Fi
5010: 6c 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 29 20 70  ling Protocol) p
5020: 72 6f 74 6f 63 6f 6c 2e 20 4c 6f 63 6b 73 0a 20  rotocol. Locks. 
5030: 20 20 20 20 20 20 20 20 61 72 65 20 6f 62 74 61          are obta
5040: 69 6e 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  ined by calling 
5050: 74 68 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  the library func
5060: 74 69 6f 6e 20 5f 41 46 50 46 53 53 65 74 4c 6f  tion _AFPFSSetLo
5070: 63 6b 28 29 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20  ck()...    <li> 
5080: 46 6c 6f 63 6b 20 6c 6f 63 6b 69 6e 67 20 73 74  Flock locking st
5090: 79 6c 65 2e 20 54 68 69 73 20 69 73 20 75 73 65  yle. This is use
50a0: 64 20 66 6f 72 20 66 69 6c 65 2d 73 79 73 74 65  d for file-syste
50b0: 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 20  ms that do not. 
50c0: 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20          support 
50d0: 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20 73 74  POSIX locking st
50e0: 79 6c 65 2e 20 4c 6f 63 6b 73 20 61 72 65 20 6f  yle. Locks are o
50f0: 62 74 61 69 6e 65 64 20 61 6e 64 20 72 65 6c 65  btained and rele
5100: 61 73 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20  ased using.     
5110: 20 20 20 20 74 68 65 20 66 6c 6f 63 6b 28 29 20      the flock() 
5120: 73 79 73 74 65 6d 20 63 61 6c 6c 2e 0a 0a 20 20  system call...  
5130: 20 20 3c 6c 69 3e 20 44 6f 74 2d 66 69 6c 65 20    <li> Dot-file 
5140: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
5150: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
5160: 65 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 6e  e is used when n
5170: 65 69 74 68 65 72 0a 20 20 20 20 20 20 20 20 20  either.         
5180: 66 6c 6f 63 6b 20 6e 6f 72 20 50 4f 53 49 58 20  flock nor POSIX 
5190: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 73 20 61  locking styles a
51a0: 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
51b0: 74 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 2e  the file system.
51c0: 0a 20 20 20 20 20 20 20 20 20 44 61 74 61 62 61  .         Databa
51d0: 73 65 20 6c 6f 63 6b 73 20 61 72 65 20 6f 62 74  se locks are obt
51e0: 61 69 6e 65 64 20 62 79 20 63 72 65 61 74 69 6e  ained by creatin
51f0: 67 20 61 6e 64 20 65 6e 74 72 79 20 69 6e 20 74  g and entry in t
5200: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
5210: 20 20 20 20 20 20 20 20 61 74 20 61 20 77 65 6c          at a wel
5220: 6c 2d 6b 6e 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e  l-known location
5230: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
5240: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 28   database file (
5250: 61 20 22 64 6f 74 2d 66 69 6c 65 22 29 0a 20 20  a "dot-file").  
5260: 20 20 20 20 20 20 20 61 6e 64 20 72 65 6c 69 6e         and relin
5270: 71 75 69 73 68 65 64 20 62 79 20 64 65 6c 65 74  quished by delet
5280: 69 6e 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c  ing the same fil
5290: 65 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 4e 6f 20  e...    <li> No 
52a0: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 49  locking style. I
52b0: 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  f none of the ab
52c0: 6f 76 65 20 63 61 6e 20 62 65 20 73 75 70 70 6f  ove can be suppo
52d0: 72 74 65 64 2c 20 74 68 69 73 20 0a 20 20 20 20  rted, this .    
52e0: 20 20 20 20 20 6c 6f 63 6b 69 6e 67 20 73 74 79       locking sty
52f0: 6c 65 20 69 73 20 75 73 65 64 2e 20 4e 6f 20 64  le is used. No d
5300: 61 74 61 62 61 73 65 20 6c 6f 63 6b 69 6e 67 20  atabase locking 
5310: 6d 65 63 68 61 6e 69 73 6d 20 69 73 20 75 73 65  mechanism is use
5320: 64 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20  d. When.        
5330: 20 74 68 69 73 20 73 79 73 74 65 6d 20 69 73 20   this system is 
5340: 75 73 65 64 20 69 74 20 69 73 20 6e 6f 74 20 73  used it is not s
5350: 61 66 65 20 66 6f 72 20 61 20 73 69 6e 67 6c 65  afe for a single
5360: 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 0a   database to be.
5370: 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73 65           accesse
5380: 64 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6c  d by multiple cl
5390: 69 65 6e 74 73 2e 0a 20 20 3c 2f 75 6c 3e 0a 0a  ients..  </ul>..
53a0: 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
53b0: 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53 5d  five extra [VFS]
53c0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
53d0: 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 61 73   are provided as
53e0: 20 77 65 6c 6c 20 61 73 20 74 68 65 0a 20 20 64   well as the.  d
53f0: 65 66 61 75 6c 74 2e 20 42 79 20 73 70 65 63 69  efault. By speci
5400: 66 79 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  fying one of the
5410: 20 65 78 74 72 61 20 56 46 53 20 69 6d 70 6c 65   extra VFS imple
5420: 6d 65 6e 74 61 74 69 6f 6e 73 20 0a 20 20 77 68  mentations .  wh
5430: 65 6e 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69  en calling [sqli
5440: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
5450: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  an application m
5460: 61 79 20 62 79 70 61 73 73 20 74 68 65 20 66 69  ay bypass the fi
5470: 6c 65 2d 73 79 73 74 65 6d 0a 20 20 64 65 74 65  le-system.  dete
5480: 63 74 69 6f 6e 20 6c 6f 67 69 63 20 61 6e 64 20  ction logic and 
5490: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 6c 65 63  explicitly selec
54a0: 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  t one of the abo
54b0: 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65  ve locking style
54c0: 73 2e 20 54 68 65 0a 20 20 66 69 76 65 20 65 78  s. The.  five ex
54d0: 74 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d  tra [VFS] implem
54e0: 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 63 61  entations are ca
54f0: 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f 73 69 78  lled "unix-posix
5500: 22 2c 20 22 75 6e 69 78 2d 61 66 70 22 2c 0a 20  ", "unix-afp",. 
5510: 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22 2c 20 22   "unix-flock", "
5520: 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 20 61 6e  unix-dotfile" an
5530: 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22 2e 0a 7d  d "unix-none"..}
5540: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5550: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
5560: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
5570: 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  T} {.  This opti
5580: 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c 6f  on adds extra lo
5590: 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74 68  gic to SQLite th
55a0: 61 74 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f 20  at allows it to 
55b0: 72 65 6c 65 61 73 65 20 75 6e 75 73 65 64 0a 20  release unused. 
55c0: 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20 72 65 71   memory upon req
55d0: 75 65 73 74 2e 20 20 54 68 69 73 20 6f 70 74 69  uest.  This opti
55e0: 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c  on must be enabl
55f0: 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20  ed in order for 
5600: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72  the.  [sqlite3_r
5610: 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d  elease_memory()]
5620: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 77 6f   interface to wo
5630: 72 6b 2e 20 20 49 66 20 74 68 69 73 20 63 6f 6d  rk.  If this com
5640: 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70 74 69  pile-time.  opti
5650: 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20  on is not used, 
5660: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  the [sqlite3_rel
5670: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69  ease_memory()] i
5680: 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 0a 20  nterface is a . 
5690: 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d 50 49   no-op..}..COMPI
56a0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
56b0: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
56c0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
56d0: 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64 65 20  n includes code 
56e0: 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  in SQLite that i
56f0: 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61 6c 74  mplements an alt
5700: 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d 6f 72  ernative.  memor
5710: 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 54 68  y allocator.  Th
5720: 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  is alternative m
5730: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
5740: 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65 64 0a  is only engaged.
5750: 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51 4c 49    when the [SQLI
5760: 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 20  TE_CONFIG_HEAP] 
5770: 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
5780: 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  e3_config()] is 
5790: 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70 6c 79  used to.  supply
57a0: 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b 20 6f   a large chunk o
57b0: 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 77 68  f memory from wh
57c0: 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  ich all memory a
57d0: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 0a 20  llocations are. 
57e0: 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20 4d 45   taken..  The ME
57f0: 4d 53 59 53 33 20 6d 65 6d 6f 72 79 20 61 6c 6c  MSYS3 memory all
5800: 6f 63 61 74 6f 72 20 75 73 65 73 20 61 20 68 79  ocator uses a hy
5810: 62 72 69 64 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  brid allocation 
5820: 61 6c 67 6f 72 69 74 68 6d 20 0a 20 20 70 61 74  algorithm .  pat
5830: 74 65 72 6e 65 64 20 61 66 74 65 72 20 64 6c 6d  terned after dlm
5840: 61 6c 6c 6f 63 28 29 2e 20 20 20 4f 6e 6c 79 20  alloc().   Only 
5850: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 45 4e  one of SQLITE_EN
5860: 41 42 4c 45 5f 4d 45 4d 53 59 53 33 20 61 6e 64  ABLE_MEMSYS3 and
5870: 20 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   .  SQLITE_ENABL
5880: 45 5f 4d 45 4d 53 59 53 35 20 6d 61 79 20 62 65  E_MEMSYS5 may be
5890: 20 65 6e 61 62 6c 65 64 20 61 74 20 6f 6e 63 65   enabled at once
58a0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
58b0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
58c0: 4c 45 5f 4d 45 4d 53 59 53 35 7d 20 7b 0a 20 20  LE_MEMSYS5} {.  
58d0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c  This option incl
58e0: 75 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c  udes code in SQL
58f0: 69 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ite that impleme
5900: 6e 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  nts an alternati
5910: 76 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ve.  memory allo
5920: 63 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74  cator.  This alt
5930: 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  ernative memory 
5940: 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c  allocator is onl
5950: 79 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e  y engaged.  when
5960: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
5970: 46 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e  FIG_HEAP] option
5980: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
5990: 66 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74  fig()] is used t
59a0: 6f 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72  o.  supply a lar
59b0: 67 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f  ge chunk of memo
59c0: 72 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c  ry from which al
59d0: 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
59e0: 69 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e  ions are.  taken
59f0: 2e 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 35 20  ..  The MEMSYS5 
5a00: 6d 6f 64 75 6c 65 20 72 6f 75 6e 64 73 20 61 6c  module rounds al
5a10: 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 75 70  l allocations up
5a20: 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 6f 77   to the next pow
5a30: 65 72 0a 20 20 6f 66 20 74 77 6f 20 61 6e 64 20  er.  of two and 
5a40: 75 73 65 73 20 61 20 66 69 72 73 74 2d 66 69 74  uses a first-fit
5a50: 2c 20 62 75 64 64 79 2d 61 6c 6c 6f 63 61 74 6f  , buddy-allocato
5a60: 72 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 74 68  r algorithm.  th
5a70: 61 74 20 70 72 6f 76 69 64 65 73 20 73 74 72 6f  at provides stro
5a80: 6e 67 20 67 75 61 72 61 6e 74 65 65 73 20 61 67  ng guarantees ag
5a90: 61 69 6e 73 74 20 66 72 61 67 6d 65 6e 74 61 74  ainst fragmentat
5aa0: 69 6f 6e 20 61 6e 64 20 62 72 65 61 6b 64 6f 77  ion and breakdow
5ab0: 6e 0a 20 20 73 75 62 6a 65 63 74 20 74 6f 20 63  n.  subject to c
5ac0: 65 72 74 61 69 6e 20 6f 70 65 72 61 74 69 6e 67  ertain operating
5ad0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a   constraints..}.
5ae0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
5af0: 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52  {SQLITE_ENABLE_R
5b00: 54 52 45 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  TREE} {.  This o
5b10: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c  ption causes SQL
5b20: 69 74 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 73  ite to include s
5b30: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a 20  upport for the. 
5b40: 20 5b 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65   [rtree | R*Tree
5b50: 20 69 6e 64 65 78 20 65 78 74 65 6e 73 69 6f 6e   index extension
5b60: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
5b70: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 52 54 52  TION {SQLITE_RTR
5b80: 45 45 5f 49 4e 54 5f 4f 4e 4c 59 7d 20 7b 0a 20  EE_INT_ONLY} {. 
5b90: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
5ba0: 69 73 20 75 73 65 64 20 74 6f 67 65 74 68 65 72  is used together
5bb0: 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 45 4e   with [SQLITE_EN
5bc0: 41 42 4c 45 5f 52 54 52 45 45 5d 20 74 68 65 6e  ABLE_RTREE] then
5bd0: 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20 7c 20   the.  [rtree | 
5be0: 52 2a 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e  R*Tree extension
5bf0: 5d 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 74 6f 72  ] will only stor
5c00: 65 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20  e 32-bit signed 
5c10: 69 6e 74 65 67 65 72 0a 20 20 63 6f 6f 72 64 69  integer.  coordi
5c20: 6e 61 74 65 73 20 61 6e 64 20 61 6c 6c 20 69 6e  nates and all in
5c30: 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69  ternal computati
5c40: 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65  ons will be done
5c50: 20 75 73 69 6e 67 20 69 6e 74 65 67 65 72 73 0a   using integers.
5c60: 20 20 69 6e 73 74 65 61 64 20 6f 66 20 66 6c 6f    instead of flo
5c70: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
5c80: 65 72 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ers..}..COMPILE_
5c90: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
5ca0: 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 7d 20 7b 0a  NABLE_SQLLOG} {.
5cb0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e    This option en
5cc0: 61 62 6c 65 73 20 65 78 74 72 61 20 63 6f 64 65  ables extra code
5cd0: 20 28 65 73 70 65 63 69 61 6c 6c 79 20 74 68 65   (especially the
5ce0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
5cf0: 53 51 4c 4c 4f 47 5d 0a 20 20 6f 70 74 69 6f 6e  SQLLOG].  option
5d00: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
5d10: 66 69 67 28 29 5d 29 20 74 68 61 74 20 63 61 6e  fig()]) that can
5d20: 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61   be used to crea
5d30: 74 65 20 6c 6f 67 73 20 6f 66 20 61 6c 6c 0a 20  te logs of all. 
5d40: 20 53 51 4c 69 74 65 20 70 72 6f 63 65 73 73 69   SQLite processi
5d50: 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  ng performed by 
5d60: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  an application. 
5d70: 20 54 68 65 73 65 20 6c 6f 67 73 20 63 61 6e 20   These logs can 
5d80: 62 65 20 75 73 65 66 75 6c 0a 20 20 69 6e 20 64  be useful.  in d
5d90: 6f 69 6e 67 20 6f 66 66 2d 6c 69 6e 65 20 61 6e  oing off-line an
5da0: 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 62 65  alysis of the be
5db0: 68 61 76 69 6f 72 20 6f 66 20 61 6e 20 61 70 70  havior of an app
5dc0: 6c 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 65 73  lication, and es
5dd0: 70 65 63 69 61 6c 6c 79 0a 20 20 66 6f 72 20 70  pecially.  for p
5de0: 65 72 66 6f 72 6d 61 6e 63 65 20 61 6e 61 6c 79  erformance analy
5df0: 73 69 73 2e 20 20 49 6e 20 6f 72 64 65 72 20 66  sis.  In order f
5e00: 6f 72 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e  or the SQLITE_EN
5e10: 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f 70 74 69  ABLE_SQLLOG opti
5e20: 6f 6e 20 74 6f 20 0a 20 20 62 65 20 75 73 65 66  on to .  be usef
5e30: 75 6c 2c 20 73 6f 6d 65 20 65 78 74 72 61 20 63  ul, some extra c
5e40: 6f 64 65 20 69 73 20 72 65 71 75 69 72 65 64 2e  ode is required.
5e50: 20 20 54 68 65 20 0a 20 20 3c 61 20 68 72 65 66    The .  <a href
5e60: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c  ="http://www.sql
5e70: 69 74 65 2e 6f 72 67 2f 73 72 63 2f 64 6f 63 2f  ite.org/src/doc/
5e80: 74 72 75 6e 6b 2f 73 72 63 2f 74 65 73 74 5f 73  trunk/src/test_s
5e90: 71 6c 6c 6f 67 2e 63 22 3e 22 74 65 73 74 5f 73  qllog.c">"test_s
5ea0: 71 6c 6c 6f 67 2e 63 22 3c 2f 61 3e 0a 20 20 73  qllog.c"</a>.  s
5eb0: 6f 75 72 63 65 20 63 6f 64 65 0a 20 20 66 69 6c  ource code.  fil
5ec0: 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20  e in the SQLite 
5ed0: 73 6f 75 72 63 65 20 74 72 65 65 20 69 73 20 61  source tree is a
5ee0: 20 77 6f 72 6b 69 6e 67 20 65 78 61 6d 70 6c 65   working example
5ef0: 20 6f 66 20 74 68 65 20 72 65 71 75 69 72 65 64   of the required
5f00: 20 65 78 74 72 61 0a 20 20 63 6f 64 65 2e 20 20   extra.  code.  
5f10: 4f 6e 20 75 6e 69 78 20 61 6e 64 20 77 69 6e 64  On unix and wind
5f20: 6f 77 73 20 73 79 73 74 65 6d 73 2c 20 61 20 64  ows systems, a d
5f30: 65 76 65 6c 6f 70 65 72 20 63 61 6e 20 61 70 70  eveloper can app
5f40: 65 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20  end the text of 
5f50: 74 68 65 0a 20 20 22 74 65 73 74 5f 73 71 6c 6c  the.  "test_sqll
5f60: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 63 6f 64  og.c" source cod
5f70: 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 65 6e  e file to the en
5f80: 64 20 6f 66 20 61 6e 20 22 73 71 6c 69 74 65 33  d of an "sqlite3
5f90: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
5fa0: 2c 0a 20 20 72 65 63 6f 6d 70 69 6c 65 20 74 68  ,.  recompile th
5fb0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
5fc0: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
5fd0: 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 20 6f  _ENABLE_SQLLOG o
5fe0: 70 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 20 20 63  ption, then .  c
5ff0: 6f 6e 74 72 6f 6c 20 6c 6f 67 67 69 6e 67 20 75  ontrol logging u
6000: 73 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  sing environment
6010: 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 65 65   variables.  See
6020: 20 74 68 65 20 68 65 61 64 65 72 20 63 6f 6d 6d   the header comm
6030: 65 6e 74 20 6f 6e 20 0a 20 20 74 68 65 20 22 74  ent on .  the "t
6040: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
6050: 75 72 63 65 20 66 69 6c 65 20 66 6f 72 20 61 64  urce file for ad
6060: 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 2e  ditional detail.
6070: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
6080: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
6090: 42 4c 45 5f 53 54 41 54 32 7d 20 7b 0a 20 20 54  BLE_STAT2} {.  T
60a0: 68 69 73 20 6f 70 74 69 6f 6e 20 75 73 65 64 20  his option used 
60b0: 74 6f 20 63 61 75 73 65 20 74 68 65 20 5b 41 4e  to cause the [AN
60c0: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 74  ALYZE] command t
60d0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 69 6e 64 65  o collect.  inde
60e0: 78 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  x histogram data
60f0: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
6100: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
6110: 65 2e 20 20 42 75 74 20 74 68 61 74 0a 20 20 66  e.  But that.  f
6120: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 77 61 73  unctionality was
6130: 20 73 75 70 65 72 63 65 64 65 64 20 62 79 20 5b   superceded by [
6140: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
6150: 41 54 33 5d 20 61 73 20 6f 66 0a 20 20 53 51 4c  AT3] as of.  SQL
6160: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
6170: 39 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45  9.  The SQLITE_E
6180: 4e 41 42 4c 45 5f 53 54 41 54 32 20 63 6f 6d 70  NABLE_STAT2 comp
6190: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a  ile-time option.
61a0: 20 20 69 73 20 6e 6f 77 20 61 20 6e 6f 2d 6f 70    is now a no-op
61b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
61c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
61d0: 4c 45 5f 53 54 41 54 33 7d 20 7b 0a 20 20 54 68  LE_STAT3} {.  Th
61e0: 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20 61  is option adds a
61f0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
6200: 74 6f 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d  to the [ANALYZE]
6210: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 6f 0a   command and to.
6220: 20 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61    the [query pla
6230: 6e 6e 65 72 5d 20 74 68 61 74 20 63 61 6e 20 68  nner] that can h
6240: 65 6c 70 20 53 51 4c 69 74 65 20 74 6f 20 63 68  elp SQLite to ch
6250: 6f 73 65 20 61 20 62 65 74 74 65 72 20 71 75 65  ose a better que
6260: 72 79 20 70 6c 61 6e 0a 20 20 75 6e 64 65 72 20  ry plan.  under 
6270: 63 65 72 74 61 69 6e 20 73 69 74 75 61 74 69 6f  certain situatio
6280: 6e 73 2e 20 20 54 68 65 20 5b 41 4e 41 4c 59 5a  ns.  The [ANALYZ
6290: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e  E] command is en
62a0: 68 61 6e 63 65 64 20 74 6f 20 63 6f 6c 6c 65 63  hanced to collec
62b0: 74 0a 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61  t.  histogram da
62c0: 74 61 20 66 72 6f 6d 20 65 61 63 68 20 69 6e 64  ta from each ind
62d0: 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61  ex and store tha
62e0: 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20  t data.  in the 
62f0: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 33 3c  <b>sqlite_stat3<
6300: 2f 62 3e 20 74 61 62 6c 65 2e 20 20 54 68 65 20  /b> table.  The 
6310: 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69  query planner wi
6320: 6c 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a  ll then use the.
6330: 20 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61    histogram data
6340: 20 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65   to help it make
6350: 20 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68   better index ch
6360: 6f 69 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  oices..}..COMPIL
6370: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6380: 5f 45 4e 41 42 4c 45 5f 54 52 45 45 5f 45 58 50  _ENABLE_TREE_EXP
6390: 4c 41 49 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LAIN} {.  This o
63a0: 70 74 69 6f 6e 20 61 64 64 73 20 73 75 70 70 6f  ption adds suppo
63b0: 72 74 20 66 6f 72 20 74 68 65 20 5b 53 51 4c 49  rt for the [SQLI
63c0: 54 45 5f 54 45 53 54 43 54 52 4c 5f 45 58 50 4c  TE_TESTCTRL_EXPL
63d0: 41 49 4e 5f 53 54 4d 54 5d 20 74 65 73 74 2d 63  AIN_STMT] test-c
63e0: 6f 6e 74 72 6f 6c 0a 20 20 69 6e 20 74 68 65 20  ontrol.  in the 
63f0: 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 57 68  SQLite core.  Wh
6400: 65 6e 20 74 68 65 20 5b 63 6f 6d 6d 61 6e 64 2d  en the [command-
6410: 6c 69 6e 65 20 73 68 65 6c 6c 5d 20 69 73 20 61  line shell] is a
6420: 6c 73 6f 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  lso compiled wit
6430: 68 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c  h.  this option,
6440: 20 74 68 65 20 22 2e 65 78 70 6c 61 69 6e 22 20   the ".explain" 
6450: 64 6f 74 2d 63 6f 6d 6d 61 6e 64 20 65 6e 61 62  dot-command enab
6460: 6c 65 73 20 61 20 6d 6f 64 65 20 74 68 61 74 20  les a mode that 
6470: 75 73 65 73 20 74 68 65 0a 20 20 5b 53 51 4c 49  uses the.  [SQLI
6480: 54 45 5f 54 45 53 54 43 54 52 4c 5f 45 58 50 4c  TE_TESTCTRL_EXPL
6490: 41 49 4e 5f 53 54 4d 54 5d 20 69 6e 74 65 72 66  AIN_STMT] interf
64a0: 61 63 65 20 74 6f 20 64 69 73 70 6c 61 79 20 61  ace to display a
64b0: 6e 20 41 53 43 49 49 2d 61 72 74 20 64 69 61 67  n ASCII-art diag
64c0: 72 61 6d 0a 20 20 6f 66 20 74 68 65 20 70 61 72  ram.  of the par
64d0: 73 65 20 74 72 65 65 20 66 6f 72 20 65 61 63 68  se tree for each
64e0: 20 53 51 4c 20 71 75 65 72 79 20 73 74 61 74 65   SQL query state
64f0: 6d 65 6e 74 20 74 68 61 74 20 69 73 20 72 75 6e  ment that is run
6500: 20 69 6e 20 74 68 65 20 73 68 65 6c 6c 2e 0a 20   in the shell.. 
6510: 20 54 68 69 73 20 6d 65 63 68 61 6e 69 73 6d 20   This mechanism 
6520: 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65  is useful for de
6530: 62 75 67 67 69 6e 67 20 74 68 65 20 53 51 4c 69  bugging the SQLi
6540: 74 65 20 70 61 72 73 65 72 20 61 6e 64 20 63 6f  te parser and co
6550: 64 65 0a 20 20 67 65 6e 65 72 61 74 6f 72 2e 20  de.  generator. 
6560: 20 54 68 69 73 20 77 68 6f 6c 65 20 6d 65 63 68   This whole mech
6570: 61 6e 69 73 6d 20 69 73 20 68 69 67 68 6c 79 20  anism is highly 
6580: 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64  experimental and
6590: 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 0a 20 20   could change.  
65a0: 64 72 61 73 74 69 63 61 6c 6c 79 20 6f 72 20 62  drastically or b
65b0: 65 20 65 6c 69 6d 69 6e 61 74 65 64 20 69 6e 20  e eliminated in 
65c0: 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20  future releases 
65d0: 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f  of SQLite..}..CO
65e0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
65f0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
6600: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 7d  TE_DELETE_LIMIT}
6610: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
6620: 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74 69   enables an opti
6630: 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e  onal ORDER BY an
6640: 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6f  d LIMIT clause o
6650: 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61 6e  n .  [UPDATE] an
6660: 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  d [DELETE] state
6670: 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66 20  ments...  <p>If 
6680: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
6690: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74 20  efined, then it 
66a0: 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20 20  must also be .  
66b0: 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73 69  defined when usi
66c0: 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74  ng the 'lemon' t
66d0: 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65 20  ool to generate 
66e0: 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c 65  a parse.c.  file
66f0: 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  . Because of thi
6700: 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d  s, this option m
6710: 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20  ay only be used 
6720: 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79  when the library
6730: 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f 6d   is built.  from
6740: 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f   source, not fro
6750: 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  m the [amalgamat
6760: 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65  ion] or from the
6770: 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 20   collection of. 
6780: 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43 20   pre-packaged C 
6790: 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20 66  files provided f
67a0: 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65  or non-Unix like
67b0: 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68   platforms on th
67c0: 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f 70  e website..  </p
67d0: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
67e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
67f0: 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59  LE_UNLOCK_NOTIFY
6800: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
6810: 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b 73  n enables the [s
6820: 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e 6f  qlite3_unlock_no
6830: 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61 63  tify()] interfac
6840: 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73 6f  e and.  its asso
6850: 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 61  ciated functiona
6860: 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65 20 64  lity.  See the d
6870: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69 74  ocumentation tit
6880: 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68 65  led.  [Using the
6890: 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20 4e   SQLite Unlock N
68a0: 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61 74  otification Feat
68b0: 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f  ure] for additio
68c0: 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69 6f  nal.  informatio
68d0: 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  n..}..COMPILE_OP
68e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f 55  TION {SQLITE_SOU
68f0: 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f  NDEX} {.  This o
6900: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68  ption enables th
6910: 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51 4c  e [soundex() SQL
6920: 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a 43   function]..}..C
6930: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59  OMPILE_OPTION {Y
6940: 59 54 52 41 43 4b 4d 41 58 53 54 41 43 4b 44 45  YTRACKMAXSTACKDE
6950: 50 54 48 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  PTH} {.  This op
6960: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
6970: 4c 41 4c 52 28 31 29 20 70 61 72 73 65 72 20 73  LALR(1) parser s
6980: 74 61 63 6b 20 64 65 70 74 68 20 74 6f 20 62 65  tack depth to be
6990: 20 74 72 61 63 6b 65 64 0a 20 20 61 6e 64 20 72   tracked.  and r
69a0: 65 70 6f 72 74 65 64 20 75 73 69 6e 67 20 74 68  eported using th
69b0: 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75  e [sqlite3_statu
69c0: 73 5d 28 5b 53 51 4c 49 54 45 5f 53 54 41 54 55  s]([SQLITE_STATU
69d0: 53 5f 50 41 52 53 45 52 5f 53 54 41 43 4b 5d 2c  S_PARSER_STACK],
69e0: 2e 2e 2e 29 0a 20 20 69 6e 74 65 72 66 61 63 65  ...).  interface
69f0: 2e 20 20 53 51 4c 69 74 65 27 73 20 4c 41 4c 52  .  SQLite's LALR
6a00: 28 31 29 20 70 61 72 73 65 72 20 68 61 73 20 61  (1) parser has a
6a10: 20 66 69 78 65 64 20 73 74 61 63 6b 20 64 65 70   fixed stack dep
6a20: 74 68 0a 20 20 28 64 65 74 65 72 6d 69 6e 65 64  th.  (determined
6a30: 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65   at compile-time
6a40: 20 75 73 69 6e 67 20 74 68 65 20 5b 59 59 53 54   using the [YYST
6a50: 41 43 4b 44 45 50 54 48 5d 20 6f 70 74 69 6f 6e  ACKDEPTH] option
6a60: 73 29 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  s)..  This optio
6a70: 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
6a80: 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20   help determine 
6a90: 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  if an applicatio
6aa0: 6e 20 69 73 0a 20 20 67 65 74 74 69 6e 67 20 63  n is.  getting c
6ab0: 6c 6f 73 65 20 74 6f 20 65 78 63 65 65 64 69 6e  lose to exceedin
6ac0: 67 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 4c 41  g the maximum LA
6ad0: 4c 52 28 31 29 20 73 74 61 63 6b 20 64 65 70 74  LR(1) stack dept
6ae0: 68 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20  h..}.</tcl>..<a 
6af0: 6e 61 6d 65 3d 22 64 69 73 61 62 6c 65 66 65 61  name="disablefea
6b00: 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32 3e  tures"></a>.<h2>
6b10: 31 2e 35 20 4f 70 74 69 6f 6e 73 20 54 6f 20 44  1.5 Options To D
6b20: 69 73 61 62 6c 65 20 46 65 61 74 75 72 65 73 20  isable Features 
6b30: 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e 65 64 20  Normally Turned 
6b40: 4f 6e 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a 43  On</h2>..<tcl>.C
6b50: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6b60: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46  QLITE_DISABLE_LF
6b70: 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  S} {.  If this C
6b80: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
6b90: 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c 20  cro is defined, 
6ba0: 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f  large file suppo
6bb0: 72 74 0a 20 20 69 73 20 64 69 73 61 62 6c 65 64  rt.  is disabled
6bc0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6bd0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
6be0: 42 4c 45 5f 44 49 52 53 59 4e 43 7d 20 7b 0a 20  BLE_DIRSYNC} {. 
6bf0: 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70 72   If this C-prepr
6c00: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
6c10: 20 64 65 66 69 6e 65 64 2c 20 64 69 72 65 63 74   defined, direct
6c20: 6f 72 79 20 73 79 6e 63 73 0a 20 20 61 72 65 20  ory syncs.  are 
6c30: 64 69 73 61 62 6c 65 64 2e 20 20 53 51 4c 69 74  disabled.  SQLit
6c40: 65 20 74 79 70 69 63 61 6c 6c 79 20 61 74 74 65  e typically atte
6c50: 6d 70 74 73 20 74 6f 20 73 79 6e 63 20 74 68 65  mpts to sync the
6c60: 20 70 61 72 65 6e 74 0a 20 20 64 69 72 65 63 74   parent.  direct
6c70: 6f 72 79 20 77 68 65 6e 20 61 20 66 69 6c 65 20  ory when a file 
6c80: 69 73 20 64 65 6c 65 74 65 64 20 74 6f 20 65 6e  is deleted to en
6c90: 73 75 72 65 20 74 68 65 20 64 69 72 65 63 74 6f  sure the directo
6ca0: 72 79 0a 20 20 65 6e 74 72 69 65 73 20 61 72 65  ry.  entries are
6cb0: 20 75 70 64 61 74 65 64 20 69 6d 6d 65 64 69 61   updated immedia
6cc0: 74 65 6c 79 20 6f 6e 20 64 69 73 6b 2e 0a 7d 0a  tely on disk..}.
6cd0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
6ce0: 7b 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f  {SQLITE_DISABLE_
6cf0: 46 54 53 33 5f 55 4e 49 43 4f 44 45 7d 20 7b 0a  FTS3_UNICODE} {.
6d00: 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65 70    If this C-prep
6d10: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69  rocessor macro i
6d20: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
6d30: 75 6e 69 63 6f 64 65 36 31 5d 20 74 6f 6b 65 6e  unicode61] token
6d40: 69 7a 65 72 0a 20 20 69 6e 20 5b 46 54 53 33 5d  izer.  in [FTS3]
6d50: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
6d60: 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 69   the build and i
6d70: 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 20 74 6f  s unavailable to
6d80: 20 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   .  applications
6d90: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
6da0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53 41  ION {SQLITE_DISA
6db0: 42 4c 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45  BLE_FTS4_DEFERRE
6dc0: 44 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 43  D} {.  If this C
6dd0: 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61  -preprocessor ma
6de0: 63 72 6f 20 64 69 73 61 62 6c 65 73 20 74 68 65  cro disables the
6df0: 20 22 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e   "deferred token
6e00: 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20  " optimization. 
6e10: 20 69 6e 20 5b 46 54 53 34 5d 2e 20 20 54 68 65   in [FTS4].  The
6e20: 20 22 64 65 66 65 72 72 65 64 20 74 6f 6b 65 6e   "deferred token
6e30: 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61  " optimization a
6e40: 76 6f 69 64 73 20 6c 6f 61 64 69 6e 67 20 6d 61  voids loading ma
6e50: 73 73 69 76 65 0a 20 20 70 6f 73 74 69 6e 67 20  ssive.  posting 
6e60: 6c 69 73 74 73 20 66 6f 72 20 74 65 72 6d 73 20  lists for terms 
6e70: 74 68 61 74 20 61 72 65 20 69 6e 20 6d 6f 73 74  that are in most
6e80: 20 64 6f 63 75 6d 65 6e 74 73 20 6f 66 20 74 68   documents of th
6e90: 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 61  e collection.  a
6ea0: 6e 64 20 69 6e 73 74 65 61 64 20 73 69 6d 70 6c  nd instead simpl
6eb0: 79 20 73 63 61 6e 73 20 66 6f 72 20 74 68 6f 73  y scans for thos
6ec0: 65 20 74 6f 6b 65 6e 73 20 69 6e 20 74 68 65 20  e tokens in the 
6ed0: 64 6f 63 75 6d 65 6e 74 20 73 6f 75 72 63 65 2e  document source.
6ee0: 20 20 5b 46 54 53 34 5d 0a 20 20 73 68 6f 75 6c    [FTS4].  shoul
6ef0: 64 20 67 65 74 20 65 78 61 63 74 6c 79 20 74 68  d get exactly th
6f00: 65 20 73 61 6d 65 20 61 6e 73 77 65 72 20 62 6f  e same answer bo
6f10: 74 68 20 77 69 74 68 20 61 6e 64 20 77 69 74 68  th with and with
6f20: 6f 75 74 20 74 68 69 73 20 6f 70 74 69 6d 69 7a  out this optimiz
6f30: 61 74 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  ation..}.</tcl>.
6f40: 0a 3c 74 63 6c 3e 0a 20 20 68 64 5f 66 72 61 67  .<tcl>.  hd_frag
6f50: 6d 65 6e 74 20 22 6f 6d 69 74 66 65 61 74 75 72  ment "omitfeatur
6f60: 65 73 22 0a 20 20 68 64 5f 6b 65 79 77 6f 72 64  es".  hd_keyword
6f70: 73 20 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22  s "omitfeatures"
6f80: 0a 3c 2f 74 63 6c 3e 0a 3c 68 32 3e 31 2e 36 20  .</tcl>.<h2>1.6 
6f90: 4f 70 74 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20  Options To Omit 
6fa0: 46 65 61 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c  Features</h2>..<
6fb0: 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
6fc0: 6f 70 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 75  options can be u
6fd0: 73 65 64 20 74 6f 20 0a 5b 72 65 6c 66 6f 6f 74  sed to .[relfoot
6fe0: 70 72 69 6e 74 20 7c 20 72 65 64 75 63 65 20 74  print | reduce t
6ff0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63  he size of the c
7000: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 5d  ompiled library]
7010: 0a 62 79 20 6f 6d 69 74 74 69 6e 67 20 75 6e 75  .by omitting unu
7020: 73 65 64 20 66 65 61 74 75 72 65 73 2e 20 54 68  sed features. Th
7030: 69 73 20 69 73 20 70 72 6f 62 61 62 6c 79 20 6f  is is probably o
7040: 6e 6c 79 20 75 73 65 66 75 6c 0a 69 6e 20 65 6d  nly useful.in em
7050: 62 65 64 64 65 64 20 73 79 73 74 65 6d 73 20 77  bedded systems w
7060: 68 65 72 65 20 73 70 61 63 65 20 69 73 20 65 73  here space is es
7070: 70 65 63 69 61 6c 6c 79 20 74 69 67 68 74 2c 20  pecially tight, 
7080: 61 73 20 65 76 65 6e 20 77 69 74 68 20 61 6c 6c  as even with all
7090: 0a 66 65 61 74 75 72 65 73 20 69 6e 63 6c 75 64  .features includ
70a0: 65 64 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  ed the SQLite li
70b0: 62 72 61 72 79 20 69 73 20 72 65 6c 61 74 69 76  brary is relativ
70c0: 65 6c 79 20 73 6d 61 6c 6c 2e 20 44 6f 6e 27 74  ely small. Don't
70d0: 20 66 6f 72 67 65 74 0a 74 6f 20 74 65 6c 6c 20   forget.to tell 
70e0: 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f  your compiler to
70f0: 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72 20 62 69   optimize for bi
7100: 6e 61 72 79 20 73 69 7a 65 21 20 28 74 68 65 20  nary size! (the 
7110: 2d 4f 73 20 6f 70 74 69 6f 6e 20 69 66 0a 75 73  -Os option if.us
7120: 69 6e 67 20 47 43 43 29 2e 20 20 54 65 6c 6c 69  ing GCC).  Telli
7130: 6e 67 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65 72  ng your compiler
7140: 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66 6f 72   to optimize for
7150: 20 73 69 7a 65 20 75 73 75 61 6c 6c 79 20 68 61   size usually ha
7160: 73 0a 61 20 6d 75 63 68 20 6c 61 72 67 65 72 20  s.a much larger 
7170: 69 6d 70 61 63 74 20 6f 6e 20 6c 69 62 72 61 72  impact on librar
7180: 79 20 66 6f 6f 74 70 72 69 6e 74 20 74 68 61 6e  y footprint than
7190: 20 65 6d 70 6c 6f 79 69 6e 67 20 61 6e 79 20 6f   employing any o
71a0: 66 20 74 68 65 73 65 0a 63 6f 6d 70 69 6c 65 2d  f these.compile-
71b0: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 20 20 59  time options.  Y
71c0: 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 76  ou should also v
71d0: 65 72 69 66 79 20 74 68 61 74 20 0a 3c 61 20 68  erify that .<a h
71e0: 72 65 66 3d 22 23 64 65 62 75 67 6f 70 74 69 6f  ref="#debugoptio
71f0: 6e 73 22 3e 64 65 62 75 67 67 69 6e 67 20 6f 70  ns">debugging op
7200: 74 69 6f 6e 73 3c 2f 61 3e 20 61 72 65 20 64 69  tions</a> are di
7210: 73 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  sabled.</p>..<p>
7220: 54 68 65 20 6d 61 63 72 6f 73 20 69 6e 20 74 68  The macros in th
7230: 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f  is section do no
7240: 74 20 72 65 71 75 69 72 65 20 76 61 6c 75 65 73  t require values
7250: 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  . The following 
7260: 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69  .compilation swi
7270: 74 63 68 65 73 20 61 6c 6c 20 68 61 76 65 20 74  tches all have t
7280: 68 65 20 73 61 6d 65 20 65 66 66 65 63 74 3a 3c  he same effect:<
7290: 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49  br>.-DSQLITE_OMI
72a0: 54 5f 41 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e  T_ALTERTABLE<br>
72b0: 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  .-DSQLITE_OMIT_A
72c0: 4c 54 45 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a  LTERTABLE=1<br>.
72d0: 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c  -DSQLITE_OMIT_AL
72e0: 54 45 52 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a  TERTABLE=0.</p>.
72f0: 0a 3c 70 3e 49 66 20 61 6e 79 20 6f 66 20 74 68  .<p>If any of th
7300: 65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ese options are 
7310: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68  defined, then th
7320: 65 20 73 61 6d 65 20 73 65 74 20 6f 66 20 53 51  e same set of SQ
7330: 4c 49 54 45 5f 4f 4d 49 54 5f 2a 0a 6f 70 74 69  LITE_OMIT_*.opti
7340: 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 62 65  ons must also be
7350: 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73   defined when us
7360: 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20  ing the 'lemon' 
7370: 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65  tool to generate
7380: 20 74 68 65 0a 70 61 72 73 65 2e 63 20 66 69 6c   the.parse.c fil
7390: 65 20 61 6e 64 20 77 68 65 6e 20 63 6f 6d 70 69  e and when compi
73a0: 6c 69 6e 67 20 74 68 65 20 27 6d 6b 6b 65 79 77  ling the 'mkkeyw
73b0: 6f 72 64 68 61 73 68 27 20 74 6f 6f 6c 20 77 68  ordhash' tool wh
73c0: 69 63 68 20 67 65 6e 65 72 61 74 65 73 20 0a 74  ich generates .t
73d0: 68 65 20 6b 65 79 77 6f 72 64 68 61 73 68 2e 68  he keywordhash.h
73e0: 20 66 69 6c 65 2e 0a 42 65 63 61 75 73 65 20 6f   file..Because o
73f0: 66 20 74 68 69 73 2c 20 74 68 65 73 65 20 6f 70  f this, these op
7400: 74 69 6f 6e 73 20 6d 61 79 20 6f 6e 6c 79 20 62  tions may only b
7410: 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20  e used when the 
7420: 6c 69 62 72 61 72 79 20 69 73 20 62 75 69 6c 74  library is built
7430: 0a 66 72 6f 6d 20 63 61 6e 6f 6e 69 63 61 6c 20  .from canonical 
7440: 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f 6d  source, not from
7450: 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69   the [amalgamati
7460: 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65 20  on] or from the 
7470: 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 70 72  collection of.pr
7480: 65 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69 6c  e-packaged C fil
7490: 65 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20  es provided for 
74a0: 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b 65 20 70 6c  non-Unix like pl
74b0: 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20 77  atforms on the w
74c0: 65 62 73 69 74 65 2e 0a 41 6e 79 20 53 51 4c 49  ebsite..Any SQLI
74d0: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
74e0: 73 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 75  s which can be u
74f0: 73 65 64 20 64 69 72 65 63 74 6c 79 20 77 69 74  sed directly wit
7500: 68 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  h the [amalgamat
7510: 69 6f 6e 5d 20 0a 61 72 65 20 6c 69 73 74 65 64  ion] .are listed
7520: 20 62 65 6c 6f 77 2c 20 68 6f 77 65 76 65 72 2c   below, however,
7530: 20 74 68 65 20 77 61 72 6e 69 6e 67 73 20 69 6e   the warnings in
7540: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70   the following p
7550: 61 72 61 67 72 61 70 68 20 73 68 6f 75 6c 64 20  aragraph should 
7560: 62 65 20 6e 6f 74 65 64 2e 0a 3c 2f 70 3e 0a 0a  be noted..</p>..
7570: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e  <blockquote>.<i>
7580: 3c 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74  <b>Important Not
7590: 65 3a 3c 2f 62 3e 20 54 68 65 20 53 51 4c 49 54  e:</b> The SQLIT
75a0: 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e 73  E_OMIT_* options
75b0: 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74   do not work wit
75c0: 68 20 74 68 65 0a 5b 61 6d 61 6c 67 61 6d 61 74  h the.[amalgamat
75d0: 69 6f 6e 5d 20 6f 72 20 77 69 74 68 20 70 72 65  ion] or with pre
75e0: 2d 70 61 63 6b 61 67 65 64 20 43 20 63 6f 64 65  -packaged C code
75f0: 20 66 69 6c 65 73 2e 20 20 53 51 4c 49 54 45 5f   files.  SQLITE_
7600: 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74  OMIT_* compile-t
7610: 69 6d 65 0a 6f 70 74 69 6f 6e 73 20 6f 6e 6c 79  ime.options only
7620: 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20   work correctly 
7630: 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62  when SQLite is b
7640: 75 69 6c 74 20 66 72 6f 6d 20 63 61 6e 6f 6e 69  uilt from canoni
7650: 63 61 6c 20 73 6f 75 72 63 65 20 66 69 6c 65 73  cal source files
7660: 2e 0a 3c 2f 69 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  ..</i>.</blockqu
7670: 6f 74 65 3e 0a 0a 0a 3c 70 3e 53 70 65 63 69 61  ote>...<p>Specia
7680: 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68  l versions of th
7690: 65 20 53 51 4c 69 74 65 20 61 6d 61 6c 67 61 6d  e SQLite amalgam
76a0: 61 74 69 6f 6e 20 74 68 61 74 20 64 6f 20 77 6f  ation that do wo
76b0: 72 6b 20 77 69 74 68 20 61 0a 70 72 65 64 65 74  rk with a.predet
76c0: 65 72 6d 69 6e 65 64 20 73 65 74 20 6f 66 20 53  ermined set of S
76d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74  QLITE_OMIT_* opt
76e0: 69 6f 6e 73 20 63 61 6e 20 62 65 20 67 65 6e 65  ions can be gene
76f0: 72 61 74 65 64 2e 20 20 54 6f 20 64 6f 20 73 6f  rated.  To do so
7700: 2c 0a 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66  ,.make a copy of
7710: 20 74 68 65 20 4d 61 6b 65 66 69 6c 65 2e 6c 69   the Makefile.li
7720: 6e 75 78 2d 67 63 63 20 6d 61 6b 65 66 69 6c 65  nux-gcc makefile
7730: 20 74 65 6d 70 6c 61 74 65 20 69 6e 20 74 68 65   template in the
7740: 20 63 61 6e 6f 6e 69 63 61 6c 0a 73 6f 75 72 63   canonical.sourc
7750: 65 20 63 6f 64 65 20 64 69 73 74 72 69 62 75 74  e code distribut
7760: 69 6f 6e 2e 20 20 43 68 61 6e 67 65 20 74 68 65  ion.  Change the
7770: 20 6e 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 6f   name of your co
7780: 70 79 20 74 6f 20 73 69 6d 70 6c 79 20 22 4d 61  py to simply "Ma
7790: 6b 65 66 69 6c 65 22 2e 0a 54 68 65 6e 20 65 64  kefile"..Then ed
77a0: 69 74 20 22 4d 61 6b 65 66 69 6c 65 22 20 74 6f  it "Makefile" to
77b0: 20 73 65 74 20 75 70 20 61 70 70 72 6f 70 72 69   set up appropri
77c0: 61 74 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ate compile-time
77d0: 20 6f 70 74 69 6f 6e 73 2e 20 20 54 68 65 6e 0a   options.  Then.
77e0: 74 79 70 65 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  type:.<blockquot
77f0: 65 3e 3c 74 74 3e 6d 61 6b 65 20 63 6c 65 61 6e  e><tt>make clean
7800: 3b 20 6d 61 6b 65 20 73 71 6c 69 74 65 33 2e 63  ; make sqlite3.c
7810: 3c 2f 74 74 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  </tt></blockquot
7820: 65 3e 0a 54 68 65 20 72 65 73 75 6c 74 69 6e 67  e>.The resulting
7830: 20 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61   "sqlite3.c" ama
7840: 6c 67 61 6d 61 74 69 6f 6e 20 63 6f 64 65 20 66  lgamation code f
7850: 69 6c 65 20 28 61 6e 64 20 69 74 73 20 61 73 73  ile (and its ass
7860: 6f 63 69 61 74 65 64 0a 68 65 61 64 65 72 20 66  ociated.header f
7870: 69 6c 65 20 22 73 71 6c 69 74 65 33 2e 68 22 29  ile "sqlite3.h")
7880: 20 63 61 6e 20 74 68 65 6e 20 62 65 20 6d 6f 76   can then be mov
7890: 65 64 20 74 6f 20 61 20 6e 6f 6e 2d 75 6e 69 78  ed to a non-unix
78a0: 20 70 6c 61 74 66 6f 72 6d 0a 66 6f 72 20 66 69   platform.for fi
78b0: 6e 61 6c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  nal compilation 
78c0: 75 73 69 6e 67 20 61 20 6e 61 74 69 76 65 20 63  using a native c
78d0: 6f 6d 70 69 6c 65 72 2e 3c 2f 70 3e 0a 0a 3c 70  ompiler.</p>..<p
78e0: 3e 41 6c 6c 20 6f 66 20 74 68 65 20 53 51 4c 49  >All of the SQLI
78f0: 54 45 5f 4f 4d 49 54 5f 2a 20 6f 70 74 69 6f 6e  TE_OMIT_* option
7900: 73 20 61 72 65 20 75 6e 73 75 70 70 6f 72 74 65  s are unsupporte
7910: 64 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  d.</p>..<blockqu
7920: 6f 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72  ote>.<i><b>Impor
7930: 74 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 0a 54  tant Note:</b>.T
7940: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  he SQLITE_OMIT_*
7950: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
7960: 74 69 6f 6e 73 20 61 72 65 20 75 6e 73 75 70 70  tions are unsupp
7970: 6f 72 74 65 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f  orted..</i></blo
7980: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68  ckquote>..<p>.Th
7990: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
79a0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
79b0: 69 6f 6e 73 20 61 72 65 20 75 73 75 61 6c 6c 79  ions are usually
79c0: 20 75 6e 74 65 73 74 65 64 20 61 6e 64 0a 61 72   untested and.ar
79d0: 65 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e  e almost certain
79e0: 6c 79 20 75 6e 74 65 73 74 65 64 20 69 6e 20 63  ly untested in c
79f0: 6f 6d 62 69 6e 61 74 69 6f 6e 2e 0a 41 6e 79 20  ombination..Any 
7a00: 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20  or all of these 
7a10: 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 72  options may be r
7a20: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
7a30: 63 6f 64 65 20 69 6e 20 66 75 74 75 72 65 20 72  code in future r
7a40: 65 6c 65 61 73 65 73 0a 61 6e 64 20 77 69 74 68  eleases.and with
7a50: 6f 75 74 20 77 61 72 6e 69 6e 67 2e 20 20 46 6f  out warning.  Fo
7a60: 72 20 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72  r any particular
7a70: 20 72 65 6c 65 61 73 65 2c 20 73 6f 6d 65 20 6f   release, some o
7a80: 66 20 74 68 65 73 65 0a 6f 70 74 69 6f 6e 73 20  f these.options 
7a90: 6d 61 79 20 63 61 75 73 65 20 63 6f 6d 70 69 6c  may cause compil
7aa0: 65 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69  e-time or run-ti
7ab0: 6d 65 20 66 61 69 6c 75 72 65 73 2c 20 70 61 72  me failures, par
7ac0: 74 69 63 75 6c 61 72 6c 79 0a 77 68 65 6e 20 75  ticularly.when u
7ad0: 73 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69  sed in combinati
7ae0: 6f 6e 20 77 69 74 68 20 6f 74 68 65 72 20 6f 70  on with other op
7af0: 74 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  tions.</p>..<tcl
7b00: 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  >.COMPILE_OPTION
7b10: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c   {SQLITE_OMIT_AL
7b20: 54 45 52 54 41 42 4c 45 7d 20 7b 0a 20 20 57 68  TERTABLE} {.  Wh
7b30: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
7b40: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 0a  s defined, the .
7b50: 20 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20    [ALTER TABLE] 
7b60: 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69  command is not i
7b70: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 0a  ncluded in the .
7b80: 20 20 6c 69 62 72 61 72 79 2e 20 45 78 65 63 75    library. Execu
7b90: 74 69 6e 67 20 61 6e 20 5b 41 4c 54 45 52 20 54  ting an [ALTER T
7ba0: 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20  ABLE] statement 
7bb0: 63 61 75 73 65 73 20 61 20 70 61 72 73 65 20 65  causes a parse e
7bc0: 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rror..}..COMPILE
7bd0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7be0: 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 7d 20 7b 0a  OMIT_ANALYZE} {.
7bf0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
7c00: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
7c10: 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d  he [ANALYZE] com
7c20: 6d 61 6e 64 20 69 73 20 6f 6d 69 74 74 65 64 20  mand is omitted 
7c30: 66 72 6f 6d 0a 20 20 74 68 65 20 62 75 69 6c 64  from.  the build
7c40: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
7c50: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
7c60: 5f 41 54 54 41 43 48 7d 20 7b 0a 20 20 57 68 65  _ATTACH} {.  Whe
7c70: 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  n this option is
7c80: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b 41   defined, the [A
7c90: 54 54 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41  TTACH] and [DETA
7ca0: 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65  CH] commands are
7cb0: 0a 20 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  .  omitted from 
7cc0: 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f  the build..}..CO
7cd0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
7ce0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52  LITE_OMIT_AUTHOR
7cf0: 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 44 65 66  IZATION} {.  Def
7d00: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
7d10: 6e 20 6f 6d 69 74 73 20 74 68 65 20 61 75 74 68  n omits the auth
7d20: 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61  orization callba
7d30: 63 6b 20 66 65 61 74 75 72 65 20 66 72 6f 6d 20  ck feature from 
7d40: 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 54  the.  library. T
7d50: 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f  he [sqlite3_set_
7d60: 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 41 50  authorizer()] AP
7d70: 49 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f  I function is no
7d80: 74 20 70 72 65 73 65 6e 74 0a 20 20 69 6e 20 74  t present.  in t
7d90: 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43  he library..}..C
7da0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
7db0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
7dc0: 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a 20 20 54 68  NCREMENT} {.  Th
7dd0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
7de0: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a 20  d to omit the . 
7df0: 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d   [AUTOINCREMENT]
7e00: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20   functionality. 
7e10: 57 68 65 6e 20 74 68 69 73 20 0a 20 20 69 73 20  When this .  is 
7e20: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
7e30: 2c 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72  , columns declar
7e40: 65 64 20 61 73 20 0a 20 20 22 5b 49 4e 54 45 47  ed as .  "[INTEG
7e50: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20  ER PRIMARY KEY] 
7e60: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22 0a 20  AUTOINCREMENT". 
7e70: 20 62 65 68 61 76 65 20 69 6e 20 74 68 65 20 73   behave in the s
7e80: 61 6d 65 20 77 61 79 20 61 73 20 63 6f 6c 75 6d  ame way as colum
7e90: 6e 73 20 64 65 63 6c 61 72 65 64 20 61 73 20 22  ns declared as "
7ea0: 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
7eb0: 20 4b 45 59 5d 22 20 77 68 65 6e 20 61 20 0a 20   KEY]" when a . 
7ec0: 20 4e 55 4c 4c 20 69 73 20 69 6e 73 65 72 74 65   NULL is inserte
7ed0: 64 2e 20 54 68 65 20 73 71 6c 69 74 65 5f 73 65  d. The sqlite_se
7ee0: 71 75 65 6e 63 65 20 73 79 73 74 65 6d 20 74 61  quence system ta
7ef0: 62 6c 65 20 69 73 20 6e 65 69 74 68 65 72 20 63  ble is neither c
7f00: 72 65 61 74 65 64 2c 20 6e 6f 72 0a 20 20 72 65  reated, nor.  re
7f10: 73 70 65 63 74 65 64 20 69 66 20 69 74 20 61 6c  spected if it al
7f20: 72 65 61 64 79 20 65 78 69 73 74 73 2e 0a 7d 0a  ready exists..}.
7f30: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
7f40: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
7f50: 4f 49 4e 49 54 7d 20 7b 0a 20 20 46 6f 72 20 62  OINIT} {.  For b
7f60: 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
7f70: 62 69 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65  bility with olde
7f80: 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  r versions of SQ
7f90: 4c 69 74 65 20 74 68 61 74 20 6c 61 63 6b 0a 20  Lite that lack. 
7fa0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e   the [sqlite3_in
7fb0: 69 74 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65  itialize()] inte
7fc0: 72 66 61 63 65 2c 20 74 68 65 20 5b 73 71 6c 69  rface, the [sqli
7fd0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
7fe0: 5d 20 69 6e 74 65 72 66 61 63 65 0a 20 20 69 73  ] interface.  is
7ff0: 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69   called automati
8000: 63 61 6c 6c 79 20 75 70 6f 6e 20 65 6e 74 72 79  cally upon entry
8010: 20 74 6f 20 63 65 72 74 61 69 6e 20 6b 65 79 20   to certain key 
8020: 69 6e 74 65 72 66 61 63 65 73 20 73 75 63 68 20  interfaces such 
8030: 61 73 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70  as.  [sqlite3_op
8040: 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  en()], [sqlite3_
8050: 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2c  vfs_register()],
8060: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 6d 70   and [sqlite3_mp
8070: 72 69 6e 74 66 28 29 5d 2e 0a 20 20 54 68 65 20  rintf()]..  The 
8080: 6f 76 65 72 68 65 61 64 20 6f 66 20 69 6e 76 6f  overhead of invo
8090: 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e  king [sqlite3_in
80a0: 69 74 69 61 6c 69 7a 65 28 29 5d 20 61 75 74 6f  itialize()] auto
80b0: 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 69  matically in thi
80c0: 73 0a 20 20 77 61 79 20 6d 61 79 20 62 65 20 6f  s.  way may be o
80d0: 6d 69 74 74 65 64 20 62 79 20 62 75 69 6c 64 69  mitted by buildi
80e0: 6e 67 20 53 51 4c 69 74 65 20 77 69 74 68 20 74  ng SQLite with t
80f0: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  he SQLITE_OMIT_A
8100: 55 54 4f 49 4e 49 54 0a 20 20 43 2d 70 72 65 70  UTOINIT.  C-prep
8110: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20  rocessor macro. 
8120: 20 57 68 65 6e 20 62 75 69 6c 74 20 75 73 69 6e   When built usin
8130: 67 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  g SQLITE_OMIT_AU
8140: 54 4f 49 4e 49 54 2c 20 53 51 4c 69 74 65 0a 20  TOINIT, SQLite. 
8150: 20 77 69 6c 6c 20 6e 6f 74 20 61 75 74 6f 6d 61   will not automa
8160: 74 69 63 61 6c 6c 79 20 69 6e 69 74 69 61 6c 69  tically initiali
8170: 7a 65 20 69 74 73 65 6c 66 20 61 6e 64 20 74 68  ze itself and th
8180: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73  e application is
8190: 20 72 65 71 75 69 72 65 64 0a 20 20 74 6f 20 69   required.  to i
81a0: 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 69  nvoke [sqlite3_i
81b0: 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 64 69 72  nitialize()] dir
81c0: 65 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 62  ectly prior to b
81d0: 65 67 69 6e 6e 69 6e 67 20 75 73 65 20 6f 66 20  eginning use of 
81e0: 74 68 65 0a 20 20 53 51 4c 69 74 65 20 6c 69 62  the.  SQLite lib
81f0: 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rary..}..COMPILE
8200: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8210: 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  OMIT_AUTOMATIC_I
8220: 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20 6f  NDEX} {.  This o
8230: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
8240: 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 61 75   omit the .  [au
8250: 74 6f 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67  tomatic indexing
8260: 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  ] functionality.
8270: 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51  .  See also: [SQ
8280: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54  LITE_DEFAULT_AUT
8290: 4f 4d 41 54 49 43 5f 49 4e 44 45 58 5d 2e 0a 7d  OMATIC_INDEX]..}
82a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
82b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
82c0: 54 4f 52 45 53 45 54 7d 20 7b 0a 20 20 42 79 20  TORESET} {.  By 
82d0: 64 65 66 61 75 6c 74 2c 20 74 68 65 20 5b 73 71  default, the [sq
82e0: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e  lite3_step()] in
82f0: 74 65 72 66 61 63 65 20 77 69 6c 6c 20 61 75 74  terface will aut
8300: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b  omatically invok
8310: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 73  e.  [sqlite3_res
8320: 65 74 28 29 5d 20 74 6f 20 72 65 73 65 74 20 74  et()] to reset t
8330: 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  he [prepared sta
8340: 74 65 6d 65 6e 74 5d 20 69 66 20 6e 65 63 65 73  tement] if neces
8350: 73 61 72 79 2e 20 20 54 68 69 73 0a 20 20 63 6f  sary.  This.  co
8360: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
8370: 6e 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 62  n changes that b
8380: 65 68 61 76 69 6f 72 20 73 6f 20 74 68 61 74 20  ehavior so that 
8390: 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
83a0: 20 77 69 6c 6c 0a 20 20 72 65 74 75 72 6e 20 5b   will.  return [
83b0: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 69  SQLITE_MISUSE] i
83c0: 66 20 69 74 20 63 61 6c 6c 65 64 20 61 67 61 69  f it called agai
83d0: 6e 20 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e  n after returnin
83e0: 67 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72  g anything other
83f0: 0a 20 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f  .  than [SQLITE_
8400: 52 4f 57 5d 2c 20 5b 53 51 4c 49 54 45 5f 42 55  ROW], [SQLITE_BU
8410: 53 59 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  SY], or [SQLITE_
8420: 4c 4f 43 4b 45 44 5d 20 75 6e 6c 65 73 73 20 74  LOCKED] unless t
8430: 68 65 72 65 20 77 61 73 20 61 6e 0a 20 20 69 6e  here was an.  in
8440: 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74  tervening call t
8450: 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74  o [sqlite3_reset
8460: 28 29 5d 2e 0a 0a 20 20 49 6e 20 53 51 4c 69 74  ()]...  In SQLit
8470: 65 20 76 65 72 73 69 6f 6e 20 33 2e 36 2e 32 33  e version 3.6.23
8480: 2e 31 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20  .1 and earlier, 
8490: 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
84a0: 20 75 73 65 64 20 74 6f 20 61 6c 77 61 79 73 0a   used to always.
84b0: 20 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45    return [SQLITE
84c0: 5f 4d 49 53 55 53 45 5d 20 69 66 20 69 74 20 77  _MISUSE] if it w
84d0: 61 73 20 69 6e 76 6f 6b 65 64 20 61 67 61 69 6e  as invoked again
84e0: 20 61 66 74 65 72 20 72 65 74 75 72 6e 69 6e 67   after returning
84f0: 20 61 6e 79 74 68 69 6e 67 0a 20 20 6f 74 68 65   anything.  othe
8500: 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52  r than [SQLITE_R
8510: 4f 57 5d 20 77 69 74 68 6f 75 74 20 61 6e 20 69  OW] without an i
8520: 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20  ntervening call 
8530: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  to [sqlite3_rese
8540: 74 28 29 5d 2e 0a 20 20 54 68 69 73 20 63 61 75  t()]..  This cau
8550: 73 65 64 20 70 72 6f 62 6c 65 6d 73 20 6f 6e 20  sed problems on 
8560: 73 6f 6d 65 20 70 6f 6f 72 6c 79 20 77 72 69 74  some poorly writ
8570: 74 65 6e 20 73 6d 61 72 74 70 68 6f 6e 65 20 61  ten smartphone a
8580: 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63  pplications whic
8590: 68 0a 20 20 64 69 64 20 6e 6f 74 20 63 6f 72 72  h.  did not corr
85a0: 65 63 74 6c 79 20 68 61 6e 64 6c 65 20 74 68 65  ectly handle the
85b0: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d   [SQLITE_LOCKED]
85c0: 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53   and [SQLITE_BUS
85d0: 59 5d 20 65 72 72 6f 72 20 0a 20 20 72 65 74 75  Y] error .  retu
85e0: 72 6e 73 2e 20 20 52 61 74 68 65 72 20 74 68 61  rns.  Rather tha
85f0: 6e 20 66 69 78 20 74 68 65 20 6d 61 6e 79 20 64  n fix the many d
8600: 65 66 65 63 74 69 76 65 20 73 6d 61 72 74 70 68  efective smartph
8610: 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  one applications
8620: 2c 20 0a 20 20 74 68 65 20 62 65 68 61 76 69 6f  , .  the behavio
8630: 72 20 6f 66 20 53 51 4c 69 74 65 20 77 61 73 20  r of SQLite was 
8640: 63 68 61 6e 67 65 64 20 69 6e 20 33 2e 36 2e 32  changed in 3.6.2
8650: 33 2e 32 20 74 6f 20 61 75 74 6f 6d 61 74 69 63  3.2 to automatic
8660: 61 6c 6c 79 20 72 65 73 65 74 0a 20 20 74 68 65  ally reset.  the
8670: 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
8680: 65 6e 74 2e 20 20 42 75 74 20 74 68 61 74 20 63  ent.  But that c
8690: 68 61 6e 67 65 64 20 63 61 75 73 65 64 20 69 73  hanged caused is
86a0: 73 75 65 73 20 69 6e 20 6f 74 68 65 72 20 0a 20  sues in other . 
86b0: 20 69 6d 70 72 6f 70 65 72 6c 79 20 69 6d 70 6c   improperly impl
86c0: 65 6d 65 6e 74 65 64 20 61 70 70 6c 69 63 61 74  emented applicat
86d0: 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20 61  ions that were a
86e0: 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 69 6e 67 0a  ctually looking.
86f0: 20 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45    for an [SQLITE
8700: 5f 4d 49 53 55 53 45 5d 20 72 65 74 75 72 6e 20  _MISUSE] return 
8710: 74 6f 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65  to terminate the
8720: 69 72 20 71 75 65 72 79 20 6c 6f 6f 70 73 2e 20  ir query loops. 
8730: 20 28 41 6e 79 74 69 6d 65 0a 20 20 61 6e 20 61   (Anytime.  an a
8740: 70 70 6c 69 63 61 74 69 6f 6e 20 67 65 74 73 20  pplication gets 
8750: 61 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  an SQLITE_MISUSE
8760: 20 65 72 72 6f 72 20 63 6f 64 65 20 66 72 6f 6d   error code from
8770: 20 53 51 4c 69 74 65 2c 20 74 68 61 74 20 6d 65   SQLite, that me
8780: 61 6e 73 20 74 68 65 0a 20 20 61 70 70 6c 69 63  ans the.  applic
8790: 61 74 69 6f 6e 20 69 73 20 6d 69 73 75 73 69 6e  ation is misusin
87a0: 67 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74  g the SQLite int
87b0: 65 72 66 61 63 65 20 61 6e 64 20 69 73 20 74 68  erface and is th
87c0: 75 73 20 69 6e 63 6f 72 72 65 63 74 6c 79 0a 20  us incorrectly. 
87d0: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 29 20 20   implemented.)  
87e0: 54 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  The SQLITE_OMIT_
87f0: 41 55 54 4f 52 45 53 45 54 20 69 6e 74 65 72 66  AUTORESET interf
8800: 61 63 65 20 77 61 73 20 61 64 64 65 64 20 74 6f  ace was added to
8810: 20 53 51 4c 69 74 65 0a 20 20 76 65 72 73 69 6f   SQLite.  versio
8820: 6e 20 33 2e 37 2e 35 20 69 6e 20 61 6e 20 65 66  n 3.7.5 in an ef
8830: 66 6f 72 74 20 74 6f 20 67 65 74 20 61 6c 6c 20  fort to get all 
8840: 6f 66 20 74 68 65 20 28 62 72 6f 6b 65 6e 29 0a  of the (broken).
8850: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74    applications t
8860: 6f 20 77 6f 72 6b 20 61 67 61 69 6e 20 77 69 74  o work again wit
8870: 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 61  hout having to a
8880: 63 74 75 61 6c 6c 79 20 66 69 78 20 74 68 65 20  ctually fix the 
8890: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 7d 0a  applications..}.
88a0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
88b0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
88c0: 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20  OVACUUM} {.  If 
88d0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
88e0: 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72  efined, the libr
88f0: 61 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74  ary cannot creat
8900: 65 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20  e or write to . 
8910: 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
8920: 73 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61  support [auto_va
8930: 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69  cuum]..  Executi
8940: 6e 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74  ng a [PRAGMA aut
8950: 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d  o_vacuum] statem
8960: 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72  ent is not an er
8970: 72 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b  ror.  (since unk
8980: 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65  nown PRAGMAs are
8990: 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65   silently ignore
89a0: 64 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74  d), but does not
89b0: 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a   return a value.
89c0: 20 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20    or modify the 
89d0: 61 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67  auto-vacuum flag
89e0: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
89f0: 20 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61   file. If a data
8a00: 62 61 73 65 20 74 68 61 74 0a 20 20 73 75 70 70  base that.  supp
8a10: 6f 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d  orts auto-vacuum
8a20: 20 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20   is opened by a 
8a30: 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64  library compiled
8a40: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
8a50: 6e 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d  n, it.  is autom
8a60: 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20  atically opened 
8a70: 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64  in read-only mod
8a80: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
8a90: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
8aa0: 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49  T_BETWEEN_OPTIMI
8ab0: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ZATION} {.  This
8ac0: 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73   option disables
8ad0: 20 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69   the use of indi
8ae0: 63 65 73 20 77 69 74 68 20 57 48 45 52 45 20 63  ces with WHERE c
8af0: 6c 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68  lause terms.  th
8b00: 61 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45  at employ the BE
8b10: 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a  TWEEN operator..
8b20: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
8b30: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  N {SQLITE_OMIT_B
8b40: 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20  LOB_LITERAL} {. 
8b50: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
8b60: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74  n is defined, it
8b70: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
8b80: 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c   to specify a bl
8b90: 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73  ob in.  an SQL s
8ba0: 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74  tatement using t
8bb0: 68 65 20 58 27 41 42 43 44 27 20 73 79 6e 74 61  he X'ABCD' synta
8bc0: 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  x..}..COMPILE_OP
8bd0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
8be0: 54 5f 42 54 52 45 45 43 4f 55 4e 54 7d 20 7b 0a  T_BTREECOUNT} {.
8bf0: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
8c00: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 61  on is defined, a
8c10: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74  n optimization t
8c20: 68 61 74 20 61 63 63 65 6c 65 72 61 74 65 73 20  hat accelerates 
8c30: 63 6f 75 6e 74 69 6e 67 0a 20 20 61 6c 6c 20 65  counting.  all e
8c40: 6e 74 72 69 65 73 20 69 6e 20 61 20 74 61 62 6c  ntries in a tabl
8c50: 65 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64  e (in other word
8c60: 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  s, an optimizati
8c70: 6f 6e 20 74 68 61 74 20 68 65 6c 70 73 0a 20 20  on that helps.  
8c80: 22 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  "SELECT count(*)
8c90: 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 72 75 6e   FROM table" run
8ca0: 20 66 61 73 74 65 72 29 20 69 73 20 6f 6d 69 74   faster) is omit
8cb0: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
8cc0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
8cd0: 4d 49 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54  MIT_BUILTIN_TEST
8ce0: 7d 20 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64  } {.  A standard
8cf0: 20 53 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e   SQLite build in
8d00: 63 6c 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61  cludes a small a
8d10: 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63  mount of logic c
8d20: 6f 6e 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74  ontrolled.  by t
8d30: 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74  he [sqlite3_test
8d40: 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65  _control()] inte
8d50: 72 66 61 63 65 20 74 68 61 74 20 69 73 20 75 73  rface that is us
8d60: 65 64 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20  ed to exercise. 
8d70: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53 51   parts of the SQ
8d80: 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74 20 61  Lite core that a
8d90: 72 65 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20  re difficult to 
8da0: 63 6f 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73  control and meas
8db0: 75 72 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20  ure using.  the 
8dc0: 73 74 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54  standard API.  T
8dd0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
8de0: 20 74 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74   that built-in t
8df0: 65 73 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f  est logic..}..CO
8e00: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
8e10: 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20  LITE_OMIT_CAST} 
8e20: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
8e30: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
8e40: 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f   omit support fo
8e50: 72 20 74 68 65 20 43 41 53 54 20 6f 70 65 72 61  r the CAST opera
8e60: 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  tor..}..COMPILE_
8e70: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
8e80: 4d 49 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54  MIT_CHECK} {.  T
8e90: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
8ea0: 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74  s SQLite to omit
8eb0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45   support for CHE
8ec0: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a  CK constraints..
8ed0: 20 20 54 68 65 20 70 61 72 73 65 72 20 77 69 6c    The parser wil
8ee0: 6c 20 73 74 69 6c 6c 20 61 63 63 65 70 74 20 43  l still accept C
8ef0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73  HECK constraints
8f00: 20 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   in SQL statemen
8f10: 74 73 2c 0a 20 20 74 68 65 79 20 77 69 6c 6c 20  ts,.  they will 
8f20: 6a 75 73 74 20 6e 6f 74 20 62 65 20 65 6e 66 6f  just not be enfo
8f30: 72 63 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  rced..}..COMPILE
8f40: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8f50: 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49  OMIT_COMPILEOPTI
8f60: 4f 4e 5f 44 49 41 47 53 7d 20 7b 0a 20 20 54 68  ON_DIAGS} {.  Th
8f70: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
8f80: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f  d to omit the co
8f90: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
8fa0: 6e 20 64 69 61 67 6e 6f 73 74 69 63 73 20 61 76  n diagnostics av
8fb0: 61 69 6c 61 62 6c 65 0a 20 20 69 6e 20 53 51 4c  ailable.  in SQL
8fc0: 69 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  ite, including t
8fd0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  he [sqlite3_comp
8fe0: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
8ff0: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
9000: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
9010: 65 74 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63  et()] C/C++ func
9020: 74 69 6f 6e 73 2c 20 74 68 65 0a 20 20 5b 73 71  tions, the.  [sq
9030: 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
9040: 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 20 5b  on_used()] and [
9050: 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70  sqlite_compileop
9060: 74 69 6f 6e 5f 67 65 74 28 29 5d 20 53 51 4c 20  tion_get()] SQL 
9070: 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 61 6e 64  functions,.  and
9080: 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70   the [compile_op
9090: 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d  tions pragma]..}
90a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
90b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
90c0: 4d 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73  MPLETE} {.  This
90d0: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74   option causes t
90e0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  he [sqlite3_comp
90f0: 6c 65 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  lete()] and [sql
9100: 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
9110: 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20  )].  interfaces 
9120: 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  to be omitted..}
9130: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9140: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   {SQLITE_OMIT_CO
9150: 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b  MPOUND_SELECT} {
9160: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
9170: 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74  s used to omit t
9180: 68 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c  he compound [SEL
9190: 45 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ECT] functionali
91a0: 74 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20  ty. .  [SELECT] 
91b0: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
91c0: 75 73 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e  use the .  UNION
91d0: 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
91e0: 45 52 53 45 43 54 20 6f 72 20 45 58 43 45 50 54  ERSECT or EXCEPT
91f0: 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
9200: 20 6f 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20   operators will 
9210: 0a 20 20 63 61 75 73 65 20 61 20 70 61 72 73 65  .  cause a parse
9220: 20 65 72 72 6f 72 2e 0a 0a 20 20 41 6e 20 5b 49   error...  An [I
9230: 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74  NSERT] statement
9240: 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 76   with multiple v
9250: 61 6c 75 65 73 20 69 6e 20 74 68 65 20 56 41 4c  alues in the VAL
9260: 55 45 53 20 63 6c 61 75 73 65 20 69 73 0a 20 20  UES clause is.  
9270: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74 65  implemented inte
9280: 72 6e 61 6c 6c 79 20 61 73 20 61 20 63 6f 6d 70  rnally as a comp
9290: 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 48 65  ound SELECT.  He
92a0: 6e 63 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  nce, this option
92b0: 20 61 6c 73 6f 0a 20 20 64 69 73 61 62 6c 65 73   also.  disables
92c0: 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20   the ability to 
92d0: 69 6e 73 65 72 74 20 6d 6f 72 65 20 74 68 61 6e  insert more than
92e0: 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 75 73   a single row us
92f0: 69 6e 67 20 61 6e 0a 20 20 49 4e 53 45 52 54 20  ing an.  INSERT 
9300: 49 4e 54 4f 20 2e 2e 2e 20 56 41 4c 55 45 53 20  INTO ... VALUES 
9310: 2e 2e 2e 20 73 74 61 74 65 6d 65 6e 74 2e 0a 7d  ... statement..}
9320: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9330: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41   {SQLITE_OMIT_DA
9340: 54 45 54 49 4d 45 5f 46 55 4e 43 53 7d 20 7b 0a  TETIME_FUNCS} {.
9350: 20 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    If this option
9360: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 53 51 4c   is defined, SQL
9370: 69 74 65 27 73 20 62 75 69 6c 74 2d 69 6e 20 64  ite's built-in d
9380: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6d 61 6e  ate and time man
9390: 69 70 75 6c 61 74 69 6f 6e 0a 20 20 66 75 6e 63  ipulation.  func
93a0: 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74 65  tions are omitte
93b0: 64 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c  d. Specifically,
93c0: 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f   the SQL functio
93d0: 6e 73 20 6a 75 6c 69 61 6e 64 61 79 28 29 2c 20  ns julianday(), 
93e0: 64 61 74 65 28 29 2c 0a 20 20 74 69 6d 65 28 29  date(),.  time()
93f0: 2c 20 64 61 74 65 74 69 6d 65 28 29 20 61 6e 64  , datetime() and
9400: 20 73 74 72 66 74 69 6d 65 28 29 20 61 72 65 20   strftime() are 
9410: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20 54  not available. T
9420: 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 75 6d  he default colum
9430: 6e 0a 20 20 76 61 6c 75 65 73 20 43 55 52 52 45  n.  values CURRE
9440: 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54  NT_TIME, CURRENT
9450: 5f 44 41 54 45 20 61 6e 64 20 43 55 52 52 45 4e  _DATE and CURREN
9460: 54 5f 54 49 4d 45 53 54 41 4d 50 20 61 72 65 20  T_TIMESTAMP are 
9470: 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65 2e  still available.
9480: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9490: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
94a0: 44 45 43 4c 54 59 50 45 7d 20 7b 0a 20 20 54 68  DECLTYPE} {.  Th
94b0: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
94c0: 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20   SQLite to omit 
94d0: 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 0a  support for the.
94e0: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d    [sqlite3_colum
94f0: 6e 5f 64 65 63 6c 74 79 70 65 28 29 5d 20 61 6e  n_decltype()] an
9500: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d [sqlite3_colum
9510: 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 29 5d 0a  n_decltype16()].
9520: 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a    interfaces..}.
9530: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9540: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50  {SQLITE_OMIT_DEP
9550: 52 45 43 41 54 45 44 7d 20 7b 0a 20 20 54 68 69  RECATED} {.  Thi
9560: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
9570: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
9580: 75 70 70 6f 72 74 20 66 6f 72 20 69 6e 74 65 72  upport for inter
9590: 66 61 63 65 73 0a 20 20 6d 61 72 6b 65 64 20 61  faces.  marked a
95a0: 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 20 54  s deprecated.  T
95b0: 68 69 73 20 69 6e 63 6c 75 64 65 73 20 0a 20 20  his includes .  
95c0: 5b 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61  [sqlite3_aggrega
95d0: 74 65 5f 63 6f 75 6e 74 28 29 5d 2c 0a 20 20 5b  te_count()],.  [
95e0: 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65 64 28  sqlite3_expired(
95f0: 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74  )],.  [sqlite3_t
9600: 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67 73  ransfer_bindings
9610: 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ()],.  [sqlite3_
9620: 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65 72 28 29  global_recover()
9630: 5d 2c 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 68  ],.  [sqlite3_th
9640: 72 65 61 64 5f 63 6c 65 61 6e 75 70 28 29 5d 20  read_cleanup()] 
9650: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6d  and.  [sqlite3_m
9660: 65 6d 6f 72 79 5f 61 6c 61 72 6d 28 29 5d 20 69  emory_alarm()] i
9670: 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f  nterfaces..}..CO
9680: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9690: 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f  LITE_OMIT_DISKIO
96a0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
96b0: 6e 20 6f 6d 69 74 73 20 61 6c 6c 20 73 75 70 70  n omits all supp
96c0: 6f 72 74 20 66 6f 72 20 77 72 69 74 69 6e 67 20  ort for writing 
96d0: 74 6f 20 74 68 65 20 64 69 73 6b 20 61 6e 64 20  to the disk and 
96e0: 66 6f 72 63 65 73 0a 20 20 64 61 74 61 62 61 73  forces.  databas
96f0: 65 73 20 74 6f 20 65 78 69 73 74 20 69 6e 20 6d  es to exist in m
9700: 65 6d 6f 72 79 20 6f 6e 6c 79 2e 20 20 54 68 69  emory only.  Thi
9710: 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e 6f 74  s option has not
9720: 20 62 65 65 6e 20 0a 20 20 6d 61 69 6e 74 61 69   been .  maintai
9730: 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79  ned and probably
9740: 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20 77   does not work w
9750: 69 74 68 20 6e 65 77 65 72 20 76 65 72 73 69 6f  ith newer versio
9760: 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a  ns of SQLite..}.
9770: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
9780: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50  {SQLITE_OMIT_EXP
9790: 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69 6e 69  LAIN} {.  Defini
97a0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 63  ng this option c
97b0: 61 75 73 65 73 20 74 68 65 20 5b 45 58 50 4c 41  auses the [EXPLA
97c0: 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62  IN] command to b
97d0: 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  e omitted from t
97e0: 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 41 74  he.  library. At
97f0: 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63  tempting to exec
9800: 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49 4e 5d  ute an [EXPLAIN]
9810: 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
9820: 63 61 75 73 65 20 61 20 70 61 72 73 65 0a 20 20  cause a parse.  
9830: 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  error..}..COMPIL
9840: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9850: 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d  _OMIT_FLAG_PRAGM
9860: 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  AS} {.  This opt
9870: 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72  ion omits suppor
9880: 74 20 66 6f 72 20 61 20 73 75 62 73 65 74 20 6f  t for a subset o
9890: 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61  f [PRAGMA] comma
98a0: 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65 72 79  nds that.  query
98b0: 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65 61 6e   and set boolean
98c0: 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d 0a 0a   properties..}..
98d0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
98e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41  SQLITE_OMIT_FLOA
98f0: 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a 20 20  TING_POINT} {.  
9900: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
9910: 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c 6f 61  sed to omit floa
9920: 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65  ting-point numbe
9930: 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d 20 74  r support from t
9940: 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72  he SQLite.  libr
9950: 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63 69 66  ary. When specif
9960: 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e 67 20  ied, specifying 
9970: 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  a floating point
9980: 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c 69 74   number as a lit
9990: 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20 22 31  eral .  (i.e. "1
99a0: 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20 69 6e  .01") results in
99b0: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
99c0: 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66 75 74  .  <p>In the fut
99d0: 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  ure, this option
99e0: 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61 62 6c   may also disabl
99f0: 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e 67  e other floating
9a00: 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63 74 69   point .  functi
9a10: 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65 78 61  onality, for exa
9a20: 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65  mple the [sqlite
9a30: 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28  3_result_double(
9a40: 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  )], .  [sqlite3_
9a50: 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d 2c 20  bind_double()], 
9a60: 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64  [sqlite3_value_d
9a70: 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b  ouble()] and.  [
9a80: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
9a90: 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66 75 6e  ouble()] API fun
9aa0: 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e 0a 7d  ctions..  </p>.}
9ab0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9ac0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f   {SQLITE_OMIT_FO
9ad0: 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20 20 49  REIGN_KEY} {.  I
9ae0: 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
9af0: 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 5b   defined, then [
9b00: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
9b10: 74 72 61 69 6e 74 5d 20 73 79 6e 74 61 78 20 69  traint] syntax i
9b20: 73 0a 20 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a  s.  not recogniz
9b30: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
9b40: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
9b50: 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20 7b 0a  IT_GET_TABLE} {.
9b60: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
9b70: 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72  uses support for
9b80: 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61   [sqlite3_get_ta
9b90: 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  ble()] and.  [sq
9ba0: 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65  lite3_free_table
9bb0: 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  ()] to be omitte
9bc0: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
9bd0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
9be0: 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a 20 20  T_INCRBLOB} {.  
9bf0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
9c00: 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b  es support for [
9c10: 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c 20 69  sqlite3_blob | i
9c20: 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20  ncremental BLOB 
9c30: 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f 6d 69  I/O].  to be omi
9c40: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
9c50: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9c60: 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43  OMIT_INTEGRITY_C
9c70: 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f  HECK} {.  This o
9c80: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
9c90: 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69 6e 74  ort for the [int
9ca0: 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70 72 61  egrity_check pra
9cb0: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
9cc0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9cd0: 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49  OMIT_LIKE_OPTIMI
9ce0: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ZATION} {.  This
9cf0: 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73   option disables
9d00: 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20   the ability of 
9d10: 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 69 6e  SQLite to use in
9d20: 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a 20 20  dices to help.  
9d30: 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d 20 61  resolve [LIKE] a
9d40: 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  nd [GLOB] operat
9d50: 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45 20 63  ors in a WHERE c
9d60: 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lause..}..COMPIL
9d70: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9d80: 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e  _OMIT_LOAD_EXTEN
9d90: 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SION} {.  This o
9da0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20  ption omits the 
9db0: 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69 6f 6e  entire extension
9dc0: 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61 6e 69   loading mechani
9dd0: 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69 74 65  sm from.  SQLite
9de0: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73 71 6c  , including [sql
9df0: 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64  ite3_enable_load
9e00: 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e  _extension()] an
9e10: 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61  d.  [sqlite3_loa
9e20: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69  d_extension()] i
9e30: 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f  nterfaces..}..CO
9e40: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
9e50: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54  LITE_OMIT_LOCALT
9e60: 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  IME} {.  This op
9e70: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22  tion omits the "
9e80: 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66  localtime" modif
9e90: 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ier from the dat
9ea0: 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66 75 6e  e and time.  fun
9eb0: 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6f 70  ctions.  This op
9ec0: 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65  tion is sometime
9ed0: 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74 72  s useful when tr
9ee0: 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65 0a  ying to compile.
9ef0: 20 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74    the date and t
9f00: 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e  ime functions on
9f10: 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68 61 74   a platform that
9f20: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
9f30: 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70 74 20  t the.  concept 
9f40: 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0a 7d  of local time..}
9f50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
9f60: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f   {SQLITE_OMIT_LO
9f70: 4f 4b 41 53 49 44 45 7d 20 7b 0a 20 20 54 68 69  OKASIDE} {.  Thi
9f80: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
9f90: 68 65 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65  he [lookaside me
9fa0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 2e  mory allocator].
9fb0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
9fc0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
9fd0: 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68  MEMORYDB} {.  Wh
9fe0: 65 6e 20 74 68 69 73 20 69 73 20 64 65 66 69 6e  en this is defin
9ff0: 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20  ed, the library 
a000: 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63 74  does not respect
a010: 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61 74   the special dat
a020: 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d  abase.  name ":m
a030: 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c  emory:" (normall
a040: 79 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65  y used to create
a050: 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64   an [in-memory d
a060: 61 74 61 62 61 73 65 5d 29 2e 20 49 66 20 0a 20  atabase]). If . 
a070: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70   ":memory:" is p
a080: 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65  assed to [sqlite
a090: 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69  3_open()], [sqli
a0a0: 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f  te3_open16()], o
a0b0: 72 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  r.  [sqlite3_ope
a0c0: 6e 5f 76 32 28 29 5d 2c 20 61 20 66 69 6c 65 20  n_v2()], a file 
a0d0: 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20 77  with this name w
a0e0: 69 6c 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65 64  ill be .  opened
a0f0: 20 6f 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a   or created..}..
a100: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a110: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f  SQLITE_OMIT_OR_O
a120: 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20  PTIMIZATION} {. 
a130: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73   This option dis
a140: 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74  ables the abilit
a150: 79 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75  y of SQLite to u
a160: 73 65 20 61 6e 20 69 6e 64 65 78 20 74 6f 67 65  se an index toge
a170: 74 68 65 72 0a 20 20 77 69 74 68 20 74 65 72 6d  ther.  with term
a180: 73 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c 61  s of a WHERE cla
a190: 75 73 65 20 63 6f 6e 6e 65 63 74 65 64 20 62 79  use connected by
a1a0: 20 74 68 65 20 4f 52 20 6f 70 65 72 61 74 6f 72   the OR operator
a1b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a1c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
a1d0: 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 7d 20  _PAGER_PRAGMAS} 
a1e0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
a1f0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70  s option omits p
a200: 72 61 67 6d 61 73 20 72 65 6c 61 74 65 64 20 74  ragmas related t
a210: 6f 20 74 68 65 20 70 61 67 65 72 20 73 75 62 73  o the pager subs
a220: 79 73 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68  ystem from .  th
a230: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
a240: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a250: 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20  TE_OMIT_PRAGMA} 
a260: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
a270: 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20  is used to omit 
a280: 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d  the [PRAGMA] com
a290: 6d 61 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65 20  mand.  from the 
a2a0: 6c 69 62 72 61 72 79 2e 20 4e 6f 74 65 20 74 68  library. Note th
a2b0: 61 74 20 69 74 20 69 73 20 75 73 65 66 75 6c 20  at it is useful 
a2c0: 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20 6d 61  to define the ma
a2d0: 63 72 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a 20  cros that omit. 
a2e0: 20 73 70 65 63 69 66 69 63 20 70 72 61 67 6d 61   specific pragma
a2f0: 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f  s in addition to
a300: 20 74 68 69 73 2c 20 61 73 20 74 68 65 79 20 6d   this, as they m
a310: 61 79 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73  ay also remove s
a320: 75 70 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20  upporting code. 
a330: 20 69 6e 20 6f 74 68 65 72 20 73 75 62 2d 73 79   in other sub-sy
a340: 73 74 65 6d 73 2e 20 54 68 69 73 20 6d 61 63 72  stems. This macr
a350: 6f 20 72 65 6d 6f 76 65 73 20 74 68 65 20 5b 50  o removes the [P
a360: 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f  RAGMA] command o
a370: 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  nly..}..COMPILE_
a380: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
a390: 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c  MIT_PROGRESS_CAL
a3a0: 4c 42 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20  LBACK} {.  This 
a3b0: 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 64 65  option may be de
a3c0: 66 69 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74 68  fined to omit th
a3d0: 65 20 63 61 70 61 62 69 6c 69 74 79 20 74 6f 20  e capability to 
a3e0: 69 73 73 75 65 20 22 70 72 6f 67 72 65 73 73 22  issue "progress"
a3f0: 20 0a 20 20 63 61 6c 6c 62 61 63 6b 73 20 64 75   .  callbacks du
a400: 72 69 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e  ring long-runnin
a410: 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  g SQL statements
a420: 2e 20 54 68 65 20 0a 20 20 5b 73 71 6c 69 74 65  . The .  [sqlite
a430: 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c  3_progress_handl
a440: 65 72 28 29 5d 0a 20 20 41 50 49 20 66 75 6e 63  er()].  API func
a450: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73  tion is not pres
a460: 65 6e 74 20 69 6e 20 74 68 65 20 6c 69 62 72 61  ent in the libra
a470: 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ry..}..COMPILE_O
a480: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
a490: 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d  IT_QUICKBALANCE}
a4a0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a4b0: 20 6f 6d 69 74 73 20 61 6e 20 61 6c 74 65 72 6e   omits an altern
a4c0: 61 74 69 76 65 2c 20 66 61 73 74 65 72 20 42 2d  ative, faster B-
a4d0: 54 72 65 65 20 62 61 6c 61 6e 63 69 6e 67 20 72  Tree balancing r
a4e0: 6f 75 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20  outine..  Using 
a4f0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65  this option make
a500: 73 20 53 51 4c 69 74 65 20 73 6c 69 67 68 74 6c  s SQLite slightl
a510: 79 20 73 6d 61 6c 6c 65 72 20 61 74 20 74 68 65  y smaller at the
a520: 20 65 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61   expense of.  ma
a530: 6b 69 6e 67 20 69 74 20 72 75 6e 20 73 6c 69 67  king it run slig
a540: 68 74 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a  htly slower..}..
a550: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a560: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e  SQLITE_OMIT_REIN
a570: 44 45 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  DEX} {.  When th
a580: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
a590: 69 6e 65 64 2c 20 74 68 65 20 5b 52 45 49 4e 44  ined, the [REIND
a5a0: 45 58 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73  EX].  command is
a5b0: 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e   not included in
a5c0: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20   the library..  
a5d0: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 52 45 49  Executing a [REI
a5e0: 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e 74 20  NDEX] statement 
a5f0: 63 61 75 73 65 73 20 0a 20 20 61 20 70 61 72 73  causes .  a pars
a600: 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  e error..}..COMP
a610: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a620: 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50  TE_OMIT_SCHEMA_P
a630: 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69  RAGMAS} {.  Defi
a640: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
a650: 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66   omits pragmas f
a660: 6f 72 20 71 75 65 72 79 69 6e 67 20 74 68 65 20  or querying the 
a670: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
a680: 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c  from .  the buil
a690: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
a6a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
a6b0: 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e  T_SCHEMA_VERSION
a6c0: 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65  _PRAGMAS} {.  De
a6d0: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
a6e0: 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73  on omits pragmas
a6f0: 20 66 6f 72 20 71 75 65 72 79 69 6e 67 20 61 6e   for querying an
a700: 64 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20  d modifying the 
a710: 0a 20 20 64 61 74 61 62 61 73 65 20 73 63 68 65  .  database sche
a720: 6d 61 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 75  ma version and u
a730: 73 65 72 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d  ser version from
a740: 20 74 68 65 20 62 75 69 6c 64 2e 20 53 70 65 63   the build. Spec
a750: 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20  ifically, the . 
a760: 20 5b 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e   [schema_version
a770: 5d 20 61 6e 64 20 5b 75 73 65 72 5f 76 65 72 73  ] and [user_vers
a780: 69 6f 6e 5d 20 50 52 41 47 4d 41 73 20 61 72 65  ion] PRAGMAs are
a790: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
a7a0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a7b0: 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f  ITE_OMIT_SHARED_
a7c0: 43 41 43 48 45 7d 20 7b 0a 20 20 54 68 69 73 20  CACHE} {.  This 
a7d0: 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 53 51  option builds SQ
a7e0: 4c 69 74 65 20 77 69 74 68 6f 75 74 20 73 75 70  Lite without sup
a7f0: 70 6f 72 74 20 66 6f 72 20 73 68 61 72 65 64 2d  port for shared-
a800: 63 61 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68  cache mode..  Th
a810: 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  e [sqlite3_enabl
a820: 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28 29  e_shared_cache()
a830: 5d 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f  ] is omitted alo
a840: 6e 67 20 77 69 74 68 20 61 20 66 61 69 72 0a 20  ng with a fair. 
a850: 20 61 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63   amount of logic
a860: 20 77 69 74 68 69 6e 20 74 68 65 20 42 2d 54 72   within the B-Tr
a870: 65 65 20 73 75 62 73 79 73 74 65 6d 20 61 73 73  ee subsystem ass
a880: 6f 63 69 61 74 65 64 20 77 69 74 68 20 73 68 61  ociated with sha
a890: 72 65 64 0a 20 20 63 61 63 68 65 20 6d 61 6e 61  red.  cache mana
a8a0: 67 65 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49  gement..}..COMPI
a8b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a8c0: 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 7d  E_OMIT_SUBQUERY}
a8d0: 20 7b 0a 20 20 49 66 20 64 65 66 69 6e 65 64 2c   {.  If defined,
a8e0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 75 62   support for sub
a8f0: 2d 73 65 6c 65 63 74 73 20 61 6e 64 20 74 68 65  -selects and the
a900: 20 49 4e 28 29 20 6f 70 65 72 61 74 6f 72 20 61   IN() operator a
a910: 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  re omitted..}..C
a920: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a930: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56  QLITE_OMIT_TCL_V
a940: 41 52 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20  ARIABLE} {.  If 
a950: 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65  this macro is de
a960: 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20  fined, then the 
a970: 73 70 65 63 69 61 6c 20 22 24 3c 76 61 72 69 61  special "$<varia
a980: 62 6c 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61  ble-name>" synta
a990: 78 0a 20 20 75 73 65 64 20 74 6f 20 61 75 74 6f  x.  used to auto
a9a0: 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20 53  matically bind S
a9b0: 51 4c 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20  QL variables to 
a9c0: 54 43 4c 20 76 61 72 69 61 62 6c 65 73 20 69 73  TCL variables is
a9d0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
a9e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
a9f0: 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d  ITE_OMIT_TEMPDB}
aa00: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
aa10: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
aa20: 6f 72 20 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f  or TEMP or TEMPO
aa30: 52 41 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a  RARY tables..}..
aa40: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
aa50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43  SQLITE_OMIT_TRAC
aa60: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
aa70: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
aa80: 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65   for the [sqlite
aa90: 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64  3_profile()] and
aaa0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63  .  [sqlite3_trac
aab0: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20  e()] interfaces 
aac0: 61 6e 64 20 74 68 65 69 72 20 61 73 73 6f 63 69  and their associ
aad0: 61 74 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43  ated logic..}..C
aae0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
aaf0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47  QLITE_OMIT_TRIGG
ab00: 45 52 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  ER} {.  Defining
ab10: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
ab20: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54  ts support for T
ab30: 52 49 47 47 45 52 20 6f 62 6a 65 63 74 73 2e 20  RIGGER objects. 
ab40: 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20 20 5b  Neither the .  [
ab50: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20  CREATE TRIGGER] 
ab60: 6f 72 20 5b 44 52 4f 50 20 54 52 49 47 47 45 52  or [DROP TRIGGER
ab70: 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65  ].  commands are
ab80: 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68   available in th
ab90: 69 73 20 63 61 73 65 2c 20 61 6e 64 20 61 74 74  is case, and att
aba0: 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75  empting to execu
abb0: 74 65 0a 20 20 65 69 74 68 65 72 20 77 69 6c 6c  te.  either will
abc0: 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70 61 72   result in a par
abd0: 73 65 20 65 72 72 6f 72 2e 0a 20 20 54 68 69 73  se error..  This
abe0: 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 20 64 69 73   option also dis
abf0: 61 62 6c 65 73 20 65 6e 66 6f 72 63 65 6d 65 6e  ables enforcemen
ac00: 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  t of [foreign ke
ac10: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2c 0a  y constraints],.
ac20: 20 20 73 69 6e 63 65 20 74 68 65 20 63 6f 64 65    since the code
ac30: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
ac40: 20 74 72 69 67 67 65 72 73 20 61 6e 64 20 77 68   triggers and wh
ac50: 69 63 68 20 69 73 20 6f 6d 69 74 74 65 64 20 62  ich is omitted b
ac60: 79 20 74 68 69 73 0a 20 20 6f 70 74 69 6f 6e 20  y this.  option 
ac70: 69 73 20 61 6c 73 6f 20 75 73 65 64 20 74 6f 20  is also used to 
ac80: 69 6d 70 6c 65 6d 65 6e 74 20 5b 66 6f 72 65 69  implement [forei
ac90: 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d 2e  gn key actions].
aca0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
acb0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
acc0: 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a  TRUNCATE_OPTIMIZ
acd0: 41 54 49 4f 4e 7d 20 7b 0a 20 20 41 20 64 65 66  ATION} {.  A def
ace0: 61 75 6c 74 20 62 75 69 6c 64 20 6f 66 20 53 51  ault build of SQ
acf0: 4c 69 74 65 2c 20 69 66 20 61 20 5b 44 45 4c 45  Lite, if a [DELE
ad00: 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 68 61  TE] statement ha
ad10: 73 20 6e 6f 20 57 48 45 52 45 20 63 6c 61 75 73  s no WHERE claus
ad20: 65 0a 20 20 61 6e 64 20 6f 70 65 72 61 74 65 73  e.  and operates
ad30: 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68   on a table with
ad40: 20 6e 6f 20 74 72 69 67 67 65 72 73 2c 20 61 6e   no triggers, an
ad50: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 63   optimization oc
ad60: 63 75 72 73 20 74 68 61 74 0a 20 20 63 61 75 73  curs that.  caus
ad70: 65 73 20 74 68 65 20 44 45 4c 45 54 45 20 74 6f  es the DELETE to
ad80: 20 6f 63 63 75 72 20 62 79 20 64 72 6f 70 70 69   occur by droppi
ad90: 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e  ng and recreatin
ada0: 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20 0a 20  g the table.  . 
adb0: 20 44 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   Dropping and re
adc0: 63 72 65 61 74 69 6e 67 20 61 20 74 61 62 6c 65  creating a table
add0: 20 69 73 20 75 73 75 61 6c 6c 79 20 6d 75 63 68   is usually much
ade0: 20 66 61 73 74 65 72 20 74 68 61 6e 20 64 65 6c   faster than del
adf0: 65 74 69 6e 67 0a 20 20 74 68 65 20 74 61 62 6c  eting.  the tabl
ae00: 65 20 63 6f 6e 74 65 6e 74 20 72 6f 77 20 62 79  e content row by
ae10: 20 72 6f 77 2e 20 20 54 68 69 73 20 69 73 20 74   row.  This is t
ae20: 68 65 20 22 74 72 75 6e 63 61 74 65 20 6f 70 74  he "truncate opt
ae30: 69 6d 69 7a 61 74 69 6f 6e 22 2e 0a 7d 0a 0a 43  imization"..}..C
ae40: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
ae50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36  QLITE_OMIT_UTF16
ae60: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
ae70: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
ae80: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 55 54 46   support for UTF
ae90: 31 36 20 74 65 78 74 20 65 6e 63 6f 64 69 6e 67  16 text encoding
aea0: 2e 20 57 68 65 6e 20 74 68 69 73 20 69 73 0a 20  . When this is. 
aeb0: 20 64 65 66 69 6e 65 64 20 61 6c 6c 20 41 50 49   defined all API
aec0: 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20   functions that 
aed0: 72 65 74 75 72 6e 20 6f 72 20 61 63 63 65 70 74  return or accept
aee0: 20 55 54 46 31 36 20 65 6e 63 6f 64 65 64 20 74   UTF16 encoded t
aef0: 65 78 74 20 61 72 65 0a 20 20 75 6e 61 76 61 69  ext are.  unavai
af00: 6c 61 62 6c 65 2e 20 54 68 65 73 65 20 66 75 6e  lable. These fun
af10: 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 69 64  ctions can be id
af20: 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20  entified by the 
af30: 66 61 63 74 20 74 68 61 74 20 74 68 65 79 20 65  fact that they e
af40: 6e 64 0a 20 20 77 69 74 68 20 27 31 36 27 2c 20  nd.  with '16', 
af50: 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b 73 71 6c  for example [sql
af60: 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
af70: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ], [sqlite3_colu
af80: 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20 61 6e 64  mn_text16()] and
af90: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  .  [sqlite3_bind
afa0: 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d 0a 0a 43  _text16()]..}..C
afb0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
afc0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55  QLITE_OMIT_VACUU
afd0: 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  M} {.  When this
afe0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
aff0: 65 64 2c 20 74 68 65 20 5b 56 41 43 55 55 4d 5d  ed, the [VACUUM]
b000: 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  .  command is no
b010: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
b020: 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78 65  e library..  Exe
b030: 63 75 74 69 6e 67 20 61 20 5b 56 41 43 55 55 4d  cuting a [VACUUM
b040: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  ] statement caus
b050: 65 73 20 0a 20 20 61 20 70 61 72 73 65 20 65 72  es .  a parse er
b060: 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ror..}..COMPILE_
b070: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b080: 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20 20 44 65  MIT_VIEW} {.  De
b090: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
b0a0: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
b0b0: 20 66 6f 72 20 56 49 45 57 20 6f 62 6a 65 63 74   for VIEW object
b0c0: 73 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a  s. Neither the .
b0d0: 20 20 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20    [CREATE VIEW] 
b0e0: 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50 20 56 49  nor the [DROP VI
b0f0: 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61  EW].  commands a
b100: 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20  re available in 
b110: 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 0a 20  this case, and. 
b120: 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65   attempting to e
b130: 78 65 63 75 74 65 20 65 69 74 68 65 72 20 77 69  xecute either wi
b140: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70  ll result in a p
b150: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 57  arse error...  W
b160: 41 52 4e 49 4e 47 3a 20 49 66 20 74 68 69 73 20  ARNING: If this 
b170: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
b180: 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65  , it will not be
b190: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70 65   possible to ope
b1a0: 6e 20 61 20 64 61 74 61 62 61 73 65 0a 20 20 66  n a database.  f
b1b0: 6f 72 20 77 68 69 63 68 20 74 68 65 20 73 63 68  or which the sch
b1c0: 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20 56 49 45  ema contains VIE
b1d0: 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43  W objects. .}..C
b1e0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b1f0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55  QLITE_OMIT_VIRTU
b200: 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69  ALTABLE} {.  Thi
b210: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73  s option omits s
b220: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b  upport for the [
b230: 73 71 6c 69 74 65 33 5f 76 74 61 62 20 7c 20 56  sqlite3_vtab | V
b240: 69 72 74 75 61 6c 20 54 61 62 6c 65 5d 0a 20 20  irtual Table].  
b250: 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20 53 51 4c  mechanism in SQL
b260: 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ite..}..COMPILE_
b270: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b280: 4d 49 54 5f 57 41 4c 7d 20 7b 0a 20 20 54 68 69  MIT_WAL} {.  Thi
b290: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
b2a0: 68 65 20 22 5b 77 72 69 74 65 2d 61 68 65 61 64  he "[write-ahead
b2b0: 20 6c 6f 67 5d 22 20 28 61 2e 6b 2e 61 2e 20 22   log]" (a.k.a. "
b2c0: 5b 57 41 4c 5d 22 29 20 63 61 70 61 62 69 6c 69  [WAL]") capabili
b2d0: 74 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ty..}..COMPILE_O
b2e0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
b2f0: 49 54 5f 57 53 44 7d 20 7b 0a 20 20 54 68 69 73  IT_WSD} {.  This
b300: 20 6f 70 74 69 6f 6e 20 62 75 69 6c 64 73 20 61   option builds a
b310: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
b320: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
b330: 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a  hat contains no.
b340: 20 20 57 72 69 74 61 62 6c 65 20 53 74 61 74 69    Writable Stati
b350: 63 20 44 61 74 61 20 28 57 53 44 29 2e 20 20 57  c Data (WSD).  W
b360: 53 44 20 69 73 20 67 6c 6f 62 61 6c 20 76 61 72  SD is global var
b370: 69 61 62 6c 65 73 20 61 6e 64 2f 6f 72 20 73 74  iables and/or st
b380: 61 74 69 63 0a 20 20 76 61 72 69 61 62 6c 65 73  atic.  variables
b390: 2e 20 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72 6d  .  Some platform
b3a0: 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74  s do not support
b3b0: 20 57 53 44 2c 20 61 6e 64 20 74 68 69 73 20 6f   WSD, and this o
b3c0: 70 74 69 6f 6e 20 69 73 20 6e 65 63 65 73 73 61  ption is necessa
b3d0: 72 79 0a 20 20 69 6e 20 6f 72 64 65 72 20 66 6f  ry.  in order fo
b3e0: 72 20 53 51 4c 69 74 65 20 74 6f 20 77 6f 72 6b  r SQLite to work
b3f0: 20 74 68 6f 73 65 20 70 6c 61 74 66 6f 72 6d 73   those platforms
b400: 2e 20 20 0a 0a 20 20 55 6e 6c 69 6b 65 20 6f 74  .  ..  Unlike ot
b410: 68 65 72 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73  her OMIT options
b420: 20 77 68 69 63 68 20 6d 61 6b 65 20 74 68 65 20   which make the 
b430: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 73  SQLite library s
b440: 6d 61 6c 6c 65 72 2c 0a 20 20 74 68 69 73 20 6f  maller,.  this o
b450: 70 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20 69  ption actually i
b460: 6e 63 72 65 61 73 65 73 20 74 68 65 20 73 69 7a  ncreases the siz
b470: 65 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20  e of SQLite and 
b480: 6d 61 6b 65 73 20 69 74 20 72 75 6e 0a 20 20 61  makes it run.  a
b490: 20 6c 69 74 74 6c 65 20 73 6c 6f 77 65 72 2e 20   little slower. 
b4a0: 20 4f 6e 6c 79 20 75 73 65 20 74 68 69 73 20 6f   Only use this o
b4b0: 70 74 69 6f 6e 20 69 66 20 53 51 4c 69 74 65 20  ption if SQLite 
b4c0: 69 73 20 62 65 69 6e 67 20 62 75 69 6c 74 20 66  is being built f
b4d0: 6f 72 20 61 6e 0a 20 20 65 6d 62 65 64 64 65 64  or an.  embedded
b4e0: 20 74 61 72 67 65 74 20 74 68 61 74 20 64 6f 65   target that doe
b4f0: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 57 53  s not support WS
b500: 44 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  D..}..COMPILE_OP
b510: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b520: 54 5f 58 46 45 52 5f 4f 50 54 7d 20 7b 0a 20 20  T_XFER_OPT} {.  
b530: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
b540: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6f 70  s support for op
b550: 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61 74  timizations that
b560: 20 68 65 6c 70 20 73 74 61 74 65 6d 65 6e 74 73   help statements
b570: 0a 20 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22  .  of the form "
b580: 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20  INSERT INTO ... 
b590: 53 45 4c 45 43 54 20 2e 2e 2e 22 20 72 75 6e 20  SELECT ..." run 
b5a0: 66 61 73 74 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49  faster..}..COMPI
b5b0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
b5c0: 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 7d 20 7b  E_ZERO_MALLOC} {
b5d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
b5e0: 6d 69 74 73 20 62 6f 74 68 20 74 68 65 20 5b 64  mits both the [d
b5f0: 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c  efault memory al
b600: 6c 6f 63 61 74 6f 72 5d 20 61 6e 64 20 74 68 65  locator] and the
b610: 0a 20 20 5b 64 65 62 75 67 67 69 6e 67 20 6d 65  .  [debugging me
b620: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20  mory allocator] 
b630: 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61  from the build a
b640: 6e 64 20 73 75 62 73 74 69 74 75 74 65 73 20 61  nd substitutes a
b650: 20 73 74 75 62 0a 20 20 6d 65 6d 6f 72 79 20 61   stub.  memory a
b660: 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20 61 6c  llocator that al
b670: 77 61 79 73 20 66 61 69 6c 73 2e 20 20 53 51 4c  ways fails.  SQL
b680: 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e  ite will not run
b690: 20 77 69 74 68 20 74 68 69 73 0a 20 20 73 74 75   with this.  stu
b6a0: 62 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  b memory allocat
b6b0: 6f 72 20 73 69 6e 63 65 20 69 74 20 77 69 6c 6c  or since it will
b6c0: 20 62 65 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c   be unable to al
b6d0: 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79 2e 20 20  locate memory.  
b6e0: 42 75 74 0a 20 20 74 68 69 73 20 73 74 75 62 20  But.  this stub 
b6f0: 63 61 6e 20 62 65 20 72 65 70 6c 61 63 65 64 20  can be replaced 
b700: 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20 75 73  at start-time us
b710: 69 6e 67 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  ing.  [sqlite3_c
b720: 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43  onfig]([SQLITE_C
b730: 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2c 2e 2e  ONFIG_MALLOC],..
b740: 2e 29 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65 33  .) or.  [sqlite3
b750: 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45  _config]([SQLITE
b760: 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 2c 2e 2e  _CONFIG_HEAP],..
b770: 2e 29 2e 0a 20 20 53 6f 20 74 68 65 20 6e 65 74  .)..  So the net
b780: 20 65 66 66 65 63 74 20 6f 66 20 74 68 69 73 20   effect of this 
b790: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
b7a0: 69 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20 61  ion is that it a
b7b0: 6c 6c 6f 77 73 20 53 51 4c 69 74 65 0a 20 20 74  llows SQLite.  t
b7c0: 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61 6e  o be compiled an
b7d0: 64 20 6c 69 6e 6b 65 64 20 61 67 61 69 6e 73 74  d linked against
b7e0: 20 61 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72   a system librar
b7f0: 79 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  y that does not 
b800: 73 75 70 70 6f 72 74 0a 20 20 6d 61 6c 6c 6f 63  support.  malloc
b810: 28 29 2c 20 66 72 65 65 28 29 2c 20 61 6e 64 2f  (), free(), and/
b820: 6f 72 20 72 65 61 6c 6c 6f 63 28 29 2e 0a 7d 0a  or realloc()..}.
b830: 0a 3c 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d  .</tcl>.<a name=
b840: 22 64 65 62 75 67 6f 70 74 69 6f 6e 73 22 3e 3c  "debugoptions"><
b850: 2f 61 3e 0a 3c 68 32 3e 31 2e 37 20 41 6e 61 6c  /a>.<h2>1.7 Anal
b860: 79 73 69 73 20 61 6e 64 20 44 65 62 75 67 67 69  ysis and Debuggi
b870: 6e 67 20 4f 70 74 69 6f 6e 73 3c 2f 68 32 3e 0a  ng Options</h2>.
b880: 3c 74 63 6c 3e 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  <tcl>..COMPILE_O
b890: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
b8a0: 42 55 47 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  BUG} {.  The SQL
b8b0: 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20  ite source code 
b8c0: 63 6f 6e 74 61 69 6e 73 20 6c 69 74 65 72 61 6c  contains literal
b8d0: 6c 79 20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20  ly thousands of 
b8e0: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
b8f0: 6e 74 73 0a 20 20 75 73 65 64 20 74 6f 20 76 65  nts.  used to ve
b900: 72 69 66 79 20 69 6e 74 65 72 6e 61 6c 20 61 73  rify internal as
b910: 73 75 6d 70 74 69 6f 6e 73 20 61 6e 64 20 73 75  sumptions and su
b920: 62 72 6f 75 74 69 6e 65 20 70 72 65 63 6f 6e 64  broutine precond
b930: 69 74 69 6f 6e 73 20 61 6e 64 0a 20 20 70 6f 73  itions and.  pos
b940: 74 63 6f 6e 64 69 74 69 6f 6e 73 2e 20 20 54 68  tconditions.  Th
b950: 65 73 65 20 61 73 73 65 72 74 28 29 20 73 74 61  ese assert() sta
b960: 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 72 6d  tements are norm
b970: 61 6c 6c 79 20 74 75 72 6e 65 64 20 6f 66 66 0a  ally turned off.
b980: 20 20 28 74 68 65 79 20 67 65 6e 65 72 61 74 65    (they generate
b990: 20 6e 6f 20 63 6f 64 65 29 20 73 69 6e 63 65 20   no code) since 
b9a0: 74 75 72 6e 69 6e 67 20 74 68 65 6d 20 6f 6e 20  turning them on 
b9b0: 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 72 75 6e  makes SQLite run
b9c0: 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 0a 20   approximately. 
b9d0: 20 74 68 72 65 65 20 74 69 6d 65 73 20 73 6c 6f   three times slo
b9e0: 77 65 72 2e 20 20 42 75 74 20 66 6f 72 20 74 65  wer.  But for te
b9f0: 73 74 69 6e 67 20 61 6e 64 20 61 6e 61 6c 79 73  sting and analys
ba00: 69 73 2c 20 69 74 20 69 73 20 75 73 65 66 75 6c  is, it is useful
ba10: 20 74 6f 20 74 75 72 6e 0a 20 20 74 68 65 20 61   to turn.  the a
ba20: 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e  ssert() statemen
ba30: 74 73 20 6f 6e 2e 20 20 54 68 65 20 53 51 4c 49  ts on.  The SQLI
ba40: 54 45 5f 44 45 42 55 47 20 63 6f 6d 70 69 6c 65  TE_DEBUG compile
ba50: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 64 6f 65  -time option doe
ba60: 73 20 74 68 69 73 2e 0a 20 20 53 51 4c 49 54 45  s this..  SQLITE
ba70: 5f 44 45 42 55 47 20 61 6c 73 6f 20 74 75 72 6e  _DEBUG also turn
ba80: 73 20 6f 6e 20 73 6f 6d 65 20 6f 74 68 65 72 20  s on some other 
ba90: 64 65 62 75 67 67 69 6e 67 20 66 65 61 74 75 72  debugging featur
baa0: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
bab0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 45  PTION {SQLITE_ME
bac0: 4d 44 45 42 55 47 7d 20 7b 0a 20 20 54 68 65 20  MDEBUG} {.  The 
bad0: 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 20  SQLITE_MEMDEBUG 
bae0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e  option causes an
baf0: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 0a 20   instrumented . 
bb00: 20 5b 64 65 62 75 67 67 69 6e 67 20 6d 65 6d 6f   [debugging memo
bb10: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 0a 20 20  ry allocator].  
bb20: 74 6f 20 62 65 20 75 73 65 64 20 61 73 20 74 68  to be used as th
bb30: 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79  e default memory
bb40: 20 61 6c 6c 6f 63 61 74 6f 72 20 77 69 74 68 69   allocator withi
bb50: 6e 20 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 20  n SQLite.  The. 
bb60: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 6d 65   instrumented me
bb70: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 63  mory allocator c
bb80: 68 65 63 6b 73 20 66 6f 72 20 6d 69 73 75 73 65  hecks for misuse
bb90: 20 6f 66 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20   of dynamically 
bba0: 61 6c 6c 6f 63 61 74 65 64 0a 20 20 6d 65 6d 6f  allocated.  memo
bbb0: 72 79 2e 20 20 45 78 61 6d 70 6c 65 73 20 6f 66  ry.  Examples of
bbc0: 20 6d 69 73 75 73 65 20 69 6e 63 6c 75 64 65 20   misuse include 
bbd0: 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 61 66 74  using memory aft
bbe0: 65 72 20 69 74 20 69 73 20 66 72 65 65 64 2c 0a  er it is freed,.
bbf0: 20 20 77 72 69 74 69 6e 67 20 6f 66 66 20 74 68    writing off th
bc00: 65 20 65 6e 64 73 20 6f 66 20 61 20 6d 65 6d 6f  e ends of a memo
bc10: 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 66  ry allocation, f
bc20: 72 65 65 69 6e 67 20 6d 65 6d 6f 72 79 20 6e 6f  reeing memory no
bc30: 74 20 70 72 65 76 69 6f 75 73 6c 79 0a 20 20 6f  t previously.  o
bc40: 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
bc50: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
bc60: 72 2c 20 6f 72 20 66 61 69 6c 69 6e 67 20 74 6f  r, or failing to
bc70: 20 69 6e 69 74 69 61 6c 69 7a 65 20 6e 65 77 6c   initialize newl
bc80: 79 0a 20 20 61 6c 6c 6f 63 61 74 65 64 20 6d 65  y.  allocated me
bc90: 6d 6f 72 79 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  mory..}..</tcl>.