Documentation Source Text

Hex Artifact Content
Login

Artifact 09f83ffbb0fb38cb1c8e5a584797b1f22c711f73:


0000: 3c 74 69 74 6c 65 3e 43 6f 6d 70 69 6c 61 74 69  <title>Compilati
0010: 6f 6e 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53  on Options For S
0020: 51 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 74  QLite</title>.<t
0030: 63 6c 3e 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  cl>hd_keywords {
0040: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0050: 69 6f 6e 73 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 31  ions}</tcl>..<h1
0060: 3e 31 2e 30 20 43 6f 6d 70 69 6c 61 74 69 6f 6e  >1.0 Compilation
0070: 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53 51 4c   Options For SQL
0080: 69 74 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 46 6f  ite</h1>..<p>.Fo
0090: 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65 73 2c  r most purposes,
00a0: 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65 20 62   SQLite can be b
00b0: 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65 20 75  uilt just fine u
00c0: 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  sing the default
00d0: 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74  .compilation opt
00e0: 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 69  ions. However, i
00f0: 66 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20  f required, the 
0100: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0110: 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65 64 20  ions.documented 
0120: 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75 73 65  below can be use
0130: 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d 22 23  d to .<a href="#
0140: 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e 6f 6d  omitfeatures">om
0150: 69 74 20 53 51 4c 69 74 65 20 66 65 61 74 75 72  it SQLite featur
0160: 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74 69 6e  es</a> (resultin
0170: 67 20 69 6e 0a 61 20 5b 72 65 6c 66 6f 6f 74 70  g in.a [relfootp
0180: 72 69 6e 74 20 7c 20 73 6d 61 6c 6c 65 72 20 63  rint | smaller c
0190: 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72 79 20  ompiled library 
01a0: 73 69 7a 65 5d 29 20 6f 72 20 74 6f 20 63 68 61  size]) or to cha
01b0: 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66 3d  nge the.<a href=
01c0: 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66 61  "#defaults">defa
01d0: 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20 6f  ult values</a> o
01e0: 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65 72  f some parameter
01f0: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76 65  s..</p>..<p>.Eve
0200: 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62 65  ry effort has be
0210: 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75 72  en made to ensur
0220: 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69 6f  e that the vario
0230: 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a  us combinations.
0240: 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  of compilation o
0250: 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72 6d  ptions work harm
0260: 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72 6f  oniously and pro
0270: 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20 6c  duce a working l
0280: 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68 65  ibrary..Neverthe
0290: 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72 6f  less, it is stro
02a0: 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64  ngly recommended
02b0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
02c0: 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20 65   test-suite.be e
02d0: 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63 6b  xecuted to check
02e0: 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66 6f   for errors befo
02f0: 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69  re using an SQLi
0300: 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c 74  te library built
0310: 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64 61  .with non-standa
0320: 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  rd compilation o
0330: 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 3c 61 20  ptions..</p>.<a 
0340: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 73 22 3e  name="defaults">
0350: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 31 20 4f 70 74  </a>.<h2>1.1 Opt
0360: 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66 61  ions To Set Defa
0370: 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56 61  ult Parameter Va
0380: 6c 75 65 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  lues</h2>..<tcl>
0390: 0a 70 72 6f 63 20 43 4f 4d 50 49 4c 45 5f 4f 50  .proc COMPILE_OP
03a0: 54 49 4f 4e 20 7b 6e 61 6d 65 20 74 65 78 74 7d  TION {name text}
03b0: 20 7b 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70   {.  if {[regexp
03c0: 20 7b 53 51 4c 49 54 45 5f 28 5b 41 2d 5a 30 2d   {SQLITE_([A-Z0-
03d0: 39 5f 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c 6c  9_]+)} $name all
03e0: 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 68   label]} {.    h
03f0: 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72 69  d_fragment [stri
0400: 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62 65  ng tolower $labe
0410: 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f 72  l].    hd_keywor
0420: 64 73 20 24 61 6c 6c 0a 20 20 7d 0a 20 20 69 66  ds $all.  }.  if
0430: 20 7b 5b 72 65 67 65 78 70 20 7b 5e 59 59 28 5b   {[regexp {^YY([
0440: 41 2d 5a 30 2d 39 5f 5d 2b 29 7d 20 24 6e 61 6d  A-Z0-9_]+)} $nam
0450: 65 20 61 6c 6c 20 6c 61 62 65 6c 5d 7d 20 7b 0a  e all label]} {.
0460: 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20      hd_fragment 
0470: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20  [string tolower 
0480: 24 61 6c 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79  $all].    hd_key
0490: 77 6f 72 64 73 20 24 61 6c 6c 0a 20 20 7d 0a 20  words $all.  }. 
04a0: 20 68 64 5f 70 75 74 73 20 3c 70 3e 3c 62 3e 24   hd_puts <p><b>$
04b0: 6e 61 6d 65 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 72  name</b></p>.  r
04c0: 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 5c 5c  egsub -all "\n\\
04d0: 73 2a 5c 6e 22 20 24 74 65 78 74 20 22 3c 2f 70  s*\n" $text "</p
04e0: 3e 5c 6e 5c 6e 3c 70 3e 22 20 74 65 78 74 0a 20  >\n\n<p>" text. 
04f0: 20 68 64 5f 72 65 73 6f 6c 76 65 20 3c 62 6c 6f   hd_resolve <blo
0500: 63 6b 71 75 6f 74 65 3e 3c 70 3e 24 74 65 78 74  ckquote><p>$text
0510: 3c 2f 70 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </p></blockquote
0520: 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  >.}..COMPILE_OPT
0530: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
0540: 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e  ULT_AUTOMATIC_IN
0550: 44 45 58 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20  DEX=<i>&lt;0 or 
0560: 31 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  1&gt;</i>} {.  T
0570: 68 69 73 20 6d 61 63 72 6f 20 64 65 74 65 72 6d  his macro determ
0580: 69 6e 65 73 20 74 68 65 20 69 6e 69 74 69 61 6c  ines the initial
0590: 20 73 65 74 74 69 6e 67 20 66 6f 72 20 5b 50 52   setting for [PR
05a0: 41 47 4d 41 20 61 75 74 6f 6d 61 74 69 63 5f 69  AGMA automatic_i
05b0: 6e 64 65 78 5d 0a 20 20 66 6f 72 20 6e 65 77 6c  ndex].  for newl
05c0: 79 20 6f 70 65 6e 65 64 20 5b 64 61 74 61 62 61  y opened [databa
05d0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 2e  se connections].
05e0: 0a 20 20 46 6f 72 20 61 6c 6c 20 76 65 72 73 69  .  For all versi
05f0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68  ons of SQLite th
0600: 72 6f 75 67 68 20 33 2e 37 2e 31 37 2c 0a 20 20  rough 3.7.17,.  
0610: 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 69 63 65  automatic indice
0620: 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 65  s are normally e
0630: 6e 61 62 6c 65 64 20 66 6f 72 20 6e 65 77 20 64  nabled for new d
0640: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
0650: 6f 6e 73 20 69 66 0a 20 20 74 68 69 73 20 63 6f  ons if.  this co
0660: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
0670: 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20  n is omitted..  
0680: 48 6f 77 65 76 65 72 2c 20 74 68 61 74 20 6d 69  However, that mi
0690: 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 66 75  ght change in fu
06a0: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
06b0: 20 53 51 4c 69 74 65 2e 0a 20 20 3c 70 3e 53 65   SQLite..  <p>Se
06c0: 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f  e also: [SQLITE_
06d0: 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  OMIT_AUTOMATIC_I
06e0: 4e 44 45 58 5d 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  NDEX].}..COMPILE
06f0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
0700: 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55  DEFAULT_AUTOVACU
0710: 55 4d 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  UM=<i>&lt;0 or 1
0720: 20 6f 72 20 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b   or 2&gt;</i>} {
0730: 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64 65  .  This macro de
0740: 74 65 72 6d 69 6e 65 73 20 69 66 20 53 51 4c 69  termines if SQLi
0750: 74 65 20 63 72 65 61 74 65 73 20 64 61 74 61 62  te creates datab
0760: 61 73 65 73 20 77 69 74 68 20 74 68 65 20 0a 20  ases with the . 
0770: 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 66   [auto_vacuum] f
0780: 6c 61 67 20 73 65 74 20 62 79 20 64 65 66 61 75  lag set by defau
0790: 6c 74 20 74 6f 20 4f 46 46 20 28 30 29 2c 20 46  lt to OFF (0), F
07a0: 55 4c 4c 20 28 31 29 2c 20 6f 72 0a 20 20 49 4e  ULL (1), or.  IN
07b0: 43 52 45 4d 45 4e 54 41 4c 20 28 32 29 2e 20 54  CREMENTAL (2). T
07c0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
07d0: 20 69 73 20 30 20 6d 65 61 6e 69 6e 67 20 74 68   is 0 meaning th
07e0: 61 74 20 64 61 74 61 62 61 73 65 73 0a 20 20 61  at databases.  a
07f0: 72 65 20 63 72 65 61 74 65 64 20 77 69 74 68 20  re created with 
0800: 61 75 74 6f 2d 76 61 63 75 75 6d 20 74 75 72 6e  auto-vacuum turn
0810: 65 64 20 6f 66 66 2e 0a 20 20 49 6e 20 61 6e 79  ed off..  In any
0820: 20 63 61 73 65 20 74 68 65 20 63 6f 6d 70 69 6c   case the compil
0830: 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 20 6d  e-time default m
0840: 61 79 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e  ay be overridden
0850: 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41 47   by the .  [PRAG
0860: 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20  MA auto_vacuum] 
0870: 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50  command..}..COMP
0880: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
0890: 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45  TE_DEFAULT_CACHE
08a0: 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61 67  _SIZE=<i>&lt;pag
08b0: 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  es&gt;</i>} {.  
08c0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
08d0: 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65  the default size
08e0: 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61 63   of the page-cac
08f0: 68 65 20 66 6f 72 20 65 61 63 68 20 61 74 74 61  he for each atta
0900: 63 68 65 64 0a 20 20 64 61 74 61 62 61 73 65 2c  ched.  database,
0910: 20 69 6e 20 70 61 67 65 73 2e 20 54 68 69 73 20   in pages. This 
0920: 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65  can be overridde
0930: 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52 41  n by the .  [PRA
0940: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d 20  GMA cache_size] 
0950: 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 64 65 66  command. The def
0960: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 32 30  ault value is 20
0970: 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  00..}..COMPILE_O
0980: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
0990: 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41  FAULT_FILE_FORMA
09a0: 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 34 26  T=<i>&lt;1 or 4&
09b0: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65  gt;</i>} {.  The
09c0: 20 64 65 66 61 75 6c 74 20 5b 73 63 68 65 6d 61   default [schema
09d0: 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 5d 20   format number] 
09e0: 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 77  used by SQLite w
09f0: 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 6e  hen creating.  n
0a00: 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ew database file
0a10: 73 20 69 73 20 73 65 74 20 62 79 20 74 68 69 73  s is set by this
0a20: 20 6d 61 63 72 6f 2e 20 20 54 68 65 20 73 63 68   macro.  The sch
0a30: 65 6d 61 20 66 6f 72 6d 61 74 73 20 61 72 65 20  ema formats are 
0a40: 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d 69 6c  all.  very simil
0a50: 61 72 2e 20 20 54 68 65 20 64 69 66 66 65 72 65  ar.  The differe
0a60: 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f 72 6d  nce between form
0a70: 61 74 73 20 31 20 61 6e 64 20 34 20 69 73 20 74  ats 1 and 4 is t
0a80: 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34 20 75  hat format.  4 u
0a90: 6e 64 65 72 73 74 61 6e 64 73 20 5b 64 65 73 63  nderstands [desc
0aa0: 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 5d 20  ending indices] 
0ab0: 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65  and has a tighte
0ac0: 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20  r encoding for. 
0ad0: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e   boolean values.
0ae0: 0a 0a 20 20 41 6c 6c 20 76 65 72 73 69 6f 6e 73  ..  All versions
0af0: 20 6f 66 20 53 51 4c 69 74 65 20 73 69 6e 63 65   of SQLite since
0b00: 20 33 2e 33 2e 30 20 28 32 30 30 36 2d 30 31 2d   3.3.0 (2006-01-
0b10: 31 30 29 0a 20 20 63 61 6e 20 72 65 61 64 20 61  10).  can read a
0b20: 6e 64 20 77 72 69 74 65 20 61 6e 79 20 73 63 68  nd write any sch
0b30: 65 6d 61 20 66 6f 72 6d 61 74 0a 20 20 62 65 74  ema format.  bet
0b40: 77 65 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42  ween 1 and 4.  B
0b50: 75 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  ut older version
0b60: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
0b70: 74 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f  t not be able to
0b80: 0a 20 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20  .  read formats 
0b90: 67 72 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20  greater than 1. 
0ba0: 20 53 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76   So that older v
0bb0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
0bc0: 65 20 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65  e will.  be able
0bd0: 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69   to read and wri
0be0: 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  te database file
0bf0: 73 20 63 72 65 61 74 65 64 20 62 79 20 6e 65 77  s created by new
0c00: 65 72 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66  er versions.  of
0c10: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66   SQLite, the def
0c20: 61 75 6c 74 20 73 63 68 65 6d 61 20 66 6f 72 6d  ault schema form
0c30: 61 74 20 77 61 73 20 73 65 74 20 74 6f 20 31 20  at was set to 1 
0c40: 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69  for SQLite versi
0c50: 6f 6e 73 0a 20 20 74 68 72 6f 75 67 68 20 33 2e  ons.  through 3.
0c60: 37 2e 39 20 28 32 30 31 31 2d 31 31 2d 30 31 29  7.9 (2011-11-01)
0c70: 2e 20 20 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  .  Beginning wit
0c80: 68 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 31 30  h version 3.7.10
0c90: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20  , the default.  
0ca0: 73 63 68 65 6d 61 20 66 6f 72 6d 61 74 20 69 73  schema format is
0cb0: 20 34 2e 0a 0a 20 20 54 68 65 20 73 63 68 65 6d   4...  The schem
0cc0: 61 20 66 6f 72 6d 61 74 20 6e 75 6d 62 65 72 20  a format number 
0cd0: 66 6f 72 20 61 20 6e 65 77 20 64 61 74 61 62 61  for a new databa
0ce0: 73 65 20 63 61 6e 20 62 65 20 73 65 74 20 61 74  se can be set at
0cf0: 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a 20   runtime using. 
0d00: 20 74 68 65 20 5b 50 52 41 47 4d 41 20 6c 65 67   the [PRAGMA leg
0d10: 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d  acy_file_format]
0d20: 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d   command..}..COM
0d30: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
0d40: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45  ITE_DEFAULT_FILE
0d50: 5f 50 45 52 4d 49 53 53 49 4f 4e 53 3d 3c 69 3e  _PERMISSIONS=<i>
0d60: 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20 64  N</i>} {.  The d
0d70: 65 66 61 75 6c 74 20 6e 75 6d 65 72 69 63 20 66  efault numeric f
0d80: 69 6c 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 20  ile permissions 
0d90: 66 6f 72 20 6e 65 77 6c 79 20 63 72 65 61 74 65  for newly create
0da0: 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  d database files
0db0: 0a 20 20 75 6e 64 65 72 20 75 6e 69 78 2e 20 20  .  under unix.  
0dc0: 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  If not specified
0dd0: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73  , the default is
0de0: 20 30 36 34 34 20 77 68 69 63 68 20 6d 65 61 6e   0644 which mean
0df0: 73 20 74 68 61 74 0a 20 20 74 68 65 20 66 69 6c  s that.  the fil
0e00: 65 73 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 72  es is globally r
0e10: 65 61 64 61 62 6c 65 20 62 75 74 20 6f 6e 6c 79  eadable but only
0e20: 20 77 72 69 74 61 62 6c 65 20 62 79 20 74 68 65   writable by the
0e30: 20 63 72 65 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d   creator..}..COM
0e40: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
0e50: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 4f 52 45  ITE_DEFAULT_FORE
0e60: 49 47 4e 5f 4b 45 59 53 3d 3c 69 3e 26 6c 74 3b  IGN_KEYS=<i>&lt;
0e70: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
0e80: 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20 64  {.  This macro d
0e90: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
0ea0: 72 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66  r enforcement of
0eb0: 20 0a 20 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79   .  [foreign key
0ec0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 69 73   constraints] is
0ed0: 20 65 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61   enabled or disa
0ee0: 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20  bled by default 
0ef0: 66 6f 72 0a 20 20 6e 65 77 20 64 61 74 61 62 61  for.  new databa
0f00: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20  se connections. 
0f10: 20 45 61 63 68 20 64 61 74 61 62 61 73 65 20 63   Each database c
0f20: 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 61 6c  onnection can al
0f30: 77 61 79 73 20 74 75 72 6e 0a 20 20 65 6e 66 6f  ways turn.  enfo
0f40: 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f 72 65 69  rcement of forei
0f50: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
0f60: 74 73 20 6f 6e 20 61 6e 64 20 6f 66 66 20 61 6e  ts on and off an
0f70: 64 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  d run-time using
0f80: 0a 20 20 74 68 65 20 5b 66 6f 72 65 69 67 6e 5f  .  the [foreign_
0f90: 6b 65 79 73 20 70 72 61 67 6d 61 5d 2e 20 20 45  keys pragma].  E
0fa0: 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 66 6f  nforcement of fo
0fb0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
0fc0: 61 69 6e 74 73 0a 20 20 69 73 20 6e 6f 72 6d 61  aints.  is norma
0fd0: 6c 6c 79 20 6f 66 66 20 62 79 20 64 65 66 61 75  lly off by defau
0fe0: 6c 74 2c 20 62 75 74 20 69 66 20 74 68 69 73 20  lt, but if this 
0ff0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61 72  compile-time par
1000: 61 6d 65 74 65 72 20 69 73 0a 20 20 73 65 74 20  ameter is.  set 
1010: 74 6f 20 31 2c 20 65 6e 66 6f 72 63 65 6d 65 6e  to 1, enforcemen
1020: 74 20 6f 66 20 66 6f 72 65 69 67 6e 20 6b 65 79  t of foreign key
1030: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 6c   constraints wil
1040: 6c 20 62 65 20 6f 6e 20 62 79 20 64 65 66 61 75  l be on by defau
1050: 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  lt..}..COMPILE_O
1060: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
1070: 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 3d  FAULT_MMAP_SIZE=
1080: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
1090: 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20 74 68  is macro sets th
10a0: 65 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 20  e default limit 
10b0: 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  on the amount of
10c0: 20 6d 65 6d 6f 72 79 20 74 68 61 74 0a 20 20 77   memory that.  w
10d0: 69 6c 6c 20 62 65 20 75 73 65 64 20 66 6f 72 20  ill be used for 
10e0: 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f  memory-mapped I/
10f0: 4f 0a 20 20 66 6f 72 20 65 61 63 68 20 6f 70 65  O.  for each ope
1100: 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  n database file.
1110: 20 20 49 66 20 74 68 65 20 3c 69 3e 4e 3c 2f 69    If the <i>N</i
1120: 3e 0a 20 20 69 73 20 7a 65 72 6f 2c 20 74 68 65  >.  is zero, the
1130: 6e 20 6d 65 6d 6f 72 79 20 6d 61 70 70 65 64 20  n memory mapped 
1140: 49 2f 4f 20 69 73 20 64 69 73 61 62 6c 65 64 20  I/O is disabled 
1150: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 54 68 69  by default.  Thi
1160: 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  s.  compile-time
1170: 20 6c 69 6d 69 74 20 61 6e 64 20 74 68 65 20 5b   limit and the [
1180: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f  SQLITE_MAX_MMAP_
1190: 53 49 5a 45 5d 20 63 61 6e 20 62 65 20 6d 6f 64  SIZE] can be mod
11a0: 69 66 69 65 64 20 0a 20 20 61 74 20 73 74 61 72  ified .  at star
11b0: 74 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  t-time using the
11c0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .  [sqlite3_conf
11d0: 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
11e0: 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 29 20 63  IG_MMAP_SIZE]) c
11f0: 61 6c 6c 2c 20 6f 72 20 61 74 20 72 75 6e 2d 74  all, or at run-t
1200: 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20  ime.  using the 
1210: 5b 6d 6d 61 70 5f 73 69 7a 65 20 70 72 61 67 6d  [mmap_size pragm
1220: 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  a]..}..COMPILE_O
1230: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
1240: 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49  FAULT_JOURNAL_SI
1250: 5a 45 5f 4c 49 4d 49 54 3d 3c 69 3e 26 6c 74 3b  ZE_LIMIT=<i>&lt;
1260: 62 79 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b  bytes&gt;</i>} {
1270: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 73  .  This option s
1280: 65 74 73 20 74 68 65 20 73 69 7a 65 20 6c 69 6d  ets the size lim
1290: 69 74 20 6f 6e 20 5b 72 6f 6c 6c 62 61 63 6b 20  it on [rollback 
12a0: 6a 6f 75 72 6e 61 6c 5d 20 66 69 6c 65 73 20 69  journal] files i
12b0: 6e 0a 20 20 5b 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  n.  [journal_mod
12c0: 65 20 70 72 61 67 6d 61 20 7c 20 70 65 72 73 69  e pragma | persi
12d0: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  stent journal mo
12e0: 64 65 5d 20 61 6e 64 0a 20 20 5b 6c 6f 63 6b 69  de] and.  [locki
12f0: 6e 67 5f 6d 6f 64 65 20 7c 20 65 78 63 6c 75 73  ng_mode | exclus
1300: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65  ive locking mode
1310: 5d 20 61 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a  ] and on the siz
1320: 65 20 6f 66 20 74 68 65 0a 20 20 77 72 69 74 65  e of the.  write
1330: 2d 61 68 65 61 64 20 6c 6f 67 20 66 69 6c 65 20  -ahead log file 
1340: 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 57  in [WAL mode]. W
1350: 68 65 6e 20 74 68 69 73 20 0a 20 20 63 6f 6d 70  hen this .  comp
1360: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1370: 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 72 65  is omitted there
1380: 20 69 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75   is no upper bou
1390: 6e 64 20 6f 6e 20 74 68 65 0a 20 20 73 69 7a 65  nd on the.  size
13a0: 20 6f 66 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b   of the rollback
13b0: 20 6a 6f 75 72 6e 61 6c 73 20 6f 72 20 77 72 69   journals or wri
13c0: 74 65 2d 61 68 65 61 64 20 6c 6f 67 73 2e 20 20  te-ahead logs.  
13d0: 0a 20 20 54 68 65 20 6a 6f 75 72 6e 61 6c 20 66  .  The journal f
13e0: 69 6c 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a 20  ile size limit. 
13f0: 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20   can be changed 
1400: 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e  at run-time usin
1410: 67 20 74 68 65 20 5b 6a 6f 75 72 6e 61 6c 5f 73  g the [journal_s
1420: 69 7a 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d 61  ize_limit pragma
1430: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
1440: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1450: 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44  AULT_LOCKING_MOD
1460: 45 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26  E=<i>&lt;1 or 0&
1470: 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66 20  gt;</i>} {.  If 
1480: 73 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 74  set to 1, then t
1490: 68 65 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b  he default [lock
14a0: 69 6e 67 5f 6d 6f 64 65 5d 20 69 73 20 73 65 74  ing_mode] is set
14b0: 20 74 6f 20 45 58 43 4c 55 53 49 56 45 2e 0a 20   to EXCLUSIVE.. 
14c0: 20 49 66 20 6f 6d 69 74 74 65 64 20 6f 72 20 73   If omitted or s
14d0: 65 74 20 74 6f 20 30 20 74 68 65 6e 20 74 68 65  et to 0 then the
14e0: 20 64 65 66 61 75 6c 74 20 5b 6c 6f 63 6b 69 6e   default [lockin
14f0: 67 5f 6d 6f 64 65 5d 20 69 73 20 4e 4f 52 4d 41  g_mode] is NORMA
1500: 4c 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  L..}..COMPILE_OP
1510: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1520: 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53 3d 3c  AULT_MEMSTATUS=<
1530: 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b  i>&lt;1 or 0&gt;
1540: 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d  </i>} {.  This m
1550: 61 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20  acro is used to 
1560: 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65  determine whethe
1570: 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 66 65 61  r or not the fea
1580: 74 75 72 65 73 20 65 6e 61 62 6c 65 64 20 61 6e  tures enabled an
1590: 64 0a 20 20 64 69 73 61 62 6c 65 64 20 75 73 69  d.  disabled usi
15a0: 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f  ng the SQLITE_CO
15b0: 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 61  NFIG_MEMSTATUS a
15c0: 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69  rgument to [sqli
15d0: 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 20 20  te3_config()].  
15e0: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79  are available by
15f0: 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64 65   default. The de
1600: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 31  fault value is 1
1610: 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   ([SQLITE_CONFIG
1620: 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20 72 65  _MEMSTATUS].  re
1630: 6c 61 74 65 64 20 66 65 61 74 75 72 65 73 20 65  lated features e
1640: 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f 4d 50  nabled)..}..COMP
1650: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
1660: 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f  TE_DEFAULT_PAGE_
1670: 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79 74 65  SIZE=<i>&lt;byte
1680: 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  s&gt;</i>} {.  T
1690: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65  his macro is use
16a0: 64 20 74 6f 20 73 65 74 20 74 68 65 20 64 65 66  d to set the def
16b0: 61 75 6c 74 20 70 61 67 65 2d 73 69 7a 65 20 75  ault page-size u
16c0: 73 65 64 20 77 68 65 6e 20 61 0a 20 20 64 61 74  sed when a.  dat
16d0: 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65 64  abase is created
16e0: 2e 20 54 68 65 20 76 61 6c 75 65 20 61 73 73 69  . The value assi
16f0: 67 6e 65 64 20 6d 75 73 74 20 62 65 20 61 20 70  gned must be a p
1700: 6f 77 65 72 20 6f 66 20 32 2e 20 54 68 65 0a 20  ower of 2. The. 
1710: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69   default value i
1720: 73 20 31 30 32 34 2e 20 54 68 65 20 63 6f 6d 70  s 1024. The comp
1730: 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74  ile-time default
1740: 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64   may be overridd
1750: 65 6e 20 61 74 20 0a 20 20 72 75 6e 74 69 6d 65  en at .  runtime
1760: 20 62 79 20 74 68 65 20 5b 50 52 41 47 4d 41 20   by the [PRAGMA 
1770: 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61  page_size] comma
1780: 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  nd..}..COMPILE_O
1790: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45  PTION {SQLITE_DE
17a0: 46 41 55 4c 54 5f 54 45 4d 50 5f 43 41 43 48 45  FAULT_TEMP_CACHE
17b0: 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70 61 67  _SIZE=<i>&lt;pag
17c0: 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  es&gt;</i>} {.  
17d0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
17e0: 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65  the default size
17f0: 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63 61 63   of the page-cac
1800: 68 65 20 66 6f 72 20 74 65 6d 70 6f 72 61 72 79  he for temporary
1810: 20 66 69 6c 65 73 0a 20 20 63 72 65 61 74 65 64   files.  created
1820: 20 62 79 20 53 51 4c 69 74 65 20 74 6f 20 73 74   by SQLite to st
1830: 6f 72 65 20 69 6e 74 65 72 6d 65 64 69 61 74 65  ore intermediate
1840: 20 72 65 73 75 6c 74 73 2c 20 69 6e 20 70 61 67   results, in pag
1850: 65 73 2e 20 49 74 20 64 6f 65 73 0a 20 20 6e 6f  es. It does.  no
1860: 74 20 61 66 66 65 63 74 20 74 68 65 20 70 61 67  t affect the pag
1870: 65 2d 63 61 63 68 65 20 66 6f 72 20 74 68 65 20  e-cache for the 
1880: 74 65 6d 70 20 64 61 74 61 62 61 73 65 2c 20 77  temp database, w
1890: 68 65 72 65 20 74 61 62 6c 65 73 20 63 72 65 61  here tables crea
18a0: 74 65 64 0a 20 20 75 73 69 6e 67 20 5b 43 52 45  ted.  using [CRE
18b0: 41 54 45 20 54 41 42 4c 45 20 7c 20 43 52 45 41  ATE TABLE | CREA
18c0: 54 45 20 54 45 4d 50 20 54 41 42 4c 45 5d 20 61  TE TEMP TABLE] a
18d0: 72 65 20 73 74 6f 72 65 64 2e 20 54 68 65 20 64  re stored. The d
18e0: 65 66 61 75 6c 74 20 76 61 6c 75 65 0a 20 20 69  efault value.  i
18f0: 73 20 35 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  s 500..}..COMPIL
1900: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1910: 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54  _DEFAULT_WAL_AUT
1920: 4f 43 48 45 43 4b 50 4f 49 4e 54 3d 3c 69 3e 26  OCHECKPOINT=<i>&
1930: 6c 74 3b 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e  lt;pages&gt;</i>
1940: 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f  } {.  This macro
1950: 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c   sets the defaul
1960: 74 20 70 61 67 65 20 63 6f 75 6e 74 20 66 6f 72  t page count for
1970: 20 74 68 65 20 5b 57 41 4c 5d 0a 20 20 5b 63 68   the [WAL].  [ch
1980: 65 63 6b 70 6f 69 6e 74 69 6e 67 20 7c 20 61 75  eckpointing | au
1990: 74 6f 6d 61 74 69 63 20 63 68 65 63 6b 70 6f 69  tomatic checkpoi
19a0: 6e 74 69 6e 67 5d 20 66 65 61 74 75 72 65 2e 20  nting] feature. 
19b0: 20 49 66 20 75 6e 73 70 65 63 69 66 69 65 64 2c   If unspecified,
19c0: 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 70  .  the default p
19d0: 61 67 65 20 63 6f 75 6e 74 20 69 73 20 31 30 30  age count is 100
19e0: 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  0..}..COMPILE_OP
19f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
1a00: 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  AULT_WORKER_THRE
1a10: 41 44 53 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a  ADS=<i>N</i>} {.
1a20: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
1a30: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  s the default va
1a40: 6c 75 65 20 66 6f 72 0a 20 20 74 68 65 20 5b 53  lue for.  the [S
1a50: 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b  QLITE_LIMIT_WORK
1a60: 45 52 5f 54 48 52 45 41 44 53 5d 20 70 61 72 61  ER_THREADS] para
1a70: 6d 65 74 65 72 2e 20 20 54 68 65 20 5b 53 51 4c  meter.  The [SQL
1a80: 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52  ITE_LIMIT_WORKER
1a90: 5f 54 48 52 45 41 44 53 5d 0a 20 20 70 61 72 61  _THREADS].  para
1aa0: 6d 65 74 65 72 20 73 65 74 73 20 74 68 65 20 6d  meter sets the m
1ab0: 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
1ac0: 20 61 75 78 69 6c 69 61 72 79 20 74 68 72 65 61   auxiliary threa
1ad0: 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65  ds that a single
1ae0: 0a 20 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  .  [prepared sta
1af0: 74 65 6d 65 6e 74 5d 20 77 69 6c 6c 20 6c 61 75  tement] will lau
1b00: 6e 63 68 20 74 6f 20 61 73 73 69 73 74 20 69 74  nch to assist it
1b10: 20 77 69 74 68 20 61 20 71 75 65 72 79 2e 20 20   with a query.  
1b20: 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  If not specified
1b30: 2c 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20  ,.  the default 
1b40: 6d 61 78 69 6d 75 6d 20 69 73 20 30 2e 0a 20 20  maximum is 0..  
1b50: 54 68 65 20 76 61 6c 75 65 20 73 65 74 20 68 65  The value set he
1b60: 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 6d 6f 72  re cannot be mor
1b70: 65 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4d  e than [SQLITE_M
1b80: 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  AX_WORKER_THREAD
1b90: 53 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  S]..}..COMPILE_O
1ba0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 46 54  PTION {SQLITE_FT
1bb0: 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54  S3_MAX_EXPR_DEPT
1bc0: 48 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20  H=<i>N</i>} {.  
1bd0: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
1be0: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
1bf0: 68 20 6f 66 20 74 68 65 20 73 65 61 72 63 68 20  h of the search 
1c00: 74 72 65 65 20 74 68 61 74 20 63 6f 72 72 65 73  tree that corres
1c10: 70 6f 6e 64 73 20 74 6f 0a 20 20 74 68 65 20 72  ponds to.  the r
1c20: 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  ight-hand side o
1c30: 66 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72  f the MATCH oper
1c40: 61 74 6f 72 20 69 6e 20 61 6e 20 5b 46 54 53 33  ator in an [FTS3
1c50: 5d 20 6f 72 20 5b 46 54 53 34 5d 20 66 75 6c 6c  ] or [FTS4] full
1c60: 2d 74 65 78 74 0a 20 20 69 6e 64 65 78 2e 20 20  -text.  index.  
1c70: 54 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  The full-text se
1c80: 61 72 63 68 20 75 73 65 73 20 61 20 72 65 63 75  arch uses a recu
1c90: 72 73 69 76 65 20 61 6c 67 6f 72 69 74 68 6d 2c  rsive algorithm,
1ca0: 20 73 6f 20 74 68 65 20 64 65 70 74 68 20 6f 66   so the depth of
1cb0: 0a 20 20 74 68 65 20 74 72 65 65 20 69 73 20 6c  .  the tree is l
1cc0: 69 6d 69 74 65 64 20 74 6f 20 70 72 65 76 65 6e  imited to preven
1cd0: 74 20 75 73 69 6e 67 20 74 6f 6f 20 6d 75 63 68  t using too much
1ce0: 20 73 74 61 63 6b 20 73 70 61 63 65 2e 20 20 54   stack space.  T
1cf0: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 6c 69 6d  he default.  lim
1d00: 69 74 20 69 73 20 31 32 2e 20 20 54 68 69 73 20  it is 12.  This 
1d10: 6c 69 6d 69 74 20 69 73 20 73 75 66 66 69 63 69  limit is suffici
1d20: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
1d30: 39 35 20 73 65 61 72 63 68 20 74 65 72 6d 73 20  95 search terms 
1d40: 6f 6e 20 74 68 65 0a 20 20 72 69 67 68 74 2d 68  on the.  right-h
1d50: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
1d60: 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20 61  MATCH operator a
1d70: 6e 64 20 69 74 20 68 6f 6c 64 73 20 73 74 61 63  nd it holds stac
1d80: 6b 20 73 70 61 63 65 20 75 73 61 67 65 20 74 6f  k space usage to
1d90: 20 0a 20 20 6c 65 73 73 20 74 68 61 6e 20 32 30   .  less than 20
1da0: 30 30 20 62 79 74 65 73 2e 0a 20 20 3c 70 3e 0a  00 bytes..  <p>.
1db0: 20 20 46 6f 72 20 6f 72 64 69 6e 61 72 79 20 46    For ordinary F
1dc0: 54 53 33 2f 46 54 53 34 20 71 75 65 72 69 65 73  TS3/FTS4 queries
1dd0: 2c 20 74 68 65 20 73 65 61 72 63 68 20 74 72 65  , the search tre
1de0: 65 20 64 65 70 74 68 20 69 73 20 61 70 70 72 6f  e depth is appro
1df0: 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 65 20 62  ximately.  the b
1e00: 61 73 65 2d 32 20 6c 6f 67 61 72 69 74 68 6d 20  ase-2 logarithm 
1e10: 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
1e20: 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 72 69   terms in the ri
1e30: 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  ght-hand side of
1e40: 20 74 68 65 0a 20 20 4d 41 54 43 48 20 6f 70 65   the.  MATCH ope
1e50: 72 61 74 6f 72 2e 20 20 48 6f 77 65 76 65 72 2c  rator.  However,
1e60: 20 66 6f 72 20 5b 70 68 72 61 73 65 20 71 75 65   for [phrase que
1e70: 72 69 65 73 5d 20 61 6e 64 20 5b 4e 45 41 52 20  ries] and [NEAR 
1e80: 71 75 65 72 69 65 73 5d 20 74 68 65 0a 20 20 73  queries] the.  s
1e90: 65 61 72 63 68 20 74 72 65 65 20 64 65 70 74 68  earch tree depth
1ea0: 20 69 73 20 6c 69 6e 65 61 72 20 69 6e 20 74 68   is linear in th
1eb0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 69 67 68  e number of righ
1ec0: 74 2d 68 61 6e 64 20 73 69 64 65 20 74 65 72 6d  t-hand side term
1ed0: 73 2e 0a 20 20 53 6f 20 74 68 65 20 64 65 66 61  s..  So the defa
1ee0: 75 6c 74 20 64 65 70 74 68 20 6c 69 6d 69 74 20  ult depth limit 
1ef0: 6f 66 20 31 32 20 69 73 20 73 75 66 66 69 63 69  of 12 is suffici
1f00: 65 6e 74 20 66 6f 72 20 75 70 20 74 6f 20 34 30  ent for up to 40
1f10: 39 35 20 6f 72 64 69 6e 61 72 79 0a 20 20 74 65  95 ordinary.  te
1f20: 72 6d 73 20 6f 6e 20 61 20 4d 41 54 43 48 2c 20  rms on a MATCH, 
1f30: 69 74 20 69 73 20 6f 6e 6c 79 20 73 75 66 66 69  it is only suffi
1f40: 63 69 65 6e 74 20 66 6f 72 20 31 31 20 6f 72 20  cient for 11 or 
1f50: 31 32 20 70 68 72 61 73 65 20 6f 72 20 4e 45 41  12 phrase or NEA
1f60: 52 0a 20 20 74 65 72 6d 73 2e 20 20 45 76 65 6e  R.  terms.  Even
1f70: 20 73 6f 2c 20 74 68 65 20 64 65 66 61 75 6c 74   so, the default
1f80: 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 65 6e   is more than en
1f90: 6f 75 67 68 20 66 6f 72 20 6d 6f 73 74 20 61 70  ough for most ap
1fa0: 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f  plication..}..CO
1fb0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
1fc0: 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49  LITE_MAX_MMAP_SI
1fd0: 5a 45 3d 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20  ZE=<i>N</i>} {. 
1fe0: 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73   This macro sets
1ff0: 20 61 20 68 61 72 64 20 75 70 70 65 72 20 62 6f   a hard upper bo
2000: 75 6e 64 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e  und on the amoun
2010: 74 20 6f 66 20 61 64 64 72 65 73 73 20 73 70 61  t of address spa
2020: 63 65 20 74 68 61 74 0a 20 20 63 61 6e 20 62 65  ce that.  can be
2030: 20 75 73 65 64 20 62 79 20 61 6e 79 20 73 69 6e   used by any sin
2040: 67 6c 65 20 64 61 74 61 62 61 73 65 20 66 6f 72  gle database for
2050: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
2060: 2f 4f 2e 0a 20 20 53 65 74 74 69 6e 67 20 74 68  /O..  Setting th
2070: 69 73 20 76 61 6c 75 65 20 74 6f 20 30 20 63 6f  is value to 0 co
2080: 6d 70 6c 65 74 65 6c 79 20 64 69 73 61 62 6c 65  mpletely disable
2090: 73 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  s memory-mapped 
20a0: 49 2f 4f 20 61 6e 64 0a 20 20 63 61 75 73 65 73  I/O and.  causes
20b0: 20 6c 6f 67 69 63 20 61 73 73 6f 63 69 61 74 65   logic associate
20c0: 64 20 77 69 74 68 20 6d 65 6d 6f 72 79 2d 6d 61  d with memory-ma
20d0: 70 70 65 64 20 49 2f 4f 20 74 6f 20 62 65 20 6f  pped I/O to be o
20e0: 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 0a  mitted from the.
20f0: 20 20 62 75 69 6c 64 2e 20 20 54 68 69 73 20 6f    build.  This o
2100: 70 74 69 6f 6e 20 64 6f 65 73 20 63 68 61 6e 67  ption does chang
2110: 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65  e the default me
2120: 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 20  mory-mapped I/O 
2130: 61 64 64 72 65 73 73 0a 20 20 73 70 61 63 65 20  address.  space 
2140: 73 69 7a 65 20 28 73 65 74 20 62 79 20 5b 53 51  size (set by [SQ
2150: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41  LITE_DEFAULT_MMA
2160: 50 5f 53 49 5a 45 5d 20 6f 72 0a 20 20 73 71 6c  P_SIZE] or.  sql
2170: 69 74 65 33 5f 63 6f 6e 66 69 67 28 5b 53 51 4c  ite3_config([SQL
2180: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
2190: 53 49 5a 45 5d 29 20 6f 72 20 74 68 65 0a 20 20  SIZE]) or the.  
21a0: 72 75 6e 2d 74 69 6d 65 20 6d 65 6d 6f 72 79 2d  run-time memory-
21b0: 6d 61 70 70 65 64 20 49 2f 4f 20 61 64 64 72 65  mapped I/O addre
21c0: 73 73 20 73 70 61 63 65 20 73 69 7a 65 20 28 73  ss space size (s
21d0: 65 74 20 62 79 0a 20 20 73 71 6c 69 74 65 33 5f  et by.  sqlite3_
21e0: 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 5b 53 51  file_control([SQ
21f0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f  LITE_FCNTL_MMAP_
2200: 53 49 5a 45 5d 29 20 6f 72 0a 20 20 5b 50 52 41  SIZE]) or.  [PRA
2210: 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20  GMA mmap_size]) 
2220: 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73 65  as long as those
2230: 20 6f 74 68 65 72 20 73 65 74 74 69 6e 67 73 20   other settings 
2240: 61 72 65 20 6c 65 73 73 20 74 68 61 6e 20 74 68  are less than th
2250: 65 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75  e.  maximum valu
2260: 65 20 64 65 66 69 6e 65 64 20 68 65 72 65 2e 0a  e defined here..
2270: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
2280: 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43  N {SQLITE_MAX_SC
2290: 48 45 4d 41 5f 52 45 54 52 59 3d 3c 69 3e 4e 3c  HEMA_RETRY=<i>N<
22a0: 2f 69 3e 7d 20 7b 0a 20 20 57 68 65 6e 65 76 65  /i>} {.  Wheneve
22b0: 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  r the database s
22c0: 63 68 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 70  chema changes, p
22d0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
22e0: 74 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  ts are automatic
22f0: 61 6c 6c 79 0a 20 20 72 65 70 72 65 70 61 72 65  ally.  reprepare
2300: 64 20 74 6f 20 61 63 63 6f 6d 6d 6f 64 61 74 65  d to accommodate
2310: 20 74 68 65 20 6e 65 77 20 73 63 68 65 6d 61 2e   the new schema.
2320: 20 20 54 68 65 72 65 20 69 73 20 61 20 72 61 63    There is a rac
2330: 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65  e condition here
2340: 0a 20 20 69 6e 20 74 68 61 74 20 69 66 20 6f 6e  .  in that if on
2350: 65 20 74 68 72 65 61 64 20 69 73 20 63 6f 6e 73  e thread is cons
2360: 74 61 6e 74 6c 79 20 63 68 61 6e 67 69 6e 67 20  tantly changing 
2370: 74 68 65 20 73 63 68 65 6d 61 2c 20 61 6e 6f 74  the schema, anot
2380: 68 65 72 20 74 68 72 65 61 64 0a 20 20 6d 69 67  her thread.  mig
2390: 68 74 20 73 70 69 6e 20 6f 6e 20 72 65 70 61 72  ht spin on repar
23a0: 73 65 73 20 61 6e 64 20 72 65 70 72 65 70 61 72  ses and reprepar
23b0: 61 74 69 6f 6e 73 20 6f 66 20 61 20 70 72 65 70  ations of a prep
23c0: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 61  ared statement a
23d0: 6e 64 0a 20 20 6e 65 76 65 72 20 67 65 74 20 61  nd.  never get a
23e0: 6e 79 20 72 65 61 6c 20 77 6f 72 6b 20 64 6f 6e  ny real work don
23f0: 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  e.  This paramet
2400: 65 72 20 70 72 65 76 65 6e 74 73 20 61 6e 20 69  er prevents an i
2410: 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 0a 20 20 62  nfinite loop.  b
2420: 79 20 66 6f 72 63 69 6e 67 20 74 68 65 20 73 70  y forcing the sp
2430: 69 6e 6e 69 6e 67 20 74 68 72 65 61 64 20 74 6f  inning thread to
2440: 20 67 69 76 65 20 75 70 20 61 66 74 65 72 20 61   give up after a
2450: 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66   fixed number of
2460: 20 61 74 74 65 6d 70 74 73 0a 20 20 61 74 20 72   attempts.  at r
2470: 65 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20 70  ecompiling the p
2480: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
2490: 74 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  t.  The default 
24a0: 73 65 74 74 69 6e 67 20 69 73 20 35 30 20 77 68  setting is 50 wh
24b0: 69 63 68 20 69 73 0a 20 20 6d 6f 72 65 20 74 68  ich is.  more th
24c0: 61 6e 20 61 64 65 71 75 61 74 65 20 66 6f 72 20  an adequate for 
24d0: 6d 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  most application
24e0: 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  s..}..COMPILE_OP
24f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4d 41 58  TION {SQLITE_MAX
2500: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3d  _WORKER_THREADS=
2510: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 53 65  <i>N</i>} {.  Se
2520: 74 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64  t an upper bound
2530: 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33   on the [sqlite3
2540: 5f 6c 69 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49  _limit](db,[SQLI
2550: 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f  TE_LIMIT_WORKER_
2560: 54 48 52 45 41 44 53 5d 2c 4e 29 0a 20 20 73 65  THREADS],N).  se
2570: 74 74 69 6e 67 20 74 68 61 74 20 64 65 74 65 72  tting that deter
2580: 6d 69 6e 65 73 20 74 68 65 20 6d 61 78 69 6d 75  mines the maximu
2590: 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69  m number of auxi
25a0: 6c 69 61 72 79 20 74 68 72 65 61 64 73 20 74 68  liary threads th
25b0: 61 74 20 61 20 73 69 6e 67 6c 65 0a 20 20 5b 70  at a single.  [p
25c0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
25d0: 74 5d 20 77 69 6c 6c 20 75 73 65 20 74 6f 20 61  t] will use to a
25e0: 69 64 20 77 69 74 68 20 43 50 55 2d 69 6e 74 65  id with CPU-inte
25f0: 6e 73 69 76 65 20 63 6f 6d 70 75 74 61 74 69 6f  nsive computatio
2600: 6e 73 0a 20 20 28 6d 6f 73 74 6c 79 20 73 6f 72  ns.  (mostly sor
2610: 74 69 6e 67 29 2e 20 20 53 65 65 20 61 6c 73 6f  ting).  See also
2620: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 44 45 46   the [SQLITE_DEF
2630: 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  AULT_WORKER_THRE
2640: 41 44 53 5d 20 6f 70 74 69 6f 6e 73 2e 0a 7d 0a  ADS] options..}.
2650: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2660: 7b 53 51 4c 49 54 45 5f 4d 49 4e 49 4d 55 4d 5f  {SQLITE_MINIMUM_
2670: 46 49 4c 45 5f 44 45 53 43 52 49 50 54 4f 52 3d  FILE_DESCRIPTOR=
2680: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  <i>N</i>} {.  Th
2690: 65 20 75 6e 69 78 20 5b 56 46 53 5d 20 77 69 6c  e unix [VFS] wil
26a0: 6c 20 6e 65 76 65 72 20 75 73 65 20 61 20 66 69  l never use a fi
26b0: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6c 65  le descriptor le
26c0: 73 73 20 74 68 61 6e 20 3c 69 3e 4e 3c 2f 69 3e  ss than <i>N</i>
26d0: 2e 20 20 54 68 65 0a 20 20 64 65 66 61 75 6c 74  .  The.  default
26e0: 20 76 61 6c 75 65 20 6f 66 20 3c 69 3e 4e 3c 2f   value of <i>N</
26f0: 69 3e 20 69 73 20 33 2e 0a 20 20 3c 70 3e 0a 20  i> is 3..  <p>. 
2700: 20 41 76 6f 69 64 69 6e 67 20 74 68 65 20 75 73   Avoiding the us
2710: 65 20 6f 66 20 6c 6f 77 2d 6e 75 6d 62 65 72 65  e of low-numbere
2720: 64 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  d file descripto
2730: 72 73 20 69 73 20 61 20 64 65 66 65 6e 73 65 20  rs is a defense 
2740: 61 67 61 69 6e 73 74 0a 20 20 61 63 63 69 64 65  against.  accide
2750: 6e 74 61 6c 20 64 61 74 61 62 61 73 65 20 63 6f  ntal database co
2760: 72 72 75 70 74 69 6f 6e 2e 20 20 49 66 20 61 20  rruption.  If a 
2770: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 61  database file wa
2780: 73 20 6f 70 65 6e 65 64 20 75 73 69 6e 67 0a 20  s opened using. 
2790: 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   file descriptor
27a0: 20 32 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c   2, for example,
27b0: 20 61 6e 64 20 74 68 65 6e 20 61 6e 20 61 73 73   and then an ass
27c0: 65 72 74 28 29 20 66 61 69 6c 65 64 20 61 6e 64  ert() failed and
27d0: 20 69 6e 76 6f 6b 65 64 0a 20 20 77 72 69 74 65   invoked.  write
27e0: 28 32 2c 2e 2e 2e 29 2c 20 74 68 61 74 20 77 6f  (2,...), that wo
27f0: 75 6c 64 20 6c 69 6b 65 6c 79 20 63 61 75 73 65  uld likely cause
2800: 20 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70   database corrup
2810: 74 69 6f 6e 20 62 79 20 6f 76 65 72 77 72 69 74  tion by overwrit
2820: 69 6e 67 0a 20 20 70 61 72 74 20 6f 66 20 74 68  ing.  part of th
2830: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2840: 77 69 74 68 20 74 68 65 20 61 73 73 65 72 74 69  with the asserti
2850: 6f 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  on error message
2860: 2e 20 20 55 73 69 6e 67 20 6f 6e 6c 79 0a 20 20  .  Using only.  
2870: 68 69 67 68 65 72 2d 76 61 6c 75 65 64 20 66 69  higher-valued fi
2880: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 61  le descriptors a
2890: 76 6f 69 64 73 20 74 68 69 73 20 70 6f 74 65 6e  voids this poten
28a0: 74 69 61 6c 20 70 72 6f 62 6c 65 6d 2e 20 20 54  tial problem.  T
28b0: 68 65 20 0a 20 20 70 72 6f 74 65 63 74 69 6f 6e  he .  protection
28c0: 20 61 67 61 69 6e 73 74 0a 20 20 75 73 69 6e 67   against.  using
28d0: 20 6c 6f 77 2d 6e 75 6d 62 65 72 65 64 20 66 69   low-numbered fi
28e0: 6c 65 20 64 65 73 63 72 69 70 74 6f 72 73 20 63  le descriptors c
28f0: 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 62  an be disabled b
2900: 79 20 73 65 74 74 69 6e 67 20 74 68 69 73 0a 20  y setting this. 
2910: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
2920: 74 69 6f 6e 20 74 6f 20 30 2e 0a 7d 0a 0a 43 4f  tion to 0..}..CO
2930: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
2940: 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f  LITE_POWERSAFE_O
2950: 56 45 52 57 52 49 54 45 3d 3c 69 3e 26 6c 74 3b  VERWRITE=<i>&lt;
2960: 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69 3e 7d 20  0 or 1&gt;</i>} 
2970: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
2980: 63 68 61 6e 67 65 73 20 74 68 65 20 64 65 66 61  changes the defa
2990: 75 6c 74 20 61 73 73 75 6d 70 74 69 6f 6e 20 61  ult assumption a
29a0: 62 6f 75 74 20 5b 70 6f 77 65 72 73 61 66 65 20  bout [powersafe 
29b0: 6f 76 65 72 77 72 69 74 65 5d 0a 20 20 66 6f 72  overwrite].  for
29c0: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
29d0: 66 69 6c 65 73 79 73 74 65 6d 73 20 66 6f 72 20  filesystems for 
29e0: 74 68 65 20 75 6e 69 78 20 61 6e 64 20 77 69 6e  the unix and win
29f0: 64 6f 77 73 20 5b 56 46 53 65 73 5d 2e 0a 20 20  dows [VFSes]..  
2a00: 53 65 74 74 69 6e 67 20 53 51 4c 49 54 45 5f 50  Setting SQLITE_P
2a10: 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
2a20: 54 45 20 74 6f 20 31 20 63 61 75 73 65 73 20 53  TE to 1 causes S
2a30: 51 4c 69 74 65 20 74 6f 20 61 73 73 75 6d 65 20  QLite to assume 
2a40: 74 68 61 74 0a 20 20 61 70 70 6c 69 63 61 74 69  that.  applicati
2a50: 6f 6e 2d 6c 65 76 65 6c 20 77 72 69 74 65 73 20  on-level writes 
2a60: 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 73 20 62  cannot changes b
2a70: 79 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 65  ytes outside the
2a80: 20 72 61 6e 67 65 20 6f 66 0a 20 20 62 79 74 65   range of.  byte
2a90: 73 20 77 72 69 74 74 65 6e 20 65 76 65 6e 20 69  s written even i
2aa0: 66 20 74 68 65 20 77 72 69 74 65 20 6f 63 63 75  f the write occu
2ab0: 72 73 20 6a 75 73 74 20 62 65 66 6f 72 65 20 61  rs just before a
2ac0: 20 70 6f 77 65 72 20 6c 6f 73 73 2e 0a 20 20 57   power loss..  W
2ad0: 69 74 68 20 53 51 4c 49 54 45 5f 50 4f 57 45 52  ith SQLITE_POWER
2ae0: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20 73  SAFE_OVERWRITE s
2af0: 65 74 20 74 6f 20 30 2c 20 53 51 4c 69 74 65 20  et to 0, SQLite 
2b00: 61 73 73 75 6d 65 73 20 74 68 61 74 20 6f 74 68  assumes that oth
2b10: 65 72 0a 20 20 62 79 74 65 73 20 69 6e 20 74 68  er.  bytes in th
2b20: 65 20 73 61 6d 65 20 73 65 63 74 6f 72 20 77 69  e same sector wi
2b30: 74 68 20 61 20 77 72 69 74 74 65 6e 20 62 79 74  th a written byt
2b40: 65 20 6d 69 67 68 74 20 62 65 20 63 68 61 6e 67  e might be chang
2b50: 65 64 20 6f 72 20 0a 20 20 64 61 6d 61 67 65 64  ed or .  damaged
2b60: 20 62 79 20 61 20 70 6f 77 65 72 20 6c 6f 73 73   by a power loss
2b70: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2b80: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 57 49 4e 33  ION {SQLITE_WIN3
2b90: 32 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68  2_MALLOC} {.  Th
2ba0: 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65  is option enable
2bb0: 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  s the use of the
2bc0: 20 57 69 6e 64 6f 77 73 20 48 65 61 70 20 41 50   Windows Heap AP
2bd0: 49 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20  I functions for 
2be0: 6d 65 6d 6f 72 79 0a 20 20 61 6c 6c 6f 63 61 74  memory.  allocat
2bf0: 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 74  ion instead of t
2c00: 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  he standard libr
2c10: 61 72 79 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64  ary malloc() and
2c20: 20 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 73   free() routines
2c30: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
2c40: 49 4f 4e 20 7b 59 59 53 54 41 43 4b 44 45 50 54  ION {YYSTACKDEPT
2c50: 48 3d 3c 69 3e 26 6c 74 3b 6d 61 78 5f 64 65 70  H=<i>&lt;max_dep
2c60: 74 68 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20  th&gt;</i>} {.  
2c70: 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74 73 20  This macro sets 
2c80: 74 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  the maximum dept
2c90: 68 20 6f 66 20 74 68 65 20 4c 41 4c 52 28 31 29  h of the LALR(1)
2ca0: 20 73 74 61 63 6b 20 75 73 65 64 20 62 79 0a 20   stack used by. 
2cb0: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
2cc0: 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20 20  within SQLite.  
2cd0: 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
2ce0: 65 20 69 73 20 31 30 30 2e 20 20 41 20 74 79 70  e is 100.  A typ
2cf0: 69 63 61 6c 0a 20 20 61 70 70 6c 69 63 61 74 69  ical.  applicati
2d00: 6f 6e 20 77 69 6c 6c 20 75 73 65 20 6c 65 73 73  on will use less
2d10: 20 74 68 61 6e 20 61 62 6f 75 74 20 32 30 20 6c   than about 20 l
2d20: 65 76 65 6c 73 20 6f 66 20 74 68 65 20 73 74 61  evels of the sta
2d30: 63 6b 2e 0a 20 20 44 65 76 65 6c 6f 70 65 72 73  ck..  Developers
2d40: 20 77 68 6f 73 65 20 61 70 70 6c 69 63 61 74 69   whose applicati
2d50: 6f 6e 73 20 63 6f 6e 74 61 69 6e 20 53 51 4c 20  ons contain SQL 
2d60: 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
2d70: 0a 20 20 6e 65 65 64 20 6d 6f 72 65 20 74 68 61  .  need more tha
2d80: 6e 20 31 30 30 20 4c 41 4c 52 28 31 29 20 73 74  n 100 LALR(1) st
2d90: 61 63 6b 20 65 6e 74 72 69 65 73 20 73 68 6f 75  ack entries shou
2da0: 6c 64 20 73 65 72 69 6f 75 73 6c 79 0a 20 20 63  ld seriously.  c
2db0: 6f 6e 73 69 64 65 72 20 72 65 66 61 63 74 6f 72  onsider refactor
2dc0: 69 6e 67 20 74 68 65 69 72 20 53 51 4c 20 61 73  ing their SQL as
2dd0: 20 69 74 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f   it is likely to
2de0: 20 62 65 20 77 65 6c 6c 20 62 65 79 6f 6e 64 0a   be well beyond.
2df0: 20 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66    the ability of
2e00: 20 61 6e 79 20 68 75 6d 61 6e 20 74 6f 20 63 6f   any human to co
2e10: 6d 70 72 65 68 65 6e 64 2e 0a 7d 0a 3c 2f 74 63  mprehend..}.</tc
2e20: 6c 3e 0a 0a 3c 68 32 3e 31 2e 32 20 4f 70 74 69  l>..<h2>1.2 Opti
2e30: 6f 6e 73 20 54 6f 20 53 65 74 20 53 69 7a 65 20  ons To Set Size 
2e40: 4c 69 6d 69 74 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  Limits</h2>..<p>
2e50: 54 68 65 72 65 20 61 72 65 20 63 6f 6d 70 69 6c  There are compil
2e60: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 74  e-time options t
2e70: 68 61 74 20 77 69 6c 6c 20 73 65 74 20 75 70 70  hat will set upp
2e80: 65 72 20 62 6f 75 6e 64 73 0a 6f 6e 20 74 68 65  er bounds.on the
2e90: 20 73 69 7a 65 73 20 6f 66 20 76 61 72 69 6f 75   sizes of variou
2ea0: 73 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 20  s structures in 
2eb0: 53 51 4c 69 74 65 2e 20 20 54 68 65 20 63 6f 6d  SQLite.  The com
2ec0: 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f 6e  pile-time.option
2ed0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 65 74 20 61  s normally set a
2ee0: 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
2ef0: 64 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 68  d that can be ch
2f00: 61 6e 67 65 64 0a 61 74 20 72 75 6e 2d 74 69 6d  anged.at run-tim
2f10: 65 20 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20  e on individual 
2f20: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
2f30: 74 69 6f 6e 73 5d 20 75 73 69 6e 67 20 74 68 65  tions] using the
2f40: 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28  .[sqlite3_limit(
2f50: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70  )] interface.</p
2f60: 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 69 6c  >..<p>The compil
2f70: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 66  e-time options f
2f80: 6f 72 20 73 65 74 74 69 6e 67 20 75 70 70 65 72  or setting upper
2f90: 20 62 6f 75 6e 64 73 20 61 72 65 0a 5b 6c 69 6d   bounds are.[lim
2fa0: 69 74 73 20 7c 20 64 6f 63 75 6d 65 6e 74 65 64  its | documented
2fb0: 20 73 65 70 61 72 61 74 65 6c 79 5d 2e 20 20 54   separately].  T
2fc0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20  he following is 
2fd0: 61 20 6c 69 73 74 20 6f 66 0a 74 68 65 20 61 76  a list of.the av
2fe0: 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73  ailable settings
2ff0: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
3000: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54   [SQLITE_MAX_ATT
3010: 41 43 48 45 44 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ACHED]  </li>.<l
3020: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
3030: 4f 4c 55 4d 4e 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  OLUMN]  </li>.<l
3040: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  i> [SQLITE_MAX_C
3050: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 20  OMPOUND_SELECT] 
3060: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c   </li>.<li> [SQL
3070: 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  ITE_MAX_EXPR_DEP
3080: 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  TH]  </li>.<li> 
3090: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43  [SQLITE_MAX_FUNC
30a0: 54 49 4f 4e 5f 41 52 47 5d 20 20 3c 2f 6c 69 3e  TION_ARG]  </li>
30b0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
30c0: 58 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  X_LENGTH]  </li>
30d0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
30e0: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
30f0: 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ENGTH]  </li>.<l
3100: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 50  i> [SQLITE_MAX_P
3110: 41 47 45 5f 43 4f 55 4e 54 5d 20 20 3c 2f 6c 69  AGE_COUNT]  </li
3120: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
3130: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 20  AX_SQL_LENGTH]  
3140: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
3150: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
3160: 4e 55 4d 42 45 52 5d 20 20 3c 2f 6c 69 3e 0a 3c  NUMBER]  </li>.<
3170: 2f 75 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 63  /ul>..<a name="c
3180: 6f 6e 74 72 6f 6c 66 65 61 74 75 72 65 73 22 3e  ontrolfeatures">
3190: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 33 20 4f 70 74  </a>.<h2>1.3 Opt
31a0: 69 6f 6e 73 20 54 6f 20 43 6f 6e 74 72 6f 6c 20  ions To Control 
31b0: 4f 70 65 72 61 74 69 6e 67 20 43 68 61 72 61 63  Operating Charac
31c0: 74 65 72 69 73 74 69 63 73 3c 2f 68 32 3e 0a 0a  teristics</h2>..
31d0: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
31e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 34 5f 42  TION {SQLITE_4_B
31f0: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
3200: 4f 43 7d 20 7b 0a 20 20 4f 6e 20 6d 6f 73 74 20  OC} {.  On most 
3210: 73 79 73 74 65 6d 73 2c 20 74 68 65 20 6d 61 6c  systems, the mal
3220: 6c 6f 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c  loc() system cal
3230: 6c 20 72 65 74 75 72 6e 73 20 61 20 62 75 66 66  l returns a buff
3240: 65 72 20 74 68 61 74 20 69 73 0a 20 20 61 6c 69  er that is.  ali
3250: 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74  gned to an 8-byt
3260: 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 42 75 74  e boundary.  But
3270: 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73   on some systems
3280: 20 28 65 78 3a 20 77 69 6e 64 6f 77 73 29 20 6d   (ex: windows) m
3290: 61 6c 6c 6f 63 28 29 0a 20 20 72 65 74 75 72 6e  alloc().  return
32a0: 73 20 34 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  s 4-byte aligned
32b0: 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 69 73 20   pointer.  This 
32c0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
32d0: 69 6f 6e 20 6d 75 73 74 20 62 65 20 75 73 65 64  ion must be used
32e0: 0a 20 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68  .  on systems th
32f0: 61 74 20 72 65 74 75 72 6e 20 34 2d 62 79 74 65  at return 4-byte
3300: 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
3310: 73 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e  s from malloc().
3320: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3330: 4f 4e 20 7b 53 51 4c 49 54 45 5f 43 41 53 45 5f  ON {SQLITE_CASE_
3340: 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b 45 7d 20  SENSITIVE_LIKE} 
3350: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
3360: 6f 6e 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  on is present, t
3370: 68 65 6e 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hen the built-in
3380: 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
3390: 20 77 69 6c 6c 20 62 65 0a 20 20 63 61 73 65 20   will be.  case 
33a0: 73 65 6e 73 69 74 69 76 65 2e 20 20 54 68 69 73  sensitive.  This
33b0: 20 73 61 6d 65 20 65 66 66 65 63 74 20 63 61 6e   same effect can
33c0: 20 62 65 20 61 63 68 69 65 76 65 64 20 61 74 20   be achieved at 
33d0: 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20  run-time using. 
33e0: 20 74 68 65 20 5b 63 61 73 65 5f 73 65 6e 73 69   the [case_sensi
33f0: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
3400: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
3410: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 52  TION {SQLITE_DIR
3420: 45 43 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41  ECT_OVERFLOW_REA
3430: 44 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  D} {.  When this
3440: 20 6f 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65   option is prese
3450: 6e 74 2c 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74  nt, content cont
3460: 61 69 6e 65 64 20 69 6e 0a 20 20 5b 6f 76 65 72  ained in.  [over
3470: 66 6c 6f 77 20 70 61 67 65 73 5d 20 6f 66 20 74  flow pages] of t
3480: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
3490: 20 69 73 20 72 65 61 64 20 64 69 72 65 63 74 6c   is read directl
34a0: 79 20 66 72 6f 6d 20 64 69 73 6b 2c 0a 20 20 62  y from disk,.  b
34b0: 79 70 61 73 73 69 6e 67 20 74 68 65 20 5b 70 61  ypassing the [pa
34c0: 67 65 20 63 61 63 68 65 5d 2c 20 64 75 72 69 6e  ge cache], durin
34d0: 67 20 72 65 61 64 20 74 72 61 6e 73 61 63 74 69  g read transacti
34e0: 6f 6e 73 2e 20 20 49 6e 20 61 70 70 6c 69 63 61  ons.  In applica
34f0: 74 69 6f 6e 73 0a 20 20 74 68 61 74 20 64 6f 20  tions.  that do 
3500: 61 20 6c 6f 74 20 6f 66 20 72 65 61 64 73 20 6f  a lot of reads o
3510: 66 20 6c 61 72 67 65 20 42 4c 4f 42 73 2c 20 74  f large BLOBs, t
3520: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 69 67 68 74  his option might
3530: 20 69 6d 70 72 6f 76 65 20 72 65 61 64 0a 20 20   improve read.  
3540: 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a 7d 0a 0a  performance..}..
3550: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
3560: 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e 41  SQLITE_HAVE_ISNA
3570: 4e 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  N} {.  If this o
3580: 70 74 69 6f 6e 20 69 73 20 70 72 65 73 65 6e 74  ption is present
3590: 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 77 69  , then SQLite wi
35a0: 6c 6c 20 75 73 65 20 74 68 65 20 69 73 6e 61 6e  ll use the isnan
35b0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d  () function from
35c0: 0a 20 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61  .  the system ma
35d0: 74 68 20 6c 69 62 72 61 72 79 2e 20 20 57 69 74  th library.  Wit
35e0: 68 6f 75 74 20 74 68 69 73 20 6f 70 74 69 6f 6e  hout this option
35f0: 20 28 74 68 65 20 64 65 66 61 75 6c 74 20 62 65   (the default be
3600: 68 61 76 69 6f 72 29 0a 20 20 53 51 4c 69 74 65  havior).  SQLite
3610: 20 75 73 65 73 20 69 74 73 20 6f 77 6e 20 69 6e   uses its own in
3620: 74 65 72 6e 61 6c 20 69 6d 70 6c 65 6d 65 6e 74  ternal implement
3630: 61 74 69 6f 6e 20 6f 66 20 69 73 6e 61 6e 28 29  ation of isnan()
3640: 2e 20 20 53 51 4c 69 74 65 20 75 73 65 73 0a 20  .  SQLite uses. 
3650: 20 69 74 73 20 6f 77 6e 20 69 6e 74 65 72 6e 61   its own interna
3660: 6c 20 69 73 6e 61 6e 28 29 20 69 6d 70 6c 65 6d  l isnan() implem
3670: 65 6e 74 61 74 69 6f 6e 20 62 79 20 64 65 66 61  entation by defa
3680: 75 6c 74 20 62 65 63 61 75 73 65 20 6f 66 20 70  ult because of p
3690: 61 73 74 0a 20 20 70 72 6f 62 6c 65 6d 73 20 77  ast.  problems w
36a0: 69 74 68 20 73 79 73 74 65 6d 20 69 73 6e 61 6e  ith system isnan
36b0: 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a  () functions..}.
36c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
36d0: 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52  {SQLITE_OS_OTHER
36e0: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
36f0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  t;</i>} {.  The 
3700: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
3710: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69 74 73  Lite to omit its
3720: 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74   built-in operat
3730: 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
3740: 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e 69 78  faces.  for Unix
3750: 2c 20 57 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f  , Windows, and O
3760: 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75 6c 74  S/2.  The result
3770: 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ing library will
3780: 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75 6c 74   have no default
3790: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20  .  [sqlite3_vfs 
37a0: 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  | operating syst
37b0: 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e 20 20  em interface].  
37c0: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
37d0: 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74 65 33  t use.  [sqlite3
37e0: 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
37f0: 20 74 6f 20 72 65 67 69 73 74 65 72 20 61 6e 20   to register an 
3800: 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65  appropriate inte
3810: 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20 20 75  rface before.  u
3820: 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20 41 70  sing SQLite.  Ap
3830: 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20  plications must 
3840: 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c  also supply impl
3850: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20  ementations for 
3860: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f  the.  [sqlite3_o
3870: 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73  s_init()] and [s
3880: 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d  qlite3_os_end()]
3890: 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54 68   interfaces.  Th
38a0: 65 20 75 73 75 61 6c 20 70 72 61 63 74 69 63 65  e usual practice
38b0: 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20 73 75  .  is for the su
38c0: 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65 33 5f  pplied [sqlite3_
38d0: 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e  os_init()] to in
38e0: 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 66  voke [sqlite3_vf
38f0: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e 0a 20  s_register()].. 
3900: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 75 74   SQLite will aut
3910: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b  omatically invok
3920: 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  e [sqlite3_os_in
3930: 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20 69 6e  it()] when it in
3940: 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68  itializes...  Th
3950: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 79 70  is option is typ
3960: 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68 65 6e  ically used when
3970: 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65   building SQLite
3980: 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64 65 64   for an embedded
3990: 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69 74 68  .  platform with
39a0: 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72 61 74   a custom operat
39b0: 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43  ing system..}..C
39c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
39d0: 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c  QLITE_SECURE_DEL
39e0: 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f  ETE} {.  This co
39f0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
3a00: 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 65  n changes the de
3a10: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 6f 66  fault setting of
3a20: 20 74 68 65 0a 20 20 5b 73 65 63 75 72 65 5f 64   the.  [secure_d
3a30: 65 6c 65 74 65 20 70 72 61 67 6d 61 5d 2e 20 20  elete pragma].  
3a40: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
3a50: 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 73 65   is not used, se
3a60: 63 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61  cure_delete defa
3a70: 75 6c 74 73 0a 20 20 74 6f 20 6f 66 66 2e 20 20  ults.  to off.  
3a80: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
3a90: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 73 65 63   is present, sec
3aa0: 75 72 65 5f 64 65 6c 65 74 65 20 64 65 66 61 75  ure_delete defau
3ab0: 6c 74 73 20 74 6f 20 6f 6e 2e 0a 0a 20 20 54 68  lts to on...  Th
3ac0: 65 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20  e secure_delete 
3ad0: 73 65 74 74 69 6e 67 20 63 61 75 73 65 73 20 64  setting causes d
3ae0: 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74 20 74  eleted content t
3af0: 6f 20 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e  o be overwritten
3b00: 20 77 69 74 68 0a 20 20 7a 65 72 6f 73 2e 20 20   with.  zeros.  
3b10: 54 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c 6c  There is a small
3b20: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
3b30: 61 6c 74 79 20 66 6f 72 20 74 68 69 73 20 73 69  alty for this si
3b40: 6e 63 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 49  nce additional I
3b50: 2f 4f 0a 20 20 6d 75 73 74 20 6f 63 63 75 72 2e  /O.  must occur.
3b60: 20 20 4f 6e 20 74 68 65 20 6f 74 68 65 72 20 68    On the other h
3b70: 61 6e 64 2c 20 73 65 63 75 72 65 5f 64 65 6c 65  and, secure_dele
3b80: 74 65 20 63 61 6e 20 70 72 65 76 65 6e 74 20 73  te can prevent s
3b90: 65 6e 73 69 74 69 76 65 20 0a 20 20 69 6e 66 6f  ensitive .  info
3ba0: 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 6c 69 6e  rmation from lin
3bb0: 67 65 72 69 6e 67 20 69 6e 20 75 6e 75 73 65 64  gering in unused
3bc0: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 64 61   parts of the da
3bd0: 74 61 62 61 73 65 20 66 69 6c 65 20 61 66 74 65  tabase file afte
3be0: 72 20 69 74 0a 20 20 68 61 73 20 61 6c 6c 65 67  r it.  has alleg
3bf0: 65 64 6c 79 20 62 65 65 6e 20 64 65 6c 65 74 65  edly been delete
3c00: 64 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63 75  d.  See the docu
3c10: 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65  mentation on the
3c20: 0a 20 20 5b 73 65 63 75 72 65 5f 64 65 6c 65 74  .  [secure_delet
3c30: 65 20 70 72 61 67 6d 61 5d 20 66 6f 72 20 61 64  e pragma] for ad
3c40: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
3c50: 74 69 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tion..}..COMPILE
3c60: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
3c70: 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c  THREADSAFE=<i>&l
3c80: 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74  t;0 or 1 or 2&gt
3c90: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
3ca0: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
3cb0: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63  whether or not c
3cc0: 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20  ode is included 
3cd0: 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65  in SQLite to.  e
3ce0: 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72  nable it to oper
3cf0: 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20  ate safely in a 
3d00: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
3d10: 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a  vironment.  The.
3d20: 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c    default is SQL
3d30: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
3d40: 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20 66   which is safe f
3d50: 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74  or use in a mult
3d60: 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69  ithreaded.  envi
3d70: 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63  ronment.  When c
3d80: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
3d90: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
3da0: 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f   all mutexing co
3db0: 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20  de.  is omitted 
3dc0: 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66 65  and it is unsafe
3dd0: 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69   to use SQLite i
3de0: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
3df0: 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65  d program..  Whe
3e00: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
3e10: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
3e20: 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20  E=2, SQLite can 
3e30: 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c  be used in a mul
3e40: 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f  tithreaded.  pro
3e50: 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20  gram so long as 
3e60: 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61  no two threads a
3e70: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
3e80: 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61  e same.  [databa
3e90: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28  se connection] (
3ea0: 6f 72 20 61 6e 79 20 5b 70 72 65 70 61 72 65 64  or any [prepared
3eb0: 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 64 65 72   statements] der
3ec0: 69 76 65 64 20 66 72 6f 6d 0a 20 20 74 68 61 74  ived from.  that
3ed0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
3ee0: 74 69 6f 6e 29 20 61 74 20 74 68 65 20 73 61 6d  tion) at the sam
3ef0: 65 20 74 69 6d 65 2e 0a 0a 20 20 54 6f 20 70 75  e time...  To pu
3f00: 74 20 69 74 20 61 6e 6f 74 68 65 72 20 77 61 79  t it another way
3f10: 2c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  , SQLITE_THREADS
3f20: 41 46 45 3d 31 20 73 65 74 73 20 74 68 65 20 64  AFE=1 sets the d
3f30: 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61 64  efault.  [thread
3f40: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72  ing mode] to Ser
3f50: 69 61 6c 69 7a 65 64 2e 20 20 53 51 4c 49 54 45  ialized.  SQLITE
3f60: 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 73 65  _THREADSAFE=2 se
3f70: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  ts the default. 
3f80: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
3f90: 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61  ] to Multi-threa
3fa0: 64 65 64 2e 20 20 41 6e 64 20 53 51 4c 49 54 45  ded.  And SQLITE
3fb0: 5f 54 48 52 45 41 44 53 41 46 45 3d 30 20 73 65  _THREADSAFE=0 se
3fc0: 74 73 20 74 68 65 0a 20 20 5b 74 68 72 65 61 64  ts the.  [thread
3fd0: 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e  ing mode] to Sin
3fe0: 67 6c 65 2d 74 68 72 65 61 64 65 64 2e 0a 0a 20  gle-threaded... 
3ff0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 53 51   The value of SQ
4000: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20  LITE_THREADSAFE 
4010: 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65  can be determine
4020: 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20  d at run-time.  
4030: 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
4040: 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d  e3_threadsafe()]
4050: 20 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 57   interface...  W
4060: 68 65 6e 20 53 51 4c 69 74 65 20 68 61 73 20 62  hen SQLite has b
4070: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
4080: 68 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  h SQLITE_THREADS
4090: 41 46 45 3d 31 20 6f 72 0a 20 20 53 51 4c 49 54  AFE=1 or.  SQLIT
40a0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 32 20 74  E_THREADSAFE=2 t
40b0: 68 65 6e 20 74 68 65 20 5b 74 68 72 65 61 64 69  hen the [threadi
40c0: 6e 67 20 6d 6f 64 65 5d 0a 20 20 63 61 6e 20 62  ng mode].  can b
40d0: 65 20 61 6c 74 65 72 65 64 20 61 74 20 72 75 6e  e altered at run
40e0: 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  -time using the 
40f0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
4100: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67  )] interface tog
4110: 65 74 68 65 72 0a 20 20 77 69 74 68 20 6f 6e 65  ether.  with one
4120: 20 6f 66 20 74 68 65 73 65 20 76 65 72 62 73 3a   of these verbs:
4130: 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 5b  ..  <ul>.  <li>[
4140: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49  SQLITE_CONFIG_SI
4150: 4e 47 4c 45 54 48 52 45 41 44 5d 0a 20 20 3c 6c  NGLETHREAD].  <l
4160: 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  i>[SQLITE_CONFIG
4170: 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 20 20  _MULTITHREAD].  
4180: 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  <li>[SQLITE_CONF
4190: 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 0a 20  IG_SERIALIZED]. 
41a0: 20 3c 2f 75 6c 3e 0a 0a 20 20 54 68 65 20 5b 53   </ul>..  The [S
41b0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54  QLITE_OPEN_NOMUT
41c0: 45 58 5d 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54  EX] and.  [SQLIT
41d0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
41e0: 5d 20 66 6c 61 67 73 20 74 6f 20 5b 73 71 6c 69  ] flags to [sqli
41f0: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 63  te3_open_v2()] c
4200: 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 0a  an also be used.
4210: 20 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20    to adjust the 
4220: 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
4230: 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 5b   of individual [
4240: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
4250: 69 6f 6e 73 5d 0a 20 20 61 74 20 72 75 6e 2d 74  ions].  at run-t
4260: 69 6d 65 2e 0a 0a 20 20 4e 6f 74 65 20 74 68 61  ime...  Note tha
4270: 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  t when SQLite is
4280: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53   compiled with S
4290: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
42a0: 3d 30 2c 20 74 68 65 20 63 6f 64 65 0a 20 20 74  =0, the code.  t
42b0: 6f 20 6d 61 6b 65 20 53 51 4c 69 74 65 20 74 68  o make SQLite th
42c0: 72 65 61 64 73 61 66 65 20 69 73 20 6f 6d 69 74  readsafe is omit
42d0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69  ted from the bui
42e0: 6c 64 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f  ld.  When this o
42f0: 63 63 75 72 73 2c 0a 20 20 69 74 20 69 73 20 69  ccurs,.  it is i
4300: 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61  mpossible to cha
4310: 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  nge the [threadi
4320: 6e 67 20 6d 6f 64 65 5d 20 61 74 20 73 74 61 72  ng mode] at star
4330: 74 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69  t-time or run-ti
4340: 6d 65 2e 0a 0a 20 20 53 65 65 20 74 68 65 20 5b  me...  See the [
4350: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
4360: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
4370: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
4380: 6f 72 6d 61 74 69 6f 6e 0a 20 20 6f 6e 20 61 73  ormation.  on as
4390: 70 65 63 74 73 20 6f 66 20 75 73 69 6e 67 20 53  pects of using S
43a0: 51 4c 69 74 65 20 69 6e 20 61 20 6d 75 6c 74 69  QLite in a multi
43b0: 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e  threaded environ
43c0: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
43d0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
43e0: 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69 3e 26 6c  TEMP_STORE=<i>&l
43f0: 74 3b 30 20 74 68 72 6f 75 67 68 20 33 26 67 74  t;0 through 3&gt
4400: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
4410: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
4420: 77 68 65 74 68 65 72 20 74 65 6d 70 6f 72 61 72  whether temporar
4430: 79 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72  y files are stor
4440: 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72 0a 20 20  ed on disk or.  
4450: 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20  in memory.  The 
4460: 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20 76 61 72  meanings for var
4470: 69 6f 75 73 20 73 65 74 74 69 6e 67 73 20 6f 66  ious settings of
4480: 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69   this compile-ti
4490: 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61 72 65 20  me.  option are 
44a0: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 3c  as follows:..  <
44b0: 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e  table cellpaddin
44c0: 67 3d 22 32 22 20 62 6f 72 64 65 72 3d 22 31 22  g="2" border="1"
44d0: 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53 51 4c 49  >.  <tr><th>SQLI
44e0: 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74  TE_TEMP_STORE</t
44f0: 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67 3c 2f 74  h><th>Meaning</t
4500: 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  h></tr>.  <tr><t
4510: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
4520: 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79  >0</td><td>Alway
4530: 73 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20  s use temporary 
4540: 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  files</td></tr>.
4550: 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d    <tr><td align=
4560: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
4570: 74 64 3e 55 73 65 20 66 69 6c 65 73 20 62 79 20  td>Use files by 
4580: 64 65 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f  default but allo
4590: 77 20 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20  w the.  [PRAGMA 
45a0: 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d  temp_store] comm
45b0: 61 6e 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c  and to override<
45c0: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e  /td></tr>.  <tr>
45d0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
45e0: 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e 55 73 65  r">2</td><td>Use
45f0: 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 66 61 75   memory by defau
4600: 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65  lt but allow the
4610: 0a 20 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f  .  [PRAGMA temp_
4620: 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74  store] command t
4630: 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c  o override</td><
4640: 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61  /tr>.  <tr><td a
4650: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 33 3c  lign="center">3<
4660: 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79 73 20 75  /td><td>Always u
4670: 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f  se memory</td></
4680: 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65 3e 0a 0a  tr>.  </table>..
4690: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65    The default se
46a0: 74 74 69 6e 67 20 69 73 20 31 2e 20 20 0a 20 20  tting is 1.  .  
46b0: 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  Additional infor
46c0: 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f  mation can be fo
46d0: 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73 74 6f 72  und in [tempstor
46e0: 65 20 7c 20 74 65 6d 70 66 69 6c 65 73 2e 68 74  e | tempfiles.ht
46f0: 6d 6c 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ml]..}..COMPILE_
4700: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 54  OPTION {SQLITE_T
4710: 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d  RACE_SIZE_LIMIT=
4720: 3c 69 3e 4e 3c 2f 69 3e 7d 20 7b 0a 20 20 49 66  <i>N</i>} {.  If
4730: 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20 64   this macro is d
4740: 65 66 69 6e 65 64 20 74 6f 20 61 20 70 6f 73 69  efined to a posi
4750: 74 69 76 65 20 69 6e 74 65 67 65 72 20 3c 69 3e  tive integer <i>
4760: 4e 3c 2f 69 3e 2c 20 74 68 65 6e 20 74 68 65 20  N</i>, then the 
4770: 6c 65 6e 67 74 68 20 6f 66 0a 20 20 73 74 72 69  length of.  stri
4780: 6e 67 73 20 61 6e 64 20 42 4c 4f 42 20 74 68 61  ngs and BLOB tha
4790: 74 20 61 72 65 20 65 78 70 61 6e 64 65 64 20 69  t are expanded i
47a0: 6e 74 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69  nto parameters i
47b0: 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 0a  n the output of.
47c0: 20 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65    [sqlite3_trace
47d0: 28 29 5d 20 69 73 20 6c 69 6d 69 74 65 64 20 74  ()] is limited t
47e0: 6f 20 3c 69 3e 4e 3c 2f 69 3e 20 62 79 74 65 73  o <i>N</i> bytes
47f0: 2e 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  .  .}..COMPILE_O
4800: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 55 53  PTION {SQLITE_US
4810: 45 5f 55 52 49 7d 20 7b 0a 20 20 54 68 69 73 20  E_URI} {.  This 
4820: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
4830: 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d  e [URI filename]
4840: 20 70 72 6f 63 65 73 73 20 6c 6f 67 69 63 20 74   process logic t
4850: 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20  o be enabled by 
4860: 0a 20 20 64 65 66 61 75 6c 74 2e 20 20 0a 7d 0a  .  default.  .}.
4870: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
4880: 3d 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73  ="enablefeatures
4890: 22 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f  "></a>.<h2>1.4 O
48a0: 70 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65  ptions To Enable
48b0: 20 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c   Features Normal
48c0: 6c 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68  ly Turned Off</h
48d0: 32 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  2>..<tcl>.COMPIL
48e0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
48f0: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
4900: 52 49 54 59 7d 20 7b 0a 20 20 5b 55 52 49 20 66  RITY} {.  [URI f
4910: 69 6c 65 6e 61 6d 65 73 5d 20 6e 6f 72 6d 61 6c  ilenames] normal
4920: 6c 79 20 74 68 72 6f 77 20 61 6e 20 65 72 72 6f  ly throw an erro
4930: 72 20 69 73 20 74 68 65 20 61 75 74 68 6f 72 69  r is the authori
4940: 74 79 20 73 65 63 74 69 6f 6e 20 69 73 0a 20 20  ty section is.  
4950: 6e 6f 74 20 65 69 74 68 65 72 20 65 6d 70 74 79  not either empty
4960: 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e   or "localhost".
4970: 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51    However, if SQ
4980: 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
4990: 20 77 69 74 68 0a 20 20 74 68 65 20 53 51 4c 49   with.  the SQLI
49a0: 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54  TE_ALLOW_URI_AUT
49b0: 48 4f 52 49 54 59 20 63 6f 6d 70 69 6c 65 2d 74  HORITY compile-t
49c0: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
49d0: 20 74 68 65 20 55 52 49 20 69 73 0a 20 20 63 6f   the URI is.  co
49e0: 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 55  nverted into a U
49f0: 6e 69 66 6f 72 6d 20 4e 61 6d 69 6e 67 20 43 6f  niform Naming Co
4a00: 6e 76 65 6e 74 69 6f 6e 20 28 55 4e 43 29 20 66  nvention (UNC) f
4a10: 69 6c 65 6e 61 6d 65 20 61 6e 64 20 70 61 73 73  ilename and pass
4a20: 65 64 0a 20 20 64 6f 77 6e 20 74 6f 20 74 68 65  ed.  down to the
4a30: 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72   underlying oper
4a40: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 74 68 61  ating system tha
4a50: 74 20 77 61 79 2e 20 20 0a 20 20 3c 70 3e 0a 20  t way.  .  <p>. 
4a60: 20 53 6f 6d 65 20 66 75 74 75 72 65 20 76 65 72   Some future ver
4a70: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
4a80: 6d 61 79 20 63 68 61 6e 67 65 20 74 6f 20 65 6e  may change to en
4a90: 61 62 6c 65 20 74 68 69 73 20 66 65 61 74 75 72  able this featur
4aa0: 65 0a 20 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  e.  by default..
4ab0: 7d 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  }.COMPILE_OPTION
4ac0: 20 7b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43   {SQLITE_ALLOW_C
4ad0: 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
4ae0: 41 4e 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31  AN=<i>&lt;0 or 1
4af0: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
4b00: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 20  is C-preprocess 
4b10: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
4b20: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74   the default set
4b30: 74 69 6e 67 20 6f 66 20 74 68 65 0a 20 20 5b 53  ting of the.  [S
4b40: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56  QLITE_CONFIG_COV
4b50: 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
4b60: 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  ] configuration 
4b70: 73 65 74 74 69 6e 67 2e 20 20 49 74 20 64 65 66  setting.  It def
4b80: 61 75 6c 74 73 0a 20 20 74 6f 20 31 20 28 6f 6e  aults.  to 1 (on
4b90: 29 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68  ) which means th
4ba0: 61 74 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69  at covering indi
4bb0: 63 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ces are used for
4bc0: 20 66 75 6c 6c 20 74 61 62 6c 65 0a 20 20 73 63   full table.  sc
4bd0: 61 6e 73 20 77 68 65 72 65 20 70 6f 73 73 69 62  ans where possib
4be0: 6c 65 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  le, in order to 
4bf0: 72 65 64 75 63 65 20 49 2f 4f 20 61 6e 64 20 69  reduce I/O and i
4c00: 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e  mprove performan
4c10: 63 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74  ce..  However, t
4c20: 68 65 20 75 73 65 20 6f 66 20 61 20 63 6f 76 65  he use of a cove
4c30: 72 69 6e 67 20 69 6e 64 65 78 20 66 6f 72 20 61  ring index for a
4c40: 20 66 75 6c 6c 20 73 63 61 6e 20 77 69 6c 6c 20   full scan will 
4c50: 63 61 75 73 65 20 72 65 73 75 6c 74 73 0a 20 20  cause results.  
4c60: 74 6f 20 61 70 70 65 61 72 20 69 6e 20 61 20 64  to appear in a d
4c70: 69 66 66 65 72 65 6e 74 20 6f 72 64 65 72 20 66  ifferent order f
4c80: 72 6f 6d 20 6c 65 67 61 63 79 2c 20 77 68 69 63  rom legacy, whic
4c90: 68 20 63 6f 75 6c 64 20 63 61 75 73 65 20 73 6f  h could cause so
4ca0: 6d 65 0a 20 20 28 69 6e 63 6f 72 72 65 63 74 6c  me.  (incorrectl
4cb0: 79 2d 63 6f 64 65 64 29 20 6c 65 67 61 63 79 20  y-coded) legacy 
4cc0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
4cd0: 62 72 65 61 6b 2e 20 20 48 65 6e 63 65 2c 20 74  break.  Hence, t
4ce0: 68 65 20 63 6f 76 65 72 69 6e 67 0a 20 20 69 6e  he covering.  in
4cf0: 64 65 78 20 73 63 61 6e 20 6f 70 74 69 6f 6e 20  dex scan option 
4d00: 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20  can be disabled 
4d10: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
4d20: 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  on systems that 
4d30: 77 68 61 74 0a 20 20 74 6f 20 6d 69 6e 69 6d 69  what.  to minimi
4d40: 7a 65 20 74 68 65 69 72 20 72 69 73 6b 20 6f 66  ze their risk of
4d50: 20 65 78 70 6f 73 69 6e 67 20 65 72 72 6f 72 73   exposing errors
4d60: 20 69 6e 20 6c 65 67 61 63 79 20 61 70 70 6c 69   in legacy appli
4d70: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
4d80: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4d90: 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41  TE_ENABLE_8_3_NA
4da0: 4d 45 53 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20  MES=<i>&lt;1 or 
4db0: 32 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 49  2&gt;</i>} {.  I
4dc0: 66 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63  f this C-preproc
4dd0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64  essor macro is d
4de0: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 65 78 74  efined, then ext
4df0: 72 61 20 63 6f 64 65 20 69 73 0a 20 20 69 6e 63  ra code is.  inc
4e00: 6c 75 64 65 64 20 74 68 61 74 20 61 6c 6c 6f 77  luded that allow
4e10: 73 20 53 51 4c 69 74 65 20 74 6f 20 66 75 6e 63  s SQLite to func
4e20: 74 69 6f 6e 20 6f 6e 20 61 20 66 69 6c 65 73 79  tion on a filesy
4e30: 73 74 65 6d 20 74 68 61 74 0a 20 20 6f 6e 6c 79  stem that.  only
4e40: 20 73 75 70 70 6f 72 74 20 38 2b 33 20 66 69 6c   support 8+3 fil
4e50: 65 6e 61 6d 65 73 2e 20 20 49 66 20 74 68 65 20  enames.  If the 
4e60: 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6d 61  value of this ma
4e70: 63 72 6f 20 69 73 20 31 2c 0a 20 20 74 68 65 6e  cro is 1,.  then
4e80: 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   the default beh
4e90: 61 76 69 6f 72 20 69 73 20 74 6f 20 63 6f 6e 74  avior is to cont
4ea0: 69 6e 75 65 20 74 6f 20 75 73 65 20 6c 6f 6e 67  inue to use long
4eb0: 20 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 0a 20   filenames and. 
4ec0: 20 74 6f 20 6f 6e 6c 79 20 75 73 65 20 38 2b 33   to only use 8+3
4ed0: 20 66 69 6c 65 6e 61 6d 65 73 20 69 66 20 74 68   filenames if th
4ee0: 65 20 0a 20 20 64 61 74 61 62 61 73 65 20 63 6f  e .  database co
4ef0: 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e  nnection is open
4f00: 65 64 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69  ed using [URI fi
4f10: 6c 65 6e 61 6d 65 73 5d 20 77 69 74 68 0a 20 20  lenames] with.  
4f20: 74 68 65 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d  the "<tt>8_3_nam
4f30: 65 73 3d 31 3c 2f 74 74 3e 22 20 71 75 65 72 79  es=1</tt>" query
4f40: 20 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 20   parameter.  If 
4f50: 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 74  the value of.  t
4f60: 68 69 73 20 6d 61 63 72 6f 20 69 73 20 32 2c 20  his macro is 2, 
4f70: 74 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20  then the use of 
4f80: 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 62 65  8+3 filenames be
4f90: 63 6f 6d 65 73 20 74 68 65 20 64 65 66 61 75 6c  comes the defaul
4fa0: 74 0a 20 20 62 75 74 20 6d 61 79 20 62 65 20 64  t.  but may be d
4fb0: 69 73 61 62 6c 65 64 20 6f 6e 20 75 73 69 6e 67  isabled on using
4fc0: 20 74 68 65 20 3c 74 74 3e 38 5f 33 5f 6e 61 6d   the <tt>8_3_nam
4fd0: 65 73 3d 30 3c 2f 74 74 3e 20 71 75 65 72 79 20  es=0</tt> query 
4fe0: 70 61 72 61 6d 65 74 65 72 2e 0a 20 20 53 65 65  parameter..  See
4ff0: 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54   .}..COMPILE_OPT
5000: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
5010: 4c 45 5f 41 50 49 5f 41 52 4d 4f 52 7d 20 7b 0a  LE_API_ARMOR} {.
5020: 20 20 57 68 65 6e 20 64 65 66 69 6e 65 64 2c 20    When defined, 
5030: 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73  this C-preproces
5040: 73 6f 72 20 6d 61 63 72 6f 20 61 63 74 69 76 61  sor macro activa
5050: 74 65 73 20 65 78 74 72 61 20 63 6f 64 65 20 74  tes extra code t
5060: 68 61 74 0a 20 20 61 74 74 65 6d 70 74 73 20 74  hat.  attempts t
5070: 6f 20 64 65 74 65 63 74 20 6d 69 73 75 73 65 20  o detect misuse 
5080: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 41 50  of the SQLite AP
5090: 49 2c 20 73 75 63 68 20 61 73 20 70 61 73 73 69  I, such as passi
50a0: 6e 67 20 69 6e 20 4e 55 4c 4c 0a 20 20 70 6f 69  ng in NULL.  poi
50b0: 6e 74 65 72 73 20 74 6f 20 72 65 71 75 69 72 65  nters to require
50c0: 64 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20  d parameters or 
50d0: 75 73 69 6e 67 20 6f 62 6a 65 63 74 73 20 61 66  using objects af
50e0: 74 65 72 20 74 68 65 79 20 68 61 76 65 20 62 65  ter they have be
50f0: 65 6e 0a 20 20 64 65 73 74 72 6f 79 65 64 2e 0a  en.  destroyed..
5100: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5110: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
5120: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b  _ATOMIC_WRITE} {
5130: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
5140: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
5150: 69 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69  is defined and i
5160: 66 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43  f the.  xDeviceC
5170: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d  haracteristics m
5180: 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65  ethod of [sqlite
5190: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
51a0: 6a 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74  ject for.  a dat
51b0: 61 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72  abase file repor
51c0: 74 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74  ts (via one of t
51d0: 68 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  he [SQLITE_IOCAP
51e0: 5f 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20  _ATOMIC] bits). 
51f0: 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79   that the filesy
5200: 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74  stem supports at
5210: 6f 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20  omic writes and 
5220: 69 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  if a transaction
5230: 0a 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68  .  involves a ch
5240: 61 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73  ange to only a s
5250: 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68  ingle page of th
5260: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c  e database file,
5270: 0a 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e  .  then the tran
5280: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20  saction commits 
5290: 77 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67  with just a sing
52a0: 6c 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74  le write request
52b0: 20 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70   of.  a single p
52c0: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
52d0: 61 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62  ase and no rollb
52e0: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63  ack journal is c
52f0: 72 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74  reated.  or writ
5300: 74 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73  ten.  On filesys
5310: 74 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72  tems that suppor
5320: 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  t atomic writes,
5330: 20 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61   this.  optimiza
5340: 74 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20  tion can result 
5350: 69 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73  in significant s
5360: 70 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74  peed improvement
5370: 73 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70  s for.  small up
5380: 64 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c  dates.  However,
5390: 20 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73   few filesystems
53a0: 20 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61   support this ca
53b0: 70 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74  pability.  and t
53c0: 68 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68  he code paths th
53d0: 61 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69  at check for thi
53e0: 73 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f  s capability slo
53f0: 77 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70  w down write.  p
5400: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79  erformance on sy
5410: 73 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20  stems that lack 
5420: 61 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70  atomic write cap
5430: 61 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73  ability, so this
5440: 0a 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69  .  feature is di
5450: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
5460: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
5470: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
5480: 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44  BLE_COLUMN_METAD
5490: 41 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ATA} {.  When th
54a0: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
54b0: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
54c0: 65 64 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75  ed, SQLite inclu
54d0: 64 65 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74  des some.  addit
54e0: 69 6f 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20  ional APIs that 
54f0: 70 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65  provide convenie
5500: 6e 74 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74  nt access to met
5510: 61 2d 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74  a-data about.  t
5520: 61 62 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65  ables and querie
5530: 73 2e 20 20 54 68 65 20 41 50 49 73 20 74 68 61  s.  The APIs tha
5540: 74 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79  t are enabled by
5550: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65   this option are
5560: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
5570: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
5580: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29  _database_name()
5590: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
55a0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
55b0: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29  atabase_name16()
55c0: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
55d0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
55e0: 61 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  able_name()] </l
55f0: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
5600: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
5610: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
5620: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
5630: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
5640: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
5650: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
5660: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
5670: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
5680: 20 5b 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f   [sqlite3_table_
5690: 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28  column_metadata(
56a0: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e  )] </li>.  </ul>
56b0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
56c0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
56d0: 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e  E_EXPLAIN_COMMEN
56e0: 54 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  TS} {.  This opt
56f0: 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61 20 6c  ion adds extra l
5700: 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65 20 74  ogic to SQLite t
5710: 68 61 74 20 69 6e 73 65 72 74 73 20 63 6f 6d 6d  hat inserts comm
5720: 65 6e 74 20 74 65 78 74 20 69 6e 74 6f 20 74 68  ent text into th
5730: 65 0a 20 20 6f 75 74 70 75 74 20 6f 66 20 5b 45  e.  output of [E
5740: 58 50 4c 41 49 4e 5d 2e 20 20 54 68 65 73 65 20  XPLAIN].  These 
5750: 65 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 75  extra comments u
5760: 73 65 20 65 78 74 72 61 20 6d 65 6d 6f 72 79 2c  se extra memory,
5770: 20 74 68 75 73 0a 20 20 6d 61 6b 69 6e 67 20 5b   thus.  making [
5780: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
5790: 6e 74 73 5d 20 6c 61 72 67 65 72 20 61 6e 64 20  nts] larger and 
57a0: 76 65 72 79 20 73 6c 69 67 68 74 6c 79 20 73 6c  very slightly sl
57b0: 6f 77 65 72 2c 20 61 6e 64 20 73 6f 20 74 68 65  ower, and so the
57c0: 79 20 61 72 65 0a 20 20 74 75 72 6e 65 64 20 6f  y are.  turned o
57d0: 66 66 20 62 79 20 64 65 66 61 75 6c 74 20 61 6e  ff by default an
57e0: 64 20 69 6e 20 6d 6f 73 74 20 61 70 70 6c 69 63  d in most applic
57f0: 61 74 69 6f 6e 2e 20 20 42 75 74 20 73 6f 6d 65  ation.  But some
5800: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73   applications, s
5810: 75 63 68 0a 20 20 61 73 20 74 68 65 20 5b 63 6f  uch.  as the [co
5820: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c  mmand-line shell
5830: 5d 20 66 6f 72 20 53 51 4c 69 74 65 2c 20 76 61  ] for SQLite, va
5840: 6c 75 65 20 63 6c 61 72 69 74 79 20 6f 66 20 45  lue clarity of E
5850: 58 50 4c 41 49 4e 20 6f 75 74 70 75 74 0a 20 20  XPLAIN output.  
5860: 6f 76 65 72 20 72 61 77 20 70 65 72 66 6f 72 6d  over raw perform
5870: 61 6e 63 65 20 61 6e 64 20 73 6f 20 74 68 69 73  ance and so this
5880: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
5890: 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c  tion is availabl
58a0: 65 20 74 6f 20 74 68 65 6d 2e 0a 20 20 54 68 65  e to them..  The
58b0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45   SQLITE_ENABLE_E
58c0: 58 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 20  XPLAIN_COMMENTS 
58d0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
58e0: 69 6f 6e 20 69 73 20 61 6c 73 6f 20 65 6e 61 62  ion is also enab
58f0: 6c 65 64 0a 20 20 61 75 74 6f 6d 61 74 69 63 61  led.  automatica
5900: 6c 6c 79 20 69 66 20 5b 53 51 4c 49 54 45 5f 44  lly if [SQLITE_D
5910: 45 42 55 47 5d 20 69 73 20 65 6e 61 62 6c 65 64  EBUG] is enabled
5920: 2e 0a 7d 0a 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ..}...COMPILE_OP
5930: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
5940: 42 4c 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68  BLE_FTS3} {.  Wh
5950: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
5960: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
5970: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c   [amalgamation],
5980: 20 76 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20   version 3.  of 
5990: 74 68 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  the full-text se
59a0: 61 72 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61  arch engine is a
59b0: 64 64 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c  dded to the buil
59c0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
59d0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
59e0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
59f0: 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53  E_FTS3_PARENTHES
5a00: 49 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  IS} {.  This opt
5a10: 69 6f 6e 20 6d 6f 64 69 66 69 65 73 20 74 68 65  ion modifies the
5a20: 20 71 75 65 72 79 20 70 61 74 74 65 72 6e 20 70   query pattern p
5a30: 61 72 73 65 72 20 69 6e 20 46 54 53 33 20 73 75  arser in FTS3 su
5a40: 63 68 20 74 68 61 74 20 69 74 0a 20 20 73 75 70  ch that it.  sup
5a50: 70 6f 72 74 73 20 6f 70 65 72 61 74 6f 72 73 20  ports operators 
5a60: 41 4e 44 20 61 6e 64 20 4e 4f 54 20 28 69 6e 20  AND and NOT (in 
5a70: 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20  addition to the 
5a80: 75 73 75 61 6c 20 4f 52 20 61 6e 64 20 4e 45 41  usual OR and NEA
5a90: 52 29 0a 20 20 61 6e 64 20 61 6c 73 6f 20 61 6c  R).  and also al
5aa0: 6c 6f 77 73 20 71 75 65 72 79 20 65 78 70 72 65  lows query expre
5ab0: 73 73 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 61 69  ssions to contai
5ac0: 6e 20 6e 65 73 74 65 64 20 70 61 72 65 6e 74 68  n nested parenth
5ad0: 65 73 69 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  esis..}..COMPILE
5ae0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
5af0: 45 4e 41 42 4c 45 5f 46 54 53 34 7d 20 7b 0a 20  ENABLE_FTS4} {. 
5b00: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
5b10: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20  n is defined in 
5b20: 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f  the [amalgamatio
5b30: 6e 5d 2c 20 76 65 72 73 69 6f 6e 73 20 33 20 61  n], versions 3 a
5b40: 6e 64 20 34 0a 20 20 6f 66 20 74 68 65 20 66 75  nd 4.  of the fu
5b50: 6c 6c 2d 74 65 78 74 20 73 65 61 72 63 68 20 65  ll-text search e
5b60: 6e 67 69 6e 65 20 69 73 20 61 64 64 65 64 20 74  ngine is added t
5b70: 6f 20 74 68 65 20 62 75 69 6c 64 20 61 75 74 6f  o the build auto
5b80: 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d 0a 0a 43 4f  matically..}..CO
5b90: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5ba0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 7d  LITE_ENABLE_ICU}
5bb0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5bc0: 20 63 61 75 73 65 73 20 74 68 65 20 0a 20 20 5b   causes the .  [
5bd0: 68 74 74 70 3a 2f 2f 77 77 77 2e 69 63 75 2d 70  http://www.icu-p
5be0: 72 6f 6a 65 63 74 2e 6f 72 67 2f 20 7c 20 49 6e  roject.org/ | In
5bf0: 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6d 70  ternational Comp
5c00: 6f 6e 65 6e 74 73 20 66 6f 72 20 55 6e 69 63 6f  onents for Unico
5c10: 64 65 5d 0a 20 20 6f 72 20 22 49 43 55 22 20 65  de].  or "ICU" e
5c20: 78 74 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69  xtension to SQLi
5c30: 74 65 20 74 6f 20 62 65 20 61 64 64 65 64 20 74  te to be added t
5c40: 6f 20 74 68 65 20 62 75 69 6c 64 2e 20 20 0a 7d  o the build.  .}
5c50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5c60: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
5c70: 49 4f 54 52 41 43 45 7d 20 7b 0a 20 20 57 68 65  IOTRACE} {.  Whe
5c80: 6e 20 62 6f 74 68 20 74 68 65 20 53 51 4c 69 74  n both the SQLit
5c90: 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20 5b  e core and the [
5ca0: 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65 20 49 6e 74  Command Line Int
5cb0: 65 72 66 61 63 65 5d 20 28 43 4c 49 29 20 61 72  erface] (CLI) ar
5cc0: 65 20 62 6f 74 68 20 0a 20 20 63 6f 6d 70 69 6c  e both .  compil
5cd0: 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 70 74  ed with this opt
5ce0: 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 43 4c  ion, then the CL
5cf0: 49 20 70 72 6f 76 69 64 65 73 20 61 6e 20 65 78  I provides an ex
5d00: 74 72 61 20 63 6f 6d 6d 61 6e 64 0a 20 20 6e 61  tra command.  na
5d10: 6d 65 64 20 22 2e 69 6f 74 72 61 63 65 22 20 74  med ".iotrace" t
5d20: 68 61 74 20 70 72 6f 76 69 64 65 73 20 61 20 6c  hat provides a l
5d30: 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f 66 20  ow-level log of 
5d40: 49 2f 4f 20 61 63 74 69 76 69 74 79 2e 0a 20 20  I/O activity..  
5d50: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65  This option is e
5d60: 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20  xperimental and 
5d70: 6d 61 79 20 62 65 20 64 69 73 63 6f 6e 74 69 6e  may be discontin
5d80: 75 65 64 20 69 6e 20 61 20 66 75 74 75 72 65 20  ued in a future 
5d90: 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f 4d 50  release..}..COMP
5da0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5db0: 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e  TE_ENABLE_LOCKIN
5dc0: 47 5f 53 54 59 4c 45 7d 20 7b 0a 20 20 54 68 69  G_STYLE} {.  Thi
5dd0: 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
5de0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69   additional logi
5df0: 63 20 69 6e 20 74 68 65 20 4f 53 20 69 6e 74 65  c in the OS inte
5e00: 72 66 61 63 65 20 6c 61 79 65 72 20 66 6f 72 0a  rface layer for.
5e10: 20 20 4d 61 63 20 4f 53 20 58 2e 20 54 68 65 20    Mac OS X. The 
5e20: 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63  additional logic
5e30: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74   attempts to det
5e40: 65 72 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20  ermine the type 
5e50: 6f 66 20 74 68 65 0a 20 20 75 6e 64 65 72 6c 79  of the.  underly
5e60: 69 6e 67 20 66 69 6c 65 73 79 73 74 65 6d 20 61  ing filesystem a
5e70: 6e 64 20 63 68 6f 6f 73 65 20 61 6e 64 20 61 6c  nd choose and al
5e80: 74 65 72 6e 61 74 69 76 65 20 6c 6f 63 6b 69 6e  ternative lockin
5e90: 67 20 73 74 72 61 74 65 67 79 0a 20 20 74 68 61  g strategy.  tha
5ea0: 74 20 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c  t works correctl
5eb0: 79 20 66 6f 72 20 74 68 61 74 20 66 69 6c 65 73  y for that files
5ec0: 79 73 74 65 6d 20 74 79 70 65 2e 20 46 69 76 65  ystem type. Five
5ed0: 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67   locking strateg
5ee0: 69 65 73 20 0a 20 20 61 72 65 20 61 76 61 69 6c  ies .  are avail
5ef0: 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20  able:..  <ul>.  
5f00: 20 20 3c 6c 69 3e 20 50 4f 53 49 58 20 6c 6f 63    <li> POSIX loc
5f10: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73  king style. This
5f20: 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   is the default 
5f30: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 20 61 6e  locking style an
5f40: 64 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 73  d the.         s
5f50: 74 79 6c 65 20 75 73 65 64 20 62 79 20 6f 74 68  tyle used by oth
5f60: 65 72 20 28 6e 6f 6e 20 4d 61 63 20 4f 53 20 58  er (non Mac OS X
5f70: 29 20 55 6e 69 78 65 73 2e 20 4c 6f 63 6b 73 20  ) Unixes. Locks 
5f80: 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61 6e 64  are obtained and
5f90: 20 0a 20 20 20 20 20 20 20 20 20 72 65 6c 65 61   .         relea
5fa0: 73 65 64 20 75 73 69 6e 67 20 74 68 65 20 66 63  sed using the fc
5fb0: 6e 74 6c 28 29 20 73 79 73 74 65 6d 20 63 61 6c  ntl() system cal
5fc0: 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 41 46 50  l...    <li> AFP
5fd0: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
5fe0: 54 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79  This locking sty
5ff0: 6c 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 6e  le is used for n
6000: 65 74 77 6f 72 6b 20 66 69 6c 65 20 0a 20 20 20  etwork file .   
6010: 20 20 20 20 20 20 73 79 73 74 65 6d 73 20 74 68        systems th
6020: 61 74 20 75 73 65 20 74 68 65 20 41 46 50 20 28  at use the AFP (
6030: 41 70 70 6c 65 20 46 69 6c 69 6e 67 20 50 72 6f  Apple Filing Pro
6040: 74 6f 63 6f 6c 29 20 70 72 6f 74 6f 63 6f 6c 2e  tocol) protocol.
6050: 20 4c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20   Locks.         
6060: 61 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20  are obtained by 
6070: 63 61 6c 6c 69 6e 67 20 74 68 65 20 6c 69 62 72  calling the libr
6080: 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 5f 41 46  ary function _AF
6090: 50 46 53 53 65 74 4c 6f 63 6b 28 29 2e 0a 0a 20  PFSSetLock()... 
60a0: 20 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20 6c 6f     <li> Flock lo
60b0: 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69  cking style. Thi
60c0: 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 66 69  s is used for fi
60d0: 6c 65 2d 73 79 73 74 65 6d 73 20 74 68 61 74 20  le-systems that 
60e0: 64 6f 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20  do not.         
60f0: 73 75 70 70 6f 72 74 20 50 4f 53 49 58 20 6c 6f  support POSIX lo
6100: 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 4c 6f 63  cking style. Loc
6110: 6b 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20  ks are obtained 
6120: 61 6e 64 20 72 65 6c 65 61 73 65 64 20 75 73 69  and released usi
6130: 6e 67 0a 20 20 20 20 20 20 20 20 20 74 68 65 20  ng.         the 
6140: 66 6c 6f 63 6b 28 29 20 73 79 73 74 65 6d 20 63  flock() system c
6150: 61 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 44  all...    <li> D
6160: 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20  ot-file locking 
6170: 73 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b  style. This lock
6180: 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65  ing style is use
6190: 64 20 77 68 65 6e 20 6e 65 69 74 68 65 72 0a 20  d when neither. 
61a0: 20 20 20 20 20 20 20 20 66 6c 6f 63 6b 20 6e 6f          flock no
61b0: 72 20 50 4f 53 49 58 20 6c 6f 63 6b 69 6e 67 20  r POSIX locking 
61c0: 73 74 79 6c 65 73 20 61 72 65 20 73 75 70 70 6f  styles are suppo
61d0: 72 74 65 64 20 62 79 20 74 68 65 20 66 69 6c 65  rted by the file
61e0: 20 73 79 73 74 65 6d 2e 0a 20 20 20 20 20 20 20   system..       
61f0: 20 20 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 73    Database locks
6200: 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79   are obtained by
6210: 20 63 72 65 61 74 69 6e 67 20 61 6e 64 20 65 6e   creating and en
6220: 74 72 79 20 69 6e 20 74 68 65 20 66 69 6c 65 2d  try in the file-
6230: 73 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20  system.         
6240: 61 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20  at a well-known 
6250: 6c 6f 63 61 74 69 6f 6e 20 72 65 6c 61 74 69 76  location relativ
6260: 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  e to the databas
6270: 65 20 66 69 6c 65 20 28 61 20 22 64 6f 74 2d 66  e file (a "dot-f
6280: 69 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 61  ile").         a
6290: 6e 64 20 72 65 6c 69 6e 71 75 69 73 68 65 64 20  nd relinquished 
62a0: 62 79 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20  by deleting the 
62b0: 73 61 6d 65 20 66 69 6c 65 2e 0a 0a 20 20 20 20  same file...    
62c0: 3c 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e 67 20  <li> No locking 
62d0: 73 74 79 6c 65 2e 20 49 66 20 6e 6f 6e 65 20 6f  style. If none o
62e0: 66 20 74 68 65 20 61 62 6f 76 65 20 63 61 6e 20  f the above can 
62f0: 62 65 20 73 75 70 70 6f 72 74 65 64 2c 20 74 68  be supported, th
6300: 69 73 20 0a 20 20 20 20 20 20 20 20 20 6c 6f 63  is .         loc
6310: 6b 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73  king style is us
6320: 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 20  ed. No database 
6330: 6c 6f 63 6b 69 6e 67 20 6d 65 63 68 61 6e 69 73  locking mechanis
6340: 6d 20 69 73 20 75 73 65 64 2e 20 57 68 65 6e 0a  m is used. When.
6350: 20 20 20 20 20 20 20 20 20 74 68 69 73 20 73 79           this sy
6360: 73 74 65 6d 20 69 73 20 75 73 65 64 20 69 74 20  stem is used it 
6370: 69 73 20 6e 6f 74 20 73 61 66 65 20 66 6f 72 20  is not safe for 
6380: 61 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73  a single databas
6390: 65 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20  e to be.        
63a0: 20 61 63 63 65 73 73 65 64 20 62 79 20 6d 75 6c   accessed by mul
63b0: 74 69 70 6c 65 20 63 6c 69 65 6e 74 73 2e 0a 20  tiple clients.. 
63c0: 20 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64 69 74 69   </ul>..  Additi
63d0: 6f 6e 61 6c 6c 79 2c 20 66 69 76 65 20 65 78 74  onally, five ext
63e0: 72 61 20 5b 56 46 53 5d 20 69 6d 70 6c 65 6d 65  ra [VFS] impleme
63f0: 6e 74 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f  ntations are pro
6400: 76 69 64 65 64 20 61 73 20 77 65 6c 6c 20 61 73  vided as well as
6410: 20 74 68 65 0a 20 20 64 65 66 61 75 6c 74 2e 20   the.  default. 
6420: 42 79 20 73 70 65 63 69 66 79 69 6e 67 20 6f 6e  By specifying on
6430: 65 20 6f 66 20 74 68 65 20 65 78 74 72 61 20 56  e of the extra V
6440: 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
6450: 6e 73 20 0a 20 20 77 68 65 6e 20 63 61 6c 6c 69  ns .  when calli
6460: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ng [sqlite3_open
6470: 5f 76 32 28 29 5d 2c 20 61 6e 20 61 70 70 6c 69  _v2()], an appli
6480: 63 61 74 69 6f 6e 20 6d 61 79 20 62 79 70 61 73  cation may bypas
6490: 73 20 74 68 65 20 66 69 6c 65 2d 73 79 73 74 65  s the file-syste
64a0: 6d 0a 20 20 64 65 74 65 63 74 69 6f 6e 20 6c 6f  m.  detection lo
64b0: 67 69 63 20 61 6e 64 20 65 78 70 6c 69 63 69 74  gic and explicit
64c0: 6c 79 20 73 65 6c 65 63 74 20 6f 6e 65 20 6f 66  ly select one of
64d0: 20 74 68 65 20 61 62 6f 76 65 20 6c 6f 63 6b 69   the above locki
64e0: 6e 67 20 73 74 79 6c 65 73 2e 20 54 68 65 0a 20  ng styles. The. 
64f0: 20 66 69 76 65 20 65 78 74 72 61 20 5b 56 46 53   five extra [VFS
6500: 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  ] implementation
6510: 73 20 61 72 65 20 63 61 6c 6c 65 64 20 22 75 6e  s are called "un
6520: 69 78 2d 70 6f 73 69 78 22 2c 20 22 75 6e 69 78  ix-posix", "unix
6530: 2d 61 66 70 22 2c 0a 20 20 22 75 6e 69 78 2d 66  -afp",.  "unix-f
6540: 6c 6f 63 6b 22 2c 20 22 75 6e 69 78 2d 64 6f 74  lock", "unix-dot
6550: 66 69 6c 65 22 20 61 6e 64 20 22 75 6e 69 78 2d  file" and "unix-
6560: 6e 6f 6e 65 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  none"..}..COMPIL
6570: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6580: 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d  _ENABLE_MEMORY_M
6590: 41 4e 41 47 45 4d 45 4e 54 7d 20 7b 0a 20 20 54  ANAGEMENT} {.  T
65a0: 68 69 73 20 6f 70 74 69 6f 6e 20 61 64 64 73 20  his option adds 
65b0: 65 78 74 72 61 20 6c 6f 67 69 63 20 74 6f 20 53  extra logic to S
65c0: 51 4c 69 74 65 20 74 68 61 74 20 61 6c 6c 6f 77  QLite that allow
65d0: 73 20 69 74 20 74 6f 20 72 65 6c 65 61 73 65 20  s it to release 
65e0: 75 6e 75 73 65 64 0a 20 20 6d 65 6d 6f 72 79 20  unused.  memory 
65f0: 75 70 6f 6e 20 72 65 71 75 65 73 74 2e 20 20 54  upon request.  T
6600: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 75 73 74 20  his option must 
6610: 62 65 20 65 6e 61 62 6c 65 64 20 69 6e 20 6f 72  be enabled in or
6620: 64 65 72 20 66 6f 72 20 74 68 65 0a 20 20 5b 73  der for the.  [s
6630: 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d  qlite3_release_m
6640: 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61  emory()] interfa
6650: 63 65 20 74 6f 20 77 6f 72 6b 2e 20 20 49 66 20  ce to work.  If 
6660: 74 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  this compile-tim
6670: 65 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f  e.  option is no
6680: 74 20 75 73 65 64 2c 20 74 68 65 20 5b 73 71 6c  t used, the [sql
6690: 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
66a0: 6f 72 79 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ory()] interface
66b0: 20 69 73 20 61 20 0a 20 20 6e 6f 2d 6f 70 2e 0a   is a .  no-op..
66c0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
66d0: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
66e0: 5f 4d 45 4d 53 59 53 33 7d 20 7b 0a 20 20 54 68  _MEMSYS3} {.  Th
66f0: 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75 64  is option includ
6700: 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69 74  es code in SQLit
6710: 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  e that implement
6720: 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  s an alternative
6730: 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  .  memory alloca
6740: 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65 72  tor.  This alter
6750: 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c  native memory al
6760: 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79 20  locator is only 
6770: 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20 74  engaged.  when t
6780: 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  he [SQLITE_CONFI
6790: 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20 74  G_HEAP] option t
67a0: 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  o [sqlite3_confi
67b0: 67 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 0a  g()] is used to.
67c0: 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67 65    supply a large
67d0: 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72 79   chunk of memory
67e0: 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c 20   from which all 
67f0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
6800: 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e 0a  ns are.  taken..
6810: 20 20 54 68 65 20 4d 45 4d 53 59 53 33 20 6d 65    The MEMSYS3 me
6820: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 75  mory allocator u
6830: 73 65 73 20 61 20 68 79 62 72 69 64 20 61 6c 6c  ses a hybrid all
6840: 6f 63 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  ocation algorith
6850: 6d 20 0a 20 20 70 61 74 74 65 72 6e 65 64 20 61  m .  patterned a
6860: 66 74 65 72 20 64 6c 6d 61 6c 6c 6f 63 28 29 2e  fter dlmalloc().
6870: 20 20 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20 53     Only one of S
6880: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
6890: 53 59 53 33 20 61 6e 64 20 0a 20 20 53 51 4c 49  SYS3 and .  SQLI
68a0: 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53  TE_ENABLE_MEMSYS
68b0: 35 20 6d 61 79 20 62 65 20 65 6e 61 62 6c 65 64  5 may be enabled
68c0: 20 61 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f 4d   at once..}..COM
68d0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
68e0: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
68f0: 53 35 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  S5} {.  This opt
6900: 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 64  ion includes cod
6910: 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61 74  e in SQLite that
6920: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 61   implements an a
6930: 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65 6d  lternative.  mem
6940: 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
6950: 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76 65  This alternative
6960: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
6970: 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67 65  r is only engage
6980: 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53 51  d.  when the [SQ
6990: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
69a0: 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  ] option to [sql
69b0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
69c0: 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70 70  s used to.  supp
69d0: 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e 6b  ly a large chunk
69e0: 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20   of memory from 
69f0: 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72 79  which all memory
6a00: 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
6a10: 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65 20  .  taken..  The 
6a20: 4d 45 4d 53 59 53 35 20 6d 6f 64 75 6c 65 20 72  MEMSYS5 module r
6a30: 6f 75 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f 63 61  ounds all alloca
6a40: 74 69 6f 6e 73 20 75 70 20 74 6f 20 74 68 65 20  tions up to the 
6a50: 6e 65 78 74 20 70 6f 77 65 72 0a 20 20 6f 66 20  next power.  of 
6a60: 74 77 6f 20 61 6e 64 20 75 73 65 73 20 61 20 66  two and uses a f
6a70: 69 72 73 74 2d 66 69 74 2c 20 62 75 64 64 79 2d  irst-fit, buddy-
6a80: 61 6c 6c 6f 63 61 74 6f 72 20 61 6c 67 6f 72 69  allocator algori
6a90: 74 68 6d 0a 20 20 74 68 61 74 20 70 72 6f 76 69  thm.  that provi
6aa0: 64 65 73 20 73 74 72 6f 6e 67 20 67 75 61 72 61  des strong guara
6ab0: 6e 74 65 65 73 20 61 67 61 69 6e 73 74 20 66 72  ntees against fr
6ac0: 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20  agmentation and 
6ad0: 62 72 65 61 6b 64 6f 77 6e 0a 20 20 73 75 62 6a  breakdown.  subj
6ae0: 65 63 74 20 74 6f 20 63 65 72 74 61 69 6e 20 6f  ect to certain o
6af0: 70 65 72 61 74 69 6e 67 20 63 6f 6e 73 74 72 61  perating constra
6b00: 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ints..}..COMPILE
6b10: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6b20: 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20 7b 0a  ENABLE_RTREE} {.
6b30: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
6b40: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 69  uses SQLite to i
6b50: 6e 63 6c 75 64 65 20 73 75 70 70 6f 72 74 20 66  nclude support f
6b60: 6f 72 20 74 68 65 0a 20 20 5b 72 74 72 65 65 20  or the.  [rtree 
6b70: 7c 20 52 2a 54 72 65 65 20 69 6e 64 65 78 20 65  | R*Tree index e
6b80: 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43 4f  xtension]..}..CO
6b90: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
6ba0: 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f  LITE_RTREE_INT_O
6bb0: 4e 4c 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  NLY} {.  If this
6bc0: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
6bd0: 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 5b 53  together with [S
6be0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52  QLITE_ENABLE_RTR
6bf0: 45 45 5d 20 74 68 65 6e 20 74 68 65 0a 20 20 5b  EE] then the.  [
6c00: 72 74 72 65 65 20 7c 20 52 2a 54 72 65 65 20 65  rtree | R*Tree e
6c10: 78 74 65 6e 73 69 6f 6e 5d 20 77 69 6c 6c 20 6f  xtension] will o
6c20: 6e 6c 79 20 73 74 6f 72 65 20 33 32 2d 62 69 74  nly store 32-bit
6c30: 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a   signed integer.
6c40: 20 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 6e    coordinates an
6c50: 64 20 61 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63  d all internal c
6c60: 6f 6d 70 75 74 61 74 69 6f 6e 73 20 77 69 6c 6c  omputations will
6c70: 20 62 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 69   be done using i
6c80: 6e 74 65 67 65 72 73 0a 20 20 69 6e 73 74 65 61  ntegers.  instea
6c90: 64 20 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 6f  d of floating po
6ca0: 69 6e 74 20 6e 75 6d 62 65 72 73 2e 0a 7d 0a 0a  int numbers..}..
6cb0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
6cc0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51  SQLITE_ENABLE_SQ
6cd0: 4c 4c 4f 47 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LLOG} {.  This o
6ce0: 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 65 78  ption enables ex
6cf0: 74 72 61 20 63 6f 64 65 20 28 65 73 70 65 63 69  tra code (especi
6d00: 61 6c 6c 79 20 74 68 65 20 5b 53 51 4c 49 54 45  ally the [SQLITE
6d10: 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 0a  _CONFIG_SQLLOG].
6d20: 20 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c    option to [sql
6d30: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 29 20  ite3_config()]) 
6d40: 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64  that can be used
6d50: 20 74 6f 20 63 72 65 61 74 65 20 6c 6f 67 73 20   to create logs 
6d60: 6f 66 20 61 6c 6c 0a 20 20 53 51 4c 69 74 65 20  of all.  SQLite 
6d70: 70 72 6f 63 65 73 73 69 6e 67 20 70 65 72 66 6f  processing perfo
6d80: 72 6d 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69  rmed by an appli
6d90: 63 61 74 69 6f 6e 2e 20 20 54 68 65 73 65 20 6c  cation.  These l
6da0: 6f 67 73 20 63 61 6e 20 62 65 20 75 73 65 66 75  ogs can be usefu
6db0: 6c 0a 20 20 69 6e 20 64 6f 69 6e 67 20 6f 66 66  l.  in doing off
6dc0: 2d 6c 69 6e 65 20 61 6e 61 6c 79 73 69 73 20 6f  -line analysis o
6dd0: 66 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f  f the behavior o
6de0: 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
6df0: 2c 20 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79  , and especially
6e00: 0a 20 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e  .  for performan
6e10: 63 65 20 61 6e 61 6c 79 73 69 73 2e 20 20 49 6e  ce analysis.  In
6e20: 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 53   order for the S
6e30: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
6e40: 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 6f 20 0a 20  LOG option to . 
6e50: 20 62 65 20 75 73 65 66 75 6c 2c 20 73 6f 6d 65   be useful, some
6e60: 20 65 78 74 72 61 20 63 6f 64 65 20 69 73 20 72   extra code is r
6e70: 65 71 75 69 72 65 64 2e 20 20 54 68 65 20 0a 20  equired.  The . 
6e80: 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f   <a href="http:/
6e90: 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f  /www.sqlite.org/
6ea0: 73 72 63 2f 64 6f 63 2f 74 72 75 6e 6b 2f 73 72  src/doc/trunk/sr
6eb0: 63 2f 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  c/test_sqllog.c"
6ec0: 3e 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22  >"test_sqllog.c"
6ed0: 3c 2f 61 3e 0a 20 20 73 6f 75 72 63 65 20 63 6f  </a>.  source co
6ee0: 64 65 0a 20 20 66 69 6c 65 20 69 6e 20 74 68 65  de.  file in the
6ef0: 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74   SQLite source t
6f00: 72 65 65 20 69 73 20 61 20 77 6f 72 6b 69 6e 67  ree is a working
6f10: 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20   example of the 
6f20: 72 65 71 75 69 72 65 64 20 65 78 74 72 61 0a 20  required extra. 
6f30: 20 63 6f 64 65 2e 20 20 4f 6e 20 75 6e 69 78 20   code.  On unix 
6f40: 61 6e 64 20 77 69 6e 64 6f 77 73 20 73 79 73 74  and windows syst
6f50: 65 6d 73 2c 20 61 20 64 65 76 65 6c 6f 70 65 72  ems, a developer
6f60: 20 63 61 6e 20 61 70 70 65 6e 64 20 74 68 65 20   can append the 
6f70: 74 65 78 74 20 6f 66 20 74 68 65 0a 20 20 22 74  text of the.  "t
6f80: 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
6f90: 75 72 63 65 20 63 6f 64 65 20 66 69 6c 65 20 74  urce code file t
6fa0: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 61 6e 20  o the end of an 
6fb0: 22 73 71 6c 69 74 65 33 2e 63 22 20 61 6d 61 6c  "sqlite3.c" amal
6fc0: 67 61 6d 61 74 69 6f 6e 2c 0a 20 20 72 65 63 6f  gamation,.  reco
6fd0: 6d 70 69 6c 65 20 74 68 65 20 61 70 70 6c 69 63  mpile the applic
6fe0: 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ation using the 
6ff0: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
7000: 53 51 4c 4c 4f 47 20 6f 70 74 69 6f 6e 2c 20 74  SQLLOG option, t
7010: 68 65 6e 20 0a 20 20 63 6f 6e 74 72 6f 6c 20 6c  hen .  control l
7020: 6f 67 67 69 6e 67 20 75 73 69 6e 67 20 65 6e 76  ogging using env
7030: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
7040: 65 73 2e 20 20 53 65 65 20 74 68 65 20 68 65 61  es.  See the hea
7050: 64 65 72 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20 0a  der comment on .
7060: 20 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c    the "test_sqll
7070: 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c  og.c" source fil
7080: 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  e for additional
7090: 20 64 65 74 61 69 6c 2e 20 20 0a 7d 0a 0a 43 4f   detail.  .}..CO
70a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
70b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
70c0: 32 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  2} {.  This opti
70d0: 6f 6e 20 75 73 65 64 20 74 6f 20 63 61 75 73 65  on used to cause
70e0: 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20 63   the [ANALYZE] c
70f0: 6f 6d 6d 61 6e 64 20 74 6f 20 63 6f 6c 6c 65 63  ommand to collec
7100: 74 0a 20 20 69 6e 64 65 78 20 68 69 73 74 6f 67  t.  index histog
7110: 72 61 6d 20 64 61 74 61 20 69 6e 20 74 68 65 20  ram data in the 
7120: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c  <b>sqlite_stat2<
7130: 2f 62 3e 20 74 61 62 6c 65 2e 20 20 42 75 74 20  /b> table.  But 
7140: 74 68 61 74 0a 20 20 66 75 6e 63 74 69 6f 6e 61  that.  functiona
7150: 6c 69 74 79 20 77 61 73 20 73 75 70 65 72 63 65  lity was superce
7160: 64 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 45  ded by [SQLITE_E
7170: 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 61 73 20  NABLE_STAT3] as 
7180: 6f 66 0a 20 20 53 51 4c 69 74 65 20 76 65 72 73  of.  SQLite vers
7190: 69 6f 6e 20 33 2e 37 2e 39 2e 20 20 54 68 65 20  ion 3.7.9.  The 
71a0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
71b0: 41 54 32 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  AT2 compile-time
71c0: 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 6e 6f 77   option.  is now
71d0: 20 61 20 6e 6f 2d 6f 70 2e 0a 7d 0a 0a 43 4f 4d   a no-op..}..COM
71e0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
71f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
7200: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
7210: 6e 20 61 64 64 73 20 61 64 64 69 74 69 6f 6e 61  n adds additiona
7220: 6c 20 6c 6f 67 69 63 20 74 6f 20 74 68 65 20 5b  l logic to the [
7230: 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64  ANALYZE] command
7240: 20 61 6e 64 20 74 6f 0a 20 20 74 68 65 20 5b 71   and to.  the [q
7250: 75 65 72 79 20 70 6c 61 6e 6e 65 72 5d 20 74 68  uery planner] th
7260: 61 74 20 63 61 6e 20 68 65 6c 70 20 53 51 4c 69  at can help SQLi
7270: 74 65 20 74 6f 20 63 68 6f 73 65 20 61 20 62 65  te to chose a be
7280: 74 74 65 72 20 71 75 65 72 79 20 70 6c 61 6e 0a  tter query plan.
7290: 20 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20    under certain 
72a0: 73 69 74 75 61 74 69 6f 6e 73 2e 20 20 54 68 65  situations.  The
72b0: 20 5b 41 4e 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61   [ANALYZE] comma
72c0: 6e 64 20 69 73 20 65 6e 68 61 6e 63 65 64 20 74  nd is enhanced t
72d0: 6f 20 63 6f 6c 6c 65 63 74 0a 20 20 68 69 73 74  o collect.  hist
72e0: 6f 67 72 61 6d 20 64 61 74 61 20 66 72 6f 6d 20  ogram data from 
72f0: 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f  the left-most co
7300: 6c 75 6d 6e 20 6f 66 20 65 61 63 68 20 69 6e 64  lumn of each ind
7310: 65 78 20 61 6e 64 20 73 74 6f 72 65 20 74 68 61  ex and store tha
7320: 74 20 64 61 74 61 0a 20 20 69 6e 20 74 68 65 20  t data.  in the 
7330: 5b 73 71 6c 69 74 65 5f 73 74 61 74 33 5d 20 74  [sqlite_stat3] t
7340: 61 62 6c 65 2e 20 20 54 68 65 20 71 75 65 72 79  able.  The query
7350: 20 70 6c 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68   planner will th
7360: 65 6e 20 75 73 65 20 74 68 65 0a 20 20 68 69 73  en use the.  his
7370: 74 6f 67 72 61 6d 20 64 61 74 61 20 74 6f 20 68  togram data to h
7380: 65 6c 70 20 69 74 20 6d 61 6b 65 20 62 65 74 74  elp it make bett
7390: 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73  er index choices
73a0: 2e 20 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72  .  Note, however
73b0: 2c 0a 20 20 74 68 61 74 20 74 68 65 20 75 73 65  ,.  that the use
73c0: 20 6f 66 20 68 69 73 74 6f 67 72 61 6d 20 64 61   of histogram da
73d0: 74 61 20 69 6e 20 71 75 65 72 79 20 70 6c 61 6e  ta in query plan
73e0: 6e 65 72 20 76 69 6f 6c 61 74 65 73 20 74 68 65  ner violates the
73f0: 0a 20 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65  .  [query planne
7400: 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61 72  r stability guar
7410: 61 6e 74 65 65 5d 20 77 68 69 63 68 20 69 73 20  antee] which is 
7420: 69 6d 70 6f 72 74 61 6e 74 20 74 6f 20 73 6f 6d  important to som
7430: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a  e applications..
7440: 20 20 3c 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45    <p>.}..COMPILE
7450: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
7460: 45 4e 41 42 4c 45 5f 53 54 41 54 34 7d 20 7b 0a  ENABLE_STAT4} {.
7470: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61 64    This option ad
7480: 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c 6f  ds additional lo
7490: 67 69 63 20 74 6f 20 74 68 65 20 5b 41 4e 41 4c  gic to the [ANAL
74a0: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64  YZE] command and
74b0: 20 74 6f 0a 20 20 74 68 65 20 5b 71 75 65 72 79   to.  the [query
74c0: 20 70 6c 61 6e 6e 65 72 5d 20 74 68 61 74 20 63   planner] that c
74d0: 61 6e 20 68 65 6c 70 20 53 51 4c 69 74 65 20 74  an help SQLite t
74e0: 6f 20 63 68 6f 73 65 20 61 20 62 65 74 74 65 72  o chose a better
74f0: 20 71 75 65 72 79 20 70 6c 61 6e 0a 20 20 75 6e   query plan.  un
7500: 64 65 72 20 63 65 72 74 61 69 6e 20 73 69 74 75  der certain situ
7510: 61 74 69 6f 6e 73 2e 20 20 54 68 65 20 5b 41 4e  ations.  The [AN
7520: 41 4c 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  ALYZE] command i
7530: 73 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 63 6f  s enhanced to co
7540: 6c 6c 65 63 74 0a 20 20 68 69 73 74 6f 67 72 61  llect.  histogra
7550: 6d 20 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20  m data from all 
7560: 63 6f 6c 75 6d 6e 73 20 6f 66 20 65 76 65 72 79  columns of every
7570: 20 69 6e 64 65 78 20 61 6e 64 20 73 74 6f 72 65   index and store
7580: 20 74 68 61 74 20 64 61 74 61 0a 20 20 69 6e 20   that data.  in 
7590: 74 68 65 20 5b 73 71 6c 69 74 65 5f 73 74 61 74  the [sqlite_stat
75a0: 34 5d 20 74 61 62 6c 65 2e 20 20 54 68 65 20 71  4] table.  The q
75b0: 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 77 69 6c  uery planner wil
75c0: 6c 20 74 68 65 6e 20 75 73 65 20 74 68 65 0a 20  l then use the. 
75d0: 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61 20   histogram data 
75e0: 74 6f 20 68 65 6c 70 20 69 74 20 6d 61 6b 65 20  to help it make 
75f0: 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f  better index cho
7600: 69 63 65 73 2e 20 20 54 68 65 20 64 6f 77 6e 73  ices.  The downs
7610: 69 64 65 20 6f 66 0a 20 20 74 68 69 73 20 63 6f  ide of.  this co
7620: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
7630: 6e 20 69 73 20 74 68 61 74 20 69 74 20 76 69 6f  n is that it vio
7640: 6c 61 74 65 73 20 74 68 65 0a 20 20 5b 71 75 65  lates the.  [que
7650: 72 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69  ry planner stabi
7660: 6c 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20  lity guarantee] 
7670: 6d 61 6b 69 6e 67 20 69 74 20 6d 6f 72 65 20 64  making it more d
7680: 69 66 66 69 63 75 6c 74 20 74 6f 20 65 6e 73 75  ifficult to ensu
7690: 72 65 0a 20 20 63 6f 6e 73 69 73 74 65 6e 74 20  re.  consistent 
76a0: 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e 20 6d  performance in m
76b0: 61 73 73 2d 70 72 6f 64 75 63 65 64 20 61 70 70  ass-produced app
76c0: 6c 69 63 61 74 69 6f 6e 73 2e 0a 20 20 3c 70 3e  lications..  <p>
76d0: 0a 20 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  .  SQLITE_ENABLE
76e0: 5f 53 54 41 54 34 20 69 73 20 61 6e 20 65 6e 68  _STAT4 is an enh
76f0: 61 6e 63 65 6d 65 6e 74 20 6f 66 20 5b 53 51 4c  ancement of [SQL
7700: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
7710: 5d 2e 20 20 53 54 41 54 33 0a 20 20 6f 6e 6c 79  ].  STAT3.  only
7720: 20 72 65 63 6f 72 64 65 64 20 68 69 73 74 6f 67   recorded histog
7730: 72 61 6d 20 64 61 74 61 20 66 6f 72 20 74 68 65  ram data for the
7740: 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d   left-most colum
7750: 6e 20 6f 66 20 65 61 63 68 20 69 6e 64 65 78 0a  n of each index.
7760: 20 20 77 68 65 72 65 61 73 20 74 68 65 20 53 54    whereas the ST
7770: 41 54 34 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20  AT4 enhancement 
7780: 72 65 63 6f 72 64 73 20 68 69 73 74 6f 67 72 61  records histogra
7790: 6d 20 64 61 74 61 20 66 72 6f 6d 20 61 6c 6c 20  m data from all 
77a0: 63 6f 6c 75 6d 6e 73 0a 20 20 6f 66 20 65 61 63  columns.  of eac
77b0: 68 20 69 6e 64 65 78 2e 0a 20 20 54 68 65 20 5b  h index..  The [
77c0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
77d0: 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  AT3] compile-tim
77e0: 65 20 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e 6f  e option is a no
77f0: 2d 6f 70 20 61 6e 64 20 69 73 20 69 67 6e 6f 72  -op and is ignor
7800: 65 64 0a 20 20 69 66 20 74 68 65 20 53 51 4c 49  ed.  if the SQLI
7810: 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34 20  TE_ENABLE_STAT4 
7820: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
7830: 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a  ion is used..}..
7840: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7850: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 54 52  SQLITE_ENABLE_TR
7860: 45 45 5f 45 58 50 4c 41 49 4e 7d 20 7b 0a 20 20  EE_EXPLAIN} {.  
7870: 54 68 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  This compile-tim
7880: 65 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c  e option is no l
7890: 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 0a 43  onger used..}..C
78a0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
78b0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44  QLITE_ENABLE_UPD
78c0: 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54  ATE_DELETE_LIMIT
78d0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
78e0: 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74  n enables an opt
78f0: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
7900: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  nd LIMIT clause 
7910: 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61  on .  [UPDATE] a
7920: 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  nd [DELETE] stat
7930: 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66  ements...  <p>If
7940: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
7950: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74  defined, then it
7960: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20   must also be . 
7970: 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73   defined when us
7980: 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20  ing the 'lemon' 
7990: 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65  tool to generate
79a0: 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c   a parse.c.  fil
79b0: 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68  e. Because of th
79c0: 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  is, this option 
79d0: 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  may only be used
79e0: 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72   when the librar
79f0: 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f  y is built.  fro
7a00: 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72  m source, not fr
7a10: 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  om the [amalgama
7a20: 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68  tion] or from th
7a30: 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a  e collection of.
7a40: 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43    pre-packaged C
7a50: 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20   files provided 
7a60: 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20 6c 69 6b  for non-Unix lik
7a70: 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74  e platforms on t
7a80: 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f  he website..  </
7a90: 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p>.}..COMPILE_OP
7aa0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
7ab0: 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46  BLE_UNLOCK_NOTIF
7ac0: 59 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  Y} {.  This opti
7ad0: 6f 6e 20 65 6e 61 62 6c 65 73 20 74 68 65 20 5b  on enables the [
7ae0: 73 71 6c 69 74 65 33 5f 75 6e 6c 6f 63 6b 5f 6e  sqlite3_unlock_n
7af0: 6f 74 69 66 79 28 29 5d 20 69 6e 74 65 72 66 61  otify()] interfa
7b00: 63 65 20 61 6e 64 0a 20 20 69 74 73 20 61 73 73  ce and.  its ass
7b10: 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e  ociated function
7b20: 61 6c 69 74 79 2e 20 20 53 65 65 20 74 68 65 20  ality.  See the 
7b30: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 74 69  documentation ti
7b40: 74 6c 65 64 0a 20 20 5b 55 73 69 6e 67 20 74 68  tled.  [Using th
7b50: 65 20 53 51 4c 69 74 65 20 55 6e 6c 6f 63 6b 20  e SQLite Unlock 
7b60: 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 46 65 61  Notification Fea
7b70: 74 75 72 65 5d 20 66 6f 72 20 61 64 64 69 74 69  ture] for additi
7b80: 6f 6e 61 6c 0a 20 20 69 6e 66 6f 72 6d 61 74 69  onal.  informati
7b90: 6f 6e 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  on..}..COMPILE_O
7ba0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 53 4f  PTION {SQLITE_SO
7bb0: 55 4e 44 45 58 7d 20 7b 0a 20 20 54 68 69 73 20  UNDEX} {.  This 
7bc0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 74  option enables t
7bd0: 68 65 20 5b 73 6f 75 6e 64 65 78 28 29 20 53 51  he [soundex() SQ
7be0: 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 7d 0a 0a  L function]..}..
7bf0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7c00: 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54 4c  SQLITE_USE_FCNTL
7c10: 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73  _TRACE} {.  This
7c20: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53   option causes S
7c30: 51 4c 69 74 65 20 74 6f 20 69 73 73 75 65 20 65  QLite to issue e
7c40: 78 74 72 61 20 5b 53 51 4c 49 54 45 5f 46 43 4e  xtra [SQLITE_FCN
7c50: 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65 20 63  TL_TRACE] file c
7c60: 6f 6e 74 72 6f 6c 73 0a 20 20 74 6f 20 70 72 6f  ontrols.  to pro
7c70: 76 69 64 65 20 73 75 70 70 6c 65 6d 65 6e 74 61  vide supplementa
7c80: 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  ry information t
7c90: 6f 20 74 68 65 20 56 46 53 2e 20 20 54 68 65 20  o the VFS.  The 
7ca0: 22 76 66 73 6c 6f 67 2e 63 22 20 65 78 74 65 6e  "vfslog.c" exten
7cb0: 73 69 6f 6e 0a 20 20 6d 61 6b 65 73 20 75 73 65  sion.  makes use
7cc0: 20 6f 66 20 74 68 69 73 20 74 6f 20 70 72 6f 76   of this to prov
7cd0: 69 64 65 20 65 6e 68 61 6e 63 65 64 20 6c 6f 67  ide enhanced log
7ce0: 73 20 6f 66 20 56 46 53 20 61 63 74 69 76 69 74  s of VFS activit
7cf0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
7d00: 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58  TION {YYTRACKMAX
7d10: 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20  STACKDEPTH} {.  
7d20: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
7d30: 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70  es the LALR(1) p
7d40: 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70 74  arser stack dept
7d50: 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a  h to be tracked.
7d60: 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75    and reported u
7d70: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
7d80: 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54  3_status]([SQLIT
7d90: 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f  E_STATUS_PARSER_
7da0: 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e  STACK],...).  in
7db0: 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65  terface.  SQLite
7dc0: 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  's LALR(1) parse
7dd0: 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73 74  r has a fixed st
7de0: 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74  ack depth.  (det
7df0: 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69  ermined at compi
7e00: 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  le-time using th
7e10: 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d  e [YYSTACKDEPTH]
7e20: 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69   options)..  Thi
7e30: 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  s option can be 
7e40: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74  used to help det
7e50: 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70  ermine if an app
7e60: 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65  lication is.  ge
7e70: 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65  tting close to e
7e80: 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78  xceeding the max
7e90: 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61  imum LALR(1) sta
7ea0: 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63  ck depth..}.</tc
7eb0: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 64 69 73  l>..<a name="dis
7ec0: 61 62 6c 65 66 65 61 74 75 72 65 73 22 3e 3c 2f  ablefeatures"></
7ed0: 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74 69 6f  a>.<h2>1.5 Optio
7ee0: 6e 73 20 54 6f 20 44 69 73 61 62 6c 65 20 46 65  ns To Disable Fe
7ef0: 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c 79 20  atures Normally 
7f00: 54 75 72 6e 65 64 20 4f 6e 3c 2f 68 32 3e 0a 0a  Turned On</h2>..
7f10: 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50  <tcl>.COMPILE_OP
7f20: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 49 53  TION {SQLITE_DIS
7f30: 41 42 4c 45 5f 4c 46 53 7d 20 7b 0a 20 20 49 66  ABLE_LFS} {.  If
7f40: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
7f50: 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20 64 65  ssor macro is de
7f60: 66 69 6e 65 64 2c 20 6c 61 72 67 65 20 66 69 6c  fined, large fil
7f70: 65 20 73 75 70 70 6f 72 74 0a 20 20 69 73 20 64  e support.  is d
7f80: 69 73 61 62 6c 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  isabled..}..COMP
7f90: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
7fa0: 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59  TE_DISABLE_DIRSY
7fb0: 4e 43 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  NC} {.  If this 
7fc0: 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C-preprocessor m
7fd0: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
7fe0: 20 64 69 72 65 63 74 6f 72 79 20 73 79 6e 63 73   directory syncs
7ff0: 0a 20 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e  .  are disabled.
8000: 20 20 53 51 4c 69 74 65 20 74 79 70 69 63 61 6c    SQLite typical
8010: 6c 79 20 61 74 74 65 6d 70 74 73 20 74 6f 20 73  ly attempts to s
8020: 79 6e 63 20 74 68 65 20 70 61 72 65 6e 74 0a 20  ync the parent. 
8030: 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20   directory when 
8040: 61 20 66 69 6c 65 20 69 73 20 64 65 6c 65 74 65  a file is delete
8050: 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20  d to ensure the 
8060: 64 69 72 65 63 74 6f 72 79 0a 20 20 65 6e 74 72  directory.  entr
8070: 69 65 73 20 61 72 65 20 75 70 64 61 74 65 64 20  ies are updated 
8080: 69 6d 6d 65 64 69 61 74 65 6c 79 20 6f 6e 20 64  immediately on d
8090: 69 73 6b 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  isk..}..COMPILE_
80a0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
80b0: 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43  ISABLE_FTS3_UNIC
80c0: 4f 44 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  ODE} {.  If this
80d0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
80e0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
80f0: 2c 20 74 68 65 20 5b 75 6e 69 63 6f 64 65 36 31  , the [unicode61
8100: 5d 20 74 6f 6b 65 6e 69 7a 65 72 0a 20 20 69 6e  ] tokenizer.  in
8110: 20 5b 46 54 53 33 5d 20 69 73 20 6f 6d 69 74 74   [FTS3] is omitt
8120: 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
8130: 64 20 61 6e 64 20 69 73 20 75 6e 61 76 61 69 6c  d and is unavail
8140: 61 62 6c 65 20 74 6f 20 0a 20 20 61 70 70 6c 69  able to .  appli
8150: 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50  cations..}..COMP
8160: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
8170: 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f  TE_DISABLE_FTS4_
8180: 44 45 46 45 52 52 45 44 7d 20 7b 0a 20 20 49 66  DEFERRED} {.  If
8190: 20 74 68 69 73 20 43 2d 70 72 65 70 72 6f 63 65   this C-preproce
81a0: 73 73 6f 72 20 6d 61 63 72 6f 20 64 69 73 61 62  ssor macro disab
81b0: 6c 65 73 20 74 68 65 20 22 64 65 66 65 72 72 65  les the "deferre
81c0: 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a  d token" optimiz
81d0: 61 74 69 6f 6e 0a 20 20 69 6e 20 5b 46 54 53 34  ation.  in [FTS4
81e0: 5d 2e 20 20 54 68 65 20 22 64 65 66 65 72 72 65  ].  The "deferre
81f0: 64 20 74 6f 6b 65 6e 22 20 6f 70 74 69 6d 69 7a  d token" optimiz
8200: 61 74 69 6f 6e 20 61 76 6f 69 64 73 20 6c 6f 61  ation avoids loa
8210: 64 69 6e 67 20 6d 61 73 73 69 76 65 0a 20 20 70  ding massive.  p
8220: 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72  osting lists for
8230: 20 74 65 72 6d 73 20 74 68 61 74 20 61 72 65 20   terms that are 
8240: 69 6e 20 6d 6f 73 74 20 64 6f 63 75 6d 65 6e 74  in most document
8250: 73 20 6f 66 20 74 68 65 20 63 6f 6c 6c 65 63 74  s of the collect
8260: 69 6f 6e 0a 20 20 61 6e 64 20 69 6e 73 74 65 61  ion.  and instea
8270: 64 20 73 69 6d 70 6c 79 20 73 63 61 6e 73 20 66  d simply scans f
8280: 6f 72 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20  or those tokens 
8290: 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20  in the document 
82a0: 73 6f 75 72 63 65 2e 20 20 5b 46 54 53 34 5d 0a  source.  [FTS4].
82b0: 20 20 73 68 6f 75 6c 64 20 67 65 74 20 65 78 61    should get exa
82c0: 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 6e  ctly the same an
82d0: 73 77 65 72 20 62 6f 74 68 20 77 69 74 68 20 61  swer both with a
82e0: 6e 64 20 77 69 74 68 6f 75 74 20 74 68 69 73 20  nd without this 
82f0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 0a 7d 0a  optimization..}.
8300: 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20  </tcl>..<tcl>.  
8310: 68 64 5f 66 72 61 67 6d 65 6e 74 20 22 6f 6d 69  hd_fragment "omi
8320: 74 66 65 61 74 75 72 65 73 22 0a 20 20 68 64 5f  tfeatures".  hd_
8330: 6b 65 79 77 6f 72 64 73 20 22 6f 6d 69 74 66 65  keywords "omitfe
8340: 61 74 75 72 65 73 22 0a 3c 2f 74 63 6c 3e 0a 3c  atures".</tcl>.<
8350: 68 32 3e 31 2e 36 20 4f 70 74 69 6f 6e 73 20 54  h2>1.6 Options T
8360: 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73 3c  o Omit Features<
8370: 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h2>..<p>The fol
8380: 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 63  lowing options c
8390: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 0a 5b  an be used to .[
83a0: 72 65 6c 66 6f 6f 74 70 72 69 6e 74 20 7c 20 72  relfootprint | r
83b0: 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f  educe the size o
83c0: 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6c  f the compiled l
83d0: 69 62 72 61 72 79 5d 0a 62 79 20 6f 6d 69 74 74  ibrary].by omitt
83e0: 69 6e 67 20 75 6e 75 73 65 64 20 66 65 61 74 75  ing unused featu
83f0: 72 65 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f  res. This is pro
8400: 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75  bably only usefu
8410: 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79  l.in embedded sy
8420: 73 74 65 6d 73 20 77 68 65 72 65 20 73 70 61 63  stems where spac
8430: 65 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20  e is especially 
8440: 74 69 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77  tight, as even w
8450: 69 74 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73  ith all.features
8460: 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51   included the SQ
8470: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
8480: 72 65 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c  relatively small
8490: 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74  . Don't forget.t
84a0: 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70  o tell your comp
84b0: 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65  iler to optimize
84c0: 20 66 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65   for binary size
84d0: 21 20 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f  ! (the -Os optio
84e0: 6e 20 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e  n if.using GCC).
84f0: 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63    Telling your c
8500: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
8510: 69 7a 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75  ize for size usu
8520: 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20  ally has.a much 
8530: 6c 61 72 67 65 72 20 69 6d 70 61 63 74 20 6f 6e  larger impact on
8540: 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70 72 69   library footpri
8550: 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e  nt than employin
8560: 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65 0a 63  g any of these.c
8570: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
8580: 6f 6e 73 2e 20 20 59 6f 75 20 73 68 6f 75 6c 64  ons.  You should
8590: 20 61 6c 73 6f 20 76 65 72 69 66 79 20 74 68 61   also verify tha
85a0: 74 20 0a 3c 61 20 68 72 65 66 3d 22 23 64 65 62  t .<a href="#deb
85b0: 75 67 6f 70 74 69 6f 6e 73 22 3e 64 65 62 75 67  ugoptions">debug
85c0: 67 69 6e 67 20 6f 70 74 69 6f 6e 73 3c 2f 61 3e  ging options</a>
85d0: 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 3c 2f   are disabled.</
85e0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61 63 72 6f  p>..<p>The macro
85f0: 73 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f  s in this sectio
8600: 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72 65  n do not require
8610: 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66 6f 6c   values. The fol
8620: 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69 6c 61 74  lowing .compilat
8630: 69 6f 6e 20 73 77 69 74 63 68 65 73 20 61 6c 6c  ion switches all
8640: 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 65   have the same e
8650: 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44 53 51 4c  ffect:<br>.-DSQL
8660: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
8670: 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45  BLE<br>.-DSQLITE
8680: 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45  _OMIT_ALTERTABLE
8690: 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49 54 45 5f  =1<br>.-DSQLITE_
86a0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 3d  OMIT_ALTERTABLE=
86b0: 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 6e  0.</p>..<p>If an
86c0: 79 20 6f 66 20 74 68 65 73 65 20 6f 70 74 69 6f  y of these optio
86d0: 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64 2c 20  ns are defined, 
86e0: 74 68 65 6e 20 74 68 65 20 73 61 6d 65 20 73 65  then the same se
86f0: 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  t of SQLITE_OMIT
8700: 5f 2a 0a 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20  _*.options must 
8710: 61 6c 73 6f 20 62 65 20 64 65 66 69 6e 65 64 20  also be defined 
8720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 27  when using the '
8730: 6c 65 6d 6f 6e 27 20 74 6f 6f 6c 20 74 6f 20 67  lemon' tool to g
8740: 65 6e 65 72 61 74 65 20 74 68 65 0a 70 61 72 73  enerate the.pars
8750: 65 2e 63 20 66 69 6c 65 20 61 6e 64 20 77 68 65  e.c file and whe
8760: 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 74 68 65 20  n compiling the 
8770: 27 6d 6b 6b 65 79 77 6f 72 64 68 61 73 68 27 20  'mkkeywordhash' 
8780: 74 6f 6f 6c 20 77 68 69 63 68 20 67 65 6e 65 72  tool which gener
8790: 61 74 65 73 20 0a 74 68 65 20 6b 65 79 77 6f 72  ates .the keywor
87a0: 64 68 61 73 68 2e 68 20 66 69 6c 65 2e 0a 42 65  dhash.h file..Be
87b0: 63 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74  cause of this, t
87c0: 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79  hese options may
87d0: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68   only be used wh
87e0: 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  en the library i
87f0: 73 20 62 75 69 6c 74 0a 66 72 6f 6d 20 63 61 6e  s built.from can
8800: 6f 6e 69 63 61 6c 20 73 6f 75 72 63 65 2c 20 6e  onical source, n
8810: 6f 74 20 66 72 6f 6d 20 74 68 65 20 5b 61 6d 61  ot from the [ama
8820: 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 66 72  lgamation] or fr
8830: 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f  om the collectio
8840: 6e 20 6f 66 0a 70 72 65 2d 70 61 63 6b 61 67 65  n of.pre-package
8850: 64 20 43 20 66 69 6c 65 73 20 70 72 6f 76 69 64  d C files provid
8860: 65 64 20 66 6f 72 20 6e 6f 6e 2d 55 6e 69 78 20  ed for non-Unix 
8870: 6c 69 6b 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f  like platforms o
8880: 6e 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 41  n the website..A
8890: 6e 79 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  ny SQLITE_OMIT_*
88a0: 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20 63   options which c
88b0: 61 6e 20 62 65 20 75 73 65 64 20 64 69 72 65 63  an be used direc
88c0: 74 6c 79 20 77 69 74 68 20 74 68 65 20 5b 61 6d  tly with the [am
88d0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 0a 61 72 65  algamation] .are
88e0: 20 6c 69 73 74 65 64 20 62 65 6c 6f 77 2c 20 68   listed below, h
88f0: 6f 77 65 76 65 72 2c 20 74 68 65 20 77 61 72 6e  owever, the warn
8900: 69 6e 67 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c  ings in the foll
8910: 6f 77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20  owing paragraph 
8920: 73 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65 64 2e  should be noted.
8930: 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
8940: 74 65 3e 0a 3c 69 3e 3c 62 3e 49 6d 70 6f 72 74  te>.<i><b>Import
8950: 61 6e 74 20 4e 6f 74 65 3a 3c 2f 62 3e 20 54 68  ant Note:</b> Th
8960: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20  e SQLITE_OMIT_* 
8970: 6f 70 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 77  options do not w
8980: 6f 72 6b 20 77 69 74 68 20 74 68 65 0a 5b 61 6d  ork with the.[am
8990: 61 6c 67 61 6d 61 74 69 6f 6e 5d 20 6f 72 20 77  algamation] or w
89a0: 69 74 68 20 70 72 65 2d 70 61 63 6b 61 67 65 64  ith pre-packaged
89b0: 20 43 20 63 6f 64 65 20 66 69 6c 65 73 2e 20 20   C code files.  
89c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a 20 63 6f  SQLITE_OMIT_* co
89d0: 6d 70 69 6c 65 2d 74 69 6d 65 0a 6f 70 74 69 6f  mpile-time.optio
89e0: 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 63 6f 72  ns only work cor
89f0: 72 65 63 74 6c 79 20 77 68 65 6e 20 53 51 4c 69  rectly when SQLi
8a00: 74 65 20 69 73 20 62 75 69 6c 74 20 66 72 6f 6d  te is built from
8a10: 20 63 61 6e 6f 6e 69 63 61 6c 20 73 6f 75 72 63   canonical sourc
8a20: 65 20 66 69 6c 65 73 2e 0a 3c 2f 69 3e 0a 3c 2f  e files..</i>.</
8a30: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 0a 3c 70  blockquote>...<p
8a40: 3e 53 70 65 63 69 61 6c 20 76 65 72 73 69 6f 6e  >Special version
8a50: 73 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  s of the SQLite 
8a60: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 74 68 61  amalgamation tha
8a70: 74 20 64 6f 20 77 6f 72 6b 20 77 69 74 68 20 61  t do work with a
8a80: 0a 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 73  .predetermined s
8a90: 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f 4d 49  et of SQLITE_OMI
8aa0: 54 5f 2a 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20  T_* options can 
8ab0: 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20 20 54  be generated.  T
8ac0: 6f 20 64 6f 20 73 6f 2c 0a 6d 61 6b 65 20 61 20  o do so,.make a 
8ad0: 63 6f 70 79 20 6f 66 20 74 68 65 20 4d 61 6b 65  copy of the Make
8ae0: 66 69 6c 65 2e 6c 69 6e 75 78 2d 67 63 63 20 6d  file.linux-gcc m
8af0: 61 6b 65 66 69 6c 65 20 74 65 6d 70 6c 61 74 65  akefile template
8b00: 20 69 6e 20 74 68 65 20 63 61 6e 6f 6e 69 63 61   in the canonica
8b10: 6c 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 64 69  l.source code di
8b20: 73 74 72 69 62 75 74 69 6f 6e 2e 20 20 43 68 61  stribution.  Cha
8b30: 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  nge the name of 
8b40: 79 6f 75 72 20 63 6f 70 79 20 74 6f 20 73 69 6d  your copy to sim
8b50: 70 6c 79 20 22 4d 61 6b 65 66 69 6c 65 22 2e 0a  ply "Makefile"..
8b60: 54 68 65 6e 20 65 64 69 74 20 22 4d 61 6b 65 66  Then edit "Makef
8b70: 69 6c 65 22 20 74 6f 20 73 65 74 20 75 70 20 61  ile" to set up a
8b80: 70 70 72 6f 70 72 69 61 74 65 20 63 6f 6d 70 69  ppropriate compi
8b90: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e  le-time options.
8ba0: 20 20 54 68 65 6e 0a 74 79 70 65 3a 0a 3c 62 6c    Then.type:.<bl
8bb0: 6f 63 6b 71 75 6f 74 65 3e 3c 74 74 3e 6d 61 6b  ockquote><tt>mak
8bc0: 65 20 63 6c 65 61 6e 3b 20 6d 61 6b 65 20 73 71  e clean; make sq
8bd0: 6c 69 74 65 33 2e 63 3c 2f 74 74 3e 3c 2f 62 6c  lite3.c</tt></bl
8be0: 6f 63 6b 71 75 6f 74 65 3e 0a 54 68 65 20 72 65  ockquote>.The re
8bf0: 73 75 6c 74 69 6e 67 20 22 73 71 6c 69 74 65 33  sulting "sqlite3
8c00: 2e 63 22 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  .c" amalgamation
8c10: 20 63 6f 64 65 20 66 69 6c 65 20 28 61 6e 64 20   code file (and 
8c20: 69 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a 68  its associated.h
8c30: 65 61 64 65 72 20 66 69 6c 65 20 22 73 71 6c 69  eader file "sqli
8c40: 74 65 33 2e 68 22 29 20 63 61 6e 20 74 68 65 6e  te3.h") can then
8c50: 20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e   be moved to a n
8c60: 6f 6e 2d 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d  on-unix platform
8c70: 0a 66 6f 72 20 66 69 6e 61 6c 20 63 6f 6d 70 69  .for final compi
8c80: 6c 61 74 69 6f 6e 20 75 73 69 6e 67 20 61 20 6e  lation using a n
8c90: 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72 2e 3c  ative compiler.<
8ca0: 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 6f 66 20 74  /p>..<p>All of t
8cb0: 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 2a  he SQLITE_OMIT_*
8cc0: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 75 6e 73   options are uns
8cd0: 75 70 70 6f 72 74 65 64 2e 3c 2f 70 3e 0a 0a 3c  upported.</p>..<
8ce0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 69 3e 3c  blockquote>.<i><
8cf0: 62 3e 49 6d 70 6f 72 74 61 6e 74 20 4e 6f 74 65  b>Important Note
8d00: 3a 3c 2f 62 3e 0a 54 68 65 20 53 51 4c 49 54 45  :</b>.The SQLITE
8d10: 5f 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d  _OMIT_* compile-
8d20: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65  time options are
8d30: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 0a 3c 2f   unsupported..</
8d40: 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  i></blockquote>.
8d50: 0a 3c 70 3e 0a 54 68 65 20 53 51 4c 49 54 45 5f  .<p>.The SQLITE_
8d60: 4f 4d 49 54 5f 2a 20 63 6f 6d 70 69 6c 65 2d 74  OMIT_* compile-t
8d70: 69 6d 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ime options are 
8d80: 75 73 75 61 6c 6c 79 20 75 6e 74 65 73 74 65 64  usually untested
8d90: 20 61 6e 64 0a 61 72 65 20 61 6c 6d 6f 73 74 20   and.are almost 
8da0: 63 65 72 74 61 69 6e 6c 79 20 75 6e 74 65 73 74  certainly untest
8db0: 65 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f  ed in combinatio
8dc0: 6e 2e 0a 41 6e 79 20 6f 72 20 61 6c 6c 20 6f 66  n..Any or all of
8dd0: 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d   these options m
8de0: 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72  ay be removed fr
8df0: 6f 6d 20 74 68 65 20 63 6f 64 65 20 69 6e 20 66  om the code in f
8e00: 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 0a 61  uture releases.a
8e10: 6e 64 20 77 69 74 68 6f 75 74 20 77 61 72 6e 69  nd without warni
8e20: 6e 67 2e 20 20 46 6f 72 20 61 6e 79 20 70 61 72  ng.  For any par
8e30: 74 69 63 75 6c 61 72 20 72 65 6c 65 61 73 65 2c  ticular release,
8e40: 20 73 6f 6d 65 20 6f 66 20 74 68 65 73 65 0a 6f   some of these.o
8e50: 70 74 69 6f 6e 73 20 6d 61 79 20 63 61 75 73 65  ptions may cause
8e60: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72   compile-time or
8e70: 20 72 75 6e 2d 74 69 6d 65 20 66 61 69 6c 75 72   run-time failur
8e80: 65 73 2c 20 70 61 72 74 69 63 75 6c 61 72 6c 79  es, particularly
8e90: 0a 77 68 65 6e 20 75 73 65 64 20 69 6e 20 63 6f  .when used in co
8ea0: 6d 62 69 6e 61 74 69 6f 6e 20 77 69 74 68 20 6f  mbination with o
8eb0: 74 68 65 72 20 6f 70 74 69 6f 6e 73 2e 3c 2f 70  ther options.</p
8ec0: 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45  >..<tcl>.COMPILE
8ed0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
8ee0: 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 7d  OMIT_ALTERTABLE}
8ef0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
8f00: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
8f10: 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54 45 52 20  , the .  [ALTER 
8f20: 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 69  TABLE] command i
8f30: 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69  s not included i
8f40: 6e 20 74 68 65 20 0a 20 20 6c 69 62 72 61 72 79  n the .  library
8f50: 2e 20 45 78 65 63 75 74 69 6e 67 20 61 6e 20 5b  . Executing an [
8f60: 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 73 74 61  ALTER TABLE] sta
8f70: 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 61 20  tement causes a 
8f80: 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a  parse error..}..
8f90: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
8fa0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c  SQLITE_OMIT_ANAL
8fb0: 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  YZE} {.  When th
8fc0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
8fd0: 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c 59  ined, the [ANALY
8fe0: 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f  ZE] command is o
8ff0: 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20 20 74 68  mitted from.  th
9000: 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50  e build..}..COMP
9010: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
9020: 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d 20  TE_OMIT_ATTACH} 
9030: 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70  {.  When this op
9040: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c  tion is defined,
9050: 20 74 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e   the [ATTACH] an
9060: 64 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d 61  d [DETACH] comma
9070: 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69 74 74 65  nds are.  omitte
9080: 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
9090: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
90a0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
90b0: 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d 20  _AUTHORIZATION} 
90c0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
90d0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
90e0: 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e  he authorization
90f0: 20 63 61 6c 6c 62 61 63 6b 20 66 65 61 74 75 72   callback featur
9100: 65 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69 62  e from the.  lib
9110: 72 61 72 79 2e 20 54 68 65 20 5b 73 71 6c 69 74  rary. The [sqlit
9120: 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
9130: 72 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f  r()] API functio
9140: 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74  n is not present
9150: 0a 20 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  .  in the librar
9160: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
9170: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
9180: 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 7d  T_AUTOINCREMENT}
9190: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
91a0: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
91b0: 20 74 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e 43   the .  [AUTOINC
91c0: 52 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f 6e  REMENT] function
91d0: 61 6c 69 74 79 2e 20 57 68 65 6e 20 74 68 69 73  ality. When this
91e0: 20 0a 20 20 69 73 20 6d 61 63 72 6f 20 69 73 20   .  is macro is 
91f0: 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73  defined, columns
9200: 20 64 65 63 6c 61 72 65 64 20 61 73 20 0a 20 20   declared as .  
9210: 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  "[INTEGER PRIMAR
9220: 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52 45  Y KEY] AUTOINCRE
9230: 4d 45 4e 54 22 0a 20 20 62 65 68 61 76 65 20 69  MENT".  behave i
9240: 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 61  n the same way a
9250: 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61 72  s columns declar
9260: 65 64 20 61 73 20 22 5b 49 4e 54 45 47 45 52 20  ed as "[INTEGER 
9270: 50 52 49 4d 41 52 59 20 4b 45 59 5d 22 20 77 68  PRIMARY KEY]" wh
9280: 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73 20  en a .  NULL is 
9290: 69 6e 73 65 72 74 65 64 2e 20 54 68 65 20 73 71  inserted. The sq
92a0: 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20 73 79  lite_sequence sy
92b0: 73 74 65 6d 20 74 61 62 6c 65 20 69 73 20 6e 65  stem table is ne
92c0: 69 74 68 65 72 20 63 72 65 61 74 65 64 2c 20 6e  ither created, n
92d0: 6f 72 0a 20 20 72 65 73 70 65 63 74 65 64 20 69  or.  respected i
92e0: 66 20 69 74 20 61 6c 72 65 61 64 79 20 65 78 69  f it already exi
92f0: 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  sts..}..COMPILE_
9300: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
9310: 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b 0a  MIT_AUTOINIT} {.
9320: 20 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20    For backwards 
9330: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
9340: 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  th older version
9350: 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74  s of SQLite that
9360: 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71 6c   lack.  the [sql
9370: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
9380: 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68  )] interface, th
9390: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  e [sqlite3_initi
93a0: 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66 61  alize()] interfa
93b0: 63 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20 61  ce.  is called a
93c0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 6f  utomatically upo
93d0: 6e 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74 61  n entry to certa
93e0: 69 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63 65  in key interface
93f0: 73 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71 6c  s such as.  [sql
9400: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73  ite3_open()], [s
9410: 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73  qlite3_vfs_regis
9420: 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c  ter()], and [sql
9430: 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 2e  ite3_mprintf()].
9440: 0a 20 20 54 68 65 20 6f 76 65 72 68 65 61 64 20  .  The overhead 
9450: 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c  of invoking [sql
9460: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
9470: 29 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  )] automatically
9480: 20 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20 6d   in this.  way m
9490: 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62 79  ay be omitted by
94a0: 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65   building SQLite
94b0: 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45   with the SQLITE
94c0: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20  _OMIT_AUTOINIT. 
94d0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
94e0: 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75 69  macro.  When bui
94f0: 6c 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45 5f  lt using SQLITE_
9500: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20 53  OMIT_AUTOINIT, S
9510: 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f 74  QLite.  will not
9520: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
9530: 6e 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c 66  nitialize itself
9540: 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61   and the applica
9550: 74 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65 64  tion is required
9560: 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73 71  .  to invoke [sq
9570: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
9580: 28 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72 69  ()] directly pri
9590: 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20  or to beginning 
95a0: 75 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51 4c  use of the.  SQL
95b0: 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a  ite library..}..
95c0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
95d0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
95e0: 4d 41 54 49 43 5f 49 4e 44 45 58 7d 20 7b 0a 20  MATIC_INDEX} {. 
95f0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
9600: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
9610: 20 0a 20 20 5b 61 75 74 6f 6d 61 74 69 63 20 69   .  [automatic i
9620: 6e 64 65 78 69 6e 67 5d 20 66 75 6e 63 74 69 6f  ndexing] functio
9630: 6e 61 6c 69 74 79 2e 0a 20 20 53 65 65 20 61 6c  nality..  See al
9640: 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 44 45 46 41  so: [SQLITE_DEFA
9650: 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e  ULT_AUTOMATIC_IN
9660: 44 45 58 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  DEX]..}..COMPILE
9670: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
9680: 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 7d 20  OMIT_AUTORESET} 
9690: 7b 0a 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  {.  By default, 
96a0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  the [sqlite3_ste
96b0: 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77  p()] interface w
96c0: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
96d0: 79 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69  y invoke.  [sqli
96e0: 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74 6f 20  te3_reset()] to 
96f0: 72 65 73 65 74 20 74 68 65 20 5b 70 72 65 70 61  reset the [prepa
9700: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69  red statement] i
9710: 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  f necessary.  Th
9720: 69 73 0a 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is.  compile-tim
9730: 65 20 6f 70 74 69 6f 6e 20 63 68 61 6e 67 65 73  e option changes
9740: 20 74 68 61 74 20 62 65 68 61 76 69 6f 72 20 73   that behavior s
9750: 6f 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f  o that [sqlite3_
9760: 73 74 65 70 28 29 5d 20 77 69 6c 6c 0a 20 20 72  step()] will.  r
9770: 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d 49  eturn [SQLITE_MI
9780: 53 55 53 45 5d 20 69 66 20 69 74 20 63 61 6c 6c  SUSE] if it call
9790: 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72  ed again after r
97a0: 65 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e  eturning anythin
97b0: 67 20 6f 74 68 65 72 0a 20 20 74 68 61 6e 20 5b  g other.  than [
97c0: 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53 51  SQLITE_ROW], [SQ
97d0: 4c 49 54 45 5f 42 55 53 59 5d 2c 20 6f 72 20 5b  LITE_BUSY], or [
97e0: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 75  SQLITE_LOCKED] u
97f0: 6e 6c 65 73 73 20 74 68 65 72 65 20 77 61 73 20  nless there was 
9800: 61 6e 0a 20 20 69 6e 74 65 72 76 65 6e 69 6e 67  an.  intervening
9810: 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65   call to [sqlite
9820: 33 5f 72 65 73 65 74 28 29 5d 2e 0a 0a 20 20 49  3_reset()]...  I
9830: 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  n SQLite version
9840: 20 33 2e 36 2e 32 33 2e 31 20 61 6e 64 20 65 61   3.6.23.1 and ea
9850: 72 6c 69 65 72 2c 20 5b 73 71 6c 69 74 65 33 5f  rlier, [sqlite3_
9860: 73 74 65 70 28 29 5d 20 75 73 65 64 20 74 6f 20  step()] used to 
9870: 61 6c 77 61 79 73 0a 20 20 72 65 74 75 72 6e 20  always.  return 
9880: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
9890: 69 66 20 69 74 20 77 61 73 20 69 6e 76 6f 6b 65  if it was invoke
98a0: 64 20 61 67 61 69 6e 20 61 66 74 65 72 20 72 65  d again after re
98b0: 74 75 72 6e 69 6e 67 20 61 6e 79 74 68 69 6e 67  turning anything
98c0: 0a 20 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53  .  other than [S
98d0: 51 4c 49 54 45 5f 52 4f 57 5d 20 77 69 74 68 6f  QLITE_ROW] witho
98e0: 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e  ut an intervenin
98f0: 67 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  g call to [sqlit
9900: 65 33 5f 72 65 73 65 74 28 29 5d 2e 0a 20 20 54  e3_reset()]..  T
9910: 68 69 73 20 63 61 75 73 65 64 20 70 72 6f 62 6c  his caused probl
9920: 65 6d 73 20 6f 6e 20 73 6f 6d 65 20 70 6f 6f 72  ems on some poor
9930: 6c 79 20 77 72 69 74 74 65 6e 20 73 6d 61 72 74  ly written smart
9940: 70 68 6f 6e 65 20 61 70 70 6c 69 63 61 74 69 6f  phone applicatio
9950: 6e 73 20 77 68 69 63 68 0a 20 20 64 69 64 20 6e  ns which.  did n
9960: 6f 74 20 63 6f 72 72 65 63 74 6c 79 20 68 61 6e  ot correctly han
9970: 64 6c 65 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  dle the [SQLITE_
9980: 4c 4f 43 4b 45 44 5d 20 61 6e 64 20 5b 53 51 4c  LOCKED] and [SQL
9990: 49 54 45 5f 42 55 53 59 5d 20 65 72 72 6f 72 20  ITE_BUSY] error 
99a0: 0a 20 20 72 65 74 75 72 6e 73 2e 20 20 52 61 74  .  returns.  Rat
99b0: 68 65 72 20 74 68 61 6e 20 66 69 78 20 74 68 65  her than fix the
99c0: 20 6d 61 6e 79 20 64 65 66 65 63 74 69 76 65 20   many defective 
99d0: 73 6d 61 72 74 70 68 6f 6e 65 20 61 70 70 6c 69  smartphone appli
99e0: 63 61 74 69 6f 6e 73 2c 20 0a 20 20 74 68 65 20  cations, .  the 
99f0: 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69  behavior of SQLi
9a00: 74 65 20 77 61 73 20 63 68 61 6e 67 65 64 20 69  te was changed i
9a10: 6e 20 33 2e 36 2e 32 33 2e 32 20 74 6f 20 61 75  n 3.6.23.2 to au
9a20: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 73 65  tomatically rese
9a30: 74 0a 20 20 74 68 65 20 70 72 65 70 61 72 65 64  t.  the prepared
9a40: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 42 75 74   statement.  But
9a50: 20 74 68 61 74 20 63 68 61 6e 67 65 64 20 63 61   that changed ca
9a60: 75 73 65 64 20 69 73 73 75 65 73 20 69 6e 20 6f  used issues in o
9a70: 74 68 65 72 20 0a 20 20 69 6d 70 72 6f 70 65 72  ther .  improper
9a80: 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61  ly implemented a
9a90: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
9aa0: 20 77 65 72 65 20 61 63 74 75 61 6c 6c 79 20 6c   were actually l
9ab0: 6f 6f 6b 69 6e 67 0a 20 20 66 6f 72 20 61 6e 20  ooking.  for an 
9ac0: 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20  [SQLITE_MISUSE] 
9ad0: 72 65 74 75 72 6e 20 74 6f 20 74 65 72 6d 69 6e  return to termin
9ae0: 61 74 65 20 74 68 65 69 72 20 71 75 65 72 79 20  ate their query 
9af0: 6c 6f 6f 70 73 2e 20 20 28 41 6e 79 74 69 6d 65  loops.  (Anytime
9b00: 0a 20 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  .  an applicatio
9b10: 6e 20 67 65 74 73 20 61 6e 20 53 51 4c 49 54 45  n gets an SQLITE
9b20: 5f 4d 49 53 55 53 45 20 65 72 72 6f 72 20 63 6f  _MISUSE error co
9b30: 64 65 20 66 72 6f 6d 20 53 51 4c 69 74 65 2c 20  de from SQLite, 
9b40: 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 0a 20  that means the. 
9b50: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
9b60: 6d 69 73 75 73 69 6e 67 20 74 68 65 20 53 51 4c  misusing the SQL
9b70: 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ite interface an
9b80: 64 20 69 73 20 74 68 75 73 20 69 6e 63 6f 72 72  d is thus incorr
9b90: 65 63 74 6c 79 0a 20 20 69 6d 70 6c 65 6d 65 6e  ectly.  implemen
9ba0: 74 65 64 2e 29 20 20 54 68 65 20 53 51 4c 49 54  ted.)  The SQLIT
9bb0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54  E_OMIT_AUTORESET
9bc0: 20 69 6e 74 65 72 66 61 63 65 20 77 61 73 20 61   interface was a
9bd0: 64 64 65 64 20 74 6f 20 53 51 4c 69 74 65 0a 20  dded to SQLite. 
9be0: 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 35 20 69   version 3.7.5 i
9bf0: 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20 67  n an effort to g
9c00: 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 28 62  et all of the (b
9c10: 72 6f 6b 65 6e 29 0a 20 20 61 70 70 6c 69 63 61  roken).  applica
9c20: 74 69 6f 6e 73 20 74 6f 20 77 6f 72 6b 20 61 67  tions to work ag
9c30: 61 69 6e 20 77 69 74 68 6f 75 74 20 68 61 76 69  ain without havi
9c40: 6e 67 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 66  ng to actually f
9c50: 69 78 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ix the applicati
9c60: 6f 6e 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ons..}..COMPILE_
9c70: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
9c80: 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 7d 20  MIT_AUTOVACUUM} 
9c90: 7b 0a 20 20 49 66 20 74 68 69 73 20 6f 70 74 69  {.  If this opti
9ca0: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74  on is defined, t
9cb0: 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 6e 6f  he library canno
9cc0: 74 20 63 72 65 61 74 65 20 6f 72 20 77 72 69 74  t create or writ
9cd0: 65 20 74 6f 20 0a 20 20 64 61 74 61 62 61 73 65  e to .  database
9ce0: 73 20 74 68 61 74 20 73 75 70 70 6f 72 74 20 5b  s that support [
9cf0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 2e 0a 20 20  auto_vacuum]..  
9d00: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 50 52 41  Executing a [PRA
9d10: 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 5d  GMA auto_vacuum]
9d20: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
9d30: 74 20 61 6e 20 65 72 72 6f 72 0a 20 20 28 73 69  t an error.  (si
9d40: 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20 50 52 41 47  nce unknown PRAG
9d50: 4d 41 73 20 61 72 65 20 73 69 6c 65 6e 74 6c 79  MAs are silently
9d60: 20 69 67 6e 6f 72 65 64 29 2c 20 62 75 74 20 64   ignored), but d
9d70: 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61  oes not return a
9d80: 20 76 61 6c 75 65 0a 20 20 6f 72 20 6d 6f 64 69   value.  or modi
9d90: 66 79 20 74 68 65 20 61 75 74 6f 2d 76 61 63 75  fy the auto-vacu
9da0: 75 6d 20 66 6c 61 67 20 69 6e 20 74 68 65 20 64  um flag in the d
9db0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66  atabase file. If
9dc0: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 61 74   a database that
9dd0: 0a 20 20 73 75 70 70 6f 72 74 73 20 61 75 74 6f  .  supports auto
9de0: 2d 76 61 63 75 75 6d 20 69 73 20 6f 70 65 6e 65  -vacuum is opene
9df0: 64 20 62 79 20 61 20 6c 69 62 72 61 72 79 20 63  d by a library c
9e00: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69  ompiled with thi
9e10: 73 20 6f 70 74 69 6f 6e 2c 20 69 74 0a 20 20 69  s option, it.  i
9e20: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
9e30: 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f  opened in read-o
9e40: 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a 0a 43 4f 4d  nly mode..}..COM
9e50: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9e60: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
9e70: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b  _OPTIMIZATION} {
9e80: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  .  This option d
9e90: 69 73 61 62 6c 65 73 20 74 68 65 20 75 73 65 20  isables the use 
9ea0: 6f 66 20 69 6e 64 69 63 65 73 20 77 69 74 68 20  of indices with 
9eb0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 74 65 72  WHERE clause ter
9ec0: 6d 73 0a 20 20 74 68 61 74 20 65 6d 70 6c 6f 79  ms.  that employ
9ed0: 20 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65   the BETWEEN ope
9ee0: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
9ef0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
9f00: 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52  _OMIT_BLOB_LITER
9f10: 41 4c 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  AL} {.  When thi
9f20: 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69  s option is defi
9f30: 6e 65 64 2c 20 69 74 20 69 73 20 6e 6f 74 20 70  ned, it is not p
9f40: 6f 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69  ossible to speci
9f50: 66 79 20 61 20 62 6c 6f 62 20 69 6e 0a 20 20 61  fy a blob in.  a
9f60: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
9f70: 75 73 69 6e 67 20 74 68 65 20 58 27 41 42 43 44  using the X'ABCD
9f80: 27 20 73 79 6e 74 61 78 2e 0a 7d 0a 0a 43 4f 4d  ' syntax..}..COM
9f90: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
9fa0: 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f  ITE_OMIT_BTREECO
9fb0: 55 4e 54 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  UNT} {.  When th
9fc0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66  is option is def
9fd0: 69 6e 65 64 2c 20 61 6e 20 6f 70 74 69 6d 69 7a  ined, an optimiz
9fe0: 61 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 6c  ation that accel
9ff0: 65 72 61 74 65 73 20 63 6f 75 6e 74 69 6e 67 0a  erates counting.
a000: 20 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 69 6e    all entries in
a010: 20 61 20 74 61 62 6c 65 20 28 69 6e 20 6f 74 68   a table (in oth
a020: 65 72 20 77 6f 72 64 73 2c 20 61 6e 20 6f 70 74  er words, an opt
a030: 69 6d 69 7a 61 74 69 6f 6e 20 74 68 61 74 20 68  imization that h
a040: 65 6c 70 73 0a 20 20 22 53 45 4c 45 43 54 20 63  elps.  "SELECT c
a050: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62  ount(*) FROM tab
a060: 6c 65 22 20 72 75 6e 20 66 61 73 74 65 72 29 20  le" run faster) 
a070: 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43  is omitted..}..C
a080: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a090: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49 4c 54  QLITE_OMIT_BUILT
a0a0: 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41 20 73  IN_TEST} {.  A s
a0b0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 62  tandard SQLite b
a0c0: 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20 61 20  uild includes a 
a0d0: 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20  small amount of 
a0e0: 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c 65 64  logic controlled
a0f0: 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74  .  by the [sqlit
a100: 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28  e3_test_control(
a110: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 68 61  )] interface tha
a120: 74 20 69 73 20 75 73 65 64 20 74 6f 20 65 78 65  t is used to exe
a130: 72 63 69 73 65 0a 20 20 70 61 72 74 73 20 6f 66  rcise.  parts of
a140: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
a150: 20 74 68 61 74 20 61 72 65 20 64 69 66 66 69 63   that are diffic
a160: 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 61  ult to control a
a170: 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69 6e 67  nd measure using
a180: 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  .  the standard 
a190: 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74 69 6f  API.  This optio
a1a0: 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62 75 69  n omits that bui
a1b0: 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67 69 63  lt-in test logic
a1c0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
a1d0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
a1e0: 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69 73 20  _CAST} {.  This 
a1f0: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
a200: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73 75 70  Lite to omit sup
a210: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43 41 53  port for the CAS
a220: 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43  T operator..}..C
a230: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
a240: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b  QLITE_OMIT_CHECK
a250: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
a260: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
a270: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
a280: 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  for CHECK constr
a290: 61 69 6e 74 73 2e 0a 20 20 54 68 65 20 70 61 72  aints..  The par
a2a0: 73 65 72 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61  ser will still a
a2b0: 63 63 65 70 74 20 43 48 45 43 4b 20 63 6f 6e 73  ccept CHECK cons
a2c0: 74 72 61 69 6e 74 73 20 69 6e 20 53 51 4c 20 73  traints in SQL s
a2d0: 74 61 74 65 6d 65 6e 74 73 2c 0a 20 20 74 68 65  tatements,.  the
a2e0: 79 20 77 69 6c 6c 20 6a 75 73 74 20 6e 6f 74 20  y will just not 
a2f0: 62 65 20 65 6e 66 6f 72 63 65 64 2e 0a 7d 0a 0a  be enforced..}..
a300: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
a310: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
a320: 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 7d  ILEOPTION_DIAGS}
a330: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
a340: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69 74   is used to omit
a350: 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   the compile-tim
a360: 65 20 6f 70 74 69 6f 6e 20 64 69 61 67 6e 6f 73  e option diagnos
a370: 74 69 63 73 20 61 76 61 69 6c 61 62 6c 65 0a 20  tics available. 
a380: 20 69 6e 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c   in SQLite, incl
a390: 75 64 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  uding the [sqlit
a3a0: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
a3b0: 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 20 20 5b  _used()] and.  [
a3c0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
a3d0: 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43  ption_get()] C/C
a3e0: 2b 2b 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68  ++ functions, th
a3f0: 65 0a 20 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70  e.  [sqlite_comp
a400: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
a410: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 63 6f  ] and [sqlite_co
a420: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
a430: 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  )] SQL functions
a440: 2c 0a 20 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d  ,.  and the [com
a450: 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61  pile_options pra
a460: 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  gma]..}..COMPILE
a470: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a480: 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 7d 20 7b  OMIT_COMPLETE} {
a490: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
a4a0: 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74  auses the [sqlit
a4b0: 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 61  e3_complete()] a
a4c0: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  nd [sqlite3_comp
a4d0: 6c 65 74 65 31 36 28 29 5d 0a 20 20 69 6e 74 65  lete16()].  inte
a4e0: 72 66 61 63 65 73 20 74 6f 20 62 65 20 6f 6d 69  rfaces to be omi
a4f0: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
a500: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a510: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
a520: 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  LECT} {.  This o
a530: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
a540: 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d 70 6f 75   omit the compou
a550: 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66 75 6e 63  nd [SELECT] func
a560: 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20 20 5b 53  tionality. .  [S
a570: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
a580: 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20 0a  s that use the .
a590: 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41    UNION, UNION A
a5a0: 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 20 6f 72  LL, INTERSECT or
a5b0: 20 45 58 43 45 50 54 20 63 6f 6d 70 6f 75 6e 64   EXCEPT compound
a5c0: 20 53 45 4c 45 43 54 20 6f 70 65 72 61 74 6f 72   SELECT operator
a5d0: 73 20 77 69 6c 6c 20 0a 20 20 63 61 75 73 65 20  s will .  cause 
a5e0: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
a5f0: 20 20 41 6e 20 5b 49 4e 53 45 52 54 5d 20 73 74    An [INSERT] st
a600: 61 74 65 6d 65 6e 74 20 77 69 74 68 20 6d 75 6c  atement with mul
a610: 74 69 70 6c 65 20 76 61 6c 75 65 73 20 69 6e 20  tiple values in 
a620: 74 68 65 20 56 41 4c 55 45 53 20 63 6c 61 75 73  the VALUES claus
a630: 65 20 69 73 0a 20 20 69 6d 70 6c 65 6d 65 6e 74  e is.  implement
a640: 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 73  ed internally as
a650: 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45   a compound SELE
a660: 43 54 2e 20 20 48 65 6e 63 65 2c 20 74 68 69 73  CT.  Hence, this
a670: 20 6f 70 74 69 6f 6e 20 61 6c 73 6f 0a 20 20 64   option also.  d
a680: 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69 6c  isables the abil
a690: 69 74 79 20 74 6f 20 69 6e 73 65 72 74 20 6d 6f  ity to insert mo
a6a0: 72 65 20 74 68 61 6e 20 61 20 73 69 6e 67 6c 65  re than a single
a6b0: 20 72 6f 77 20 75 73 69 6e 67 20 61 6e 0a 20 20   row using an.  
a6c0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 2e 2e 2e 20  INSERT INTO ... 
a6d0: 56 41 4c 55 45 53 20 2e 2e 2e 20 73 74 61 74 65  VALUES ... state
a6e0: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
a6f0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
a700: 4f 4d 49 54 5f 43 54 45 7d 20 7b 0a 20 20 54 68  OMIT_CTE} {.  Th
a710: 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  is option causes
a720: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5b 63 6f   support for [co
a730: 6d 6d 6f 6e 20 74 61 62 6c 65 20 65 78 70 72 65  mmon table expre
a740: 73 73 69 6f 6e 73 5d 20 74 6f 20 62 65 20 6f 6d  ssions] to be om
a750: 69 74 74 65 64 2e 0a 7d 0a 0a 0a 0a 43 4f 4d 50  itted..}....COMP
a760: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
a770: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
a780: 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74  _FUNCS} {.  If t
a790: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
a7a0: 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 27 73 20  fined, SQLite's 
a7b0: 62 75 69 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e  built-in date an
a7c0: 64 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74  d time manipulat
a7d0: 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20  ion.  functions 
a7e0: 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 53 70 65  are omitted. Spe
a7f0: 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 53  cifically, the S
a800: 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c  QL functions jul
a810: 69 61 6e 64 61 79 28 29 2c 20 64 61 74 65 28 29  ianday(), date()
a820: 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64 61 74 65  ,.  time(), date
a830: 74 69 6d 65 28 29 20 61 6e 64 20 73 74 72 66 74  time() and strft
a840: 69 6d 65 28 29 20 61 72 65 20 6e 6f 74 20 61 76  ime() are not av
a850: 61 69 6c 61 62 6c 65 2e 20 54 68 65 20 64 65 66  ailable. The def
a860: 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61  ault column.  va
a870: 6c 75 65 73 20 43 55 52 52 45 4e 54 5f 54 49 4d  lues CURRENT_TIM
a880: 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20  E, CURRENT_DATE 
a890: 61 6e 64 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  and CURRENT_TIME
a8a0: 53 54 41 4d 50 20 61 72 65 20 73 74 69 6c 6c 20  STAMP are still 
a8b0: 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f  available..}..CO
a8c0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
a8d0: 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59  LITE_OMIT_DECLTY
a8e0: 50 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  PE} {.  This opt
a8f0: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
a900: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
a910: 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c  t for the.  [sql
a920: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
a930: 74 79 70 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  type()] and [sql
a940: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
a950: 74 79 70 65 31 36 28 29 5d 0a 20 20 69 6e 74 65  type16()].  inte
a960: 72 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49  rfaces..}..COMPI
a970: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
a980: 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45  E_OMIT_DEPRECATE
a990: 44 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  D} {.  This opti
a9a0: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
a9b0: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
a9c0: 20 66 6f 72 20 69 6e 74 65 72 66 61 63 65 73 0a   for interfaces.
a9d0: 20 20 6d 61 72 6b 65 64 20 61 73 20 64 65 70 72    marked as depr
a9e0: 65 63 61 74 65 64 2e 20 20 54 68 69 73 20 69 6e  ecated.  This in
a9f0: 63 6c 75 64 65 73 20 0a 20 20 5b 73 71 6c 69 74  cludes .  [sqlit
aa00: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
aa10: 6e 74 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  nt()],.  [sqlite
aa20: 33 5f 65 78 70 69 72 65 64 28 29 5d 2c 0a 20 20  3_expired()],.  
aa30: 5b 73 71 6c 69 74 65 33 5f 74 72 61 6e 73 66 65  [sqlite3_transfe
aa40: 72 5f 62 69 6e 64 69 6e 67 73 28 29 5d 2c 0a 20  r_bindings()],. 
aa50: 20 5b 73 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c   [sqlite3_global
aa60: 5f 72 65 63 6f 76 65 72 28 29 5d 2c 0a 20 20 5b  _recover()],.  [
aa70: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63  sqlite3_thread_c
aa80: 6c 65 61 6e 75 70 28 29 5d 20 61 6e 64 0a 20 20  leanup()] and.  
aa90: 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
aaa0: 61 6c 61 72 6d 28 29 5d 20 69 6e 74 65 72 66 61  alarm()] interfa
aab0: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
aac0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
aad0: 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a 20 20  MIT_DISKIO} {.  
aae0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
aaf0: 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 20 66 6f  s all support fo
ab00: 72 20 77 72 69 74 69 6e 67 20 74 6f 20 74 68 65  r writing to the
ab10: 20 64 69 73 6b 20 61 6e 64 20 66 6f 72 63 65 73   disk and forces
ab20: 0a 20 20 64 61 74 61 62 61 73 65 73 20 74 6f 20  .  databases to 
ab30: 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f 72 79 20  exist in memory 
ab40: 6f 6e 6c 79 2e 20 20 54 68 69 73 20 6f 70 74 69  only.  This opti
ab50: 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  on has not been 
ab60: 0a 20 20 6d 61 69 6e 74 61 69 6e 65 64 20 61 6e  .  maintained an
ab70: 64 20 70 72 6f 62 61 62 6c 79 20 64 6f 65 73 20  d probably does 
ab80: 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 6e 65  not work with ne
ab90: 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  wer versions of 
aba0: 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  SQLite..}..COMPI
abb0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
abc0: 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20  E_OMIT_EXPLAIN} 
abd0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
abe0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
abf0: 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f  the [EXPLAIN] co
ac00: 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74  mmand to be omit
ac10: 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c  ted from the.  l
ac20: 69 62 72 61 72 79 2e 20 41 74 74 65 6d 70 74 69  ibrary. Attempti
ac30: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  ng to execute an
ac40: 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74 61 74 65   [EXPLAIN] state
ac50: 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20  ment will cause 
ac60: 61 20 70 61 72 73 65 0a 20 20 65 72 72 6f 72 2e  a parse.  error.
ac70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
ac80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
ac90: 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  FLAG_PRAGMAS} {.
aca0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
acb0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
acc0: 61 20 73 75 62 73 65 74 20 6f 66 20 5b 50 52 41  a subset of [PRA
acd0: 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68  GMA] commands th
ace0: 61 74 0a 20 20 71 75 65 72 79 20 61 6e 64 20 73  at.  query and s
acf0: 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65  et boolean prope
ad00: 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rties..}..COMPIL
ad10: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
ad20: 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50  _OMIT_FLOATING_P
ad30: 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  OINT} {.  This o
ad40: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
ad50: 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70   omit floating-p
ad60: 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73 75 70 70  oint number supp
ad70: 6f 72 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ort from the SQL
ad80: 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 57  ite.  library. W
ad90: 68 65 6e 20 73 70 65 63 69 66 69 65 64 2c 20 73  hen specified, s
ada0: 70 65 63 69 66 79 69 6e 67 20 61 20 66 6c 6f 61  pecifying a floa
adb0: 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
adc0: 72 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20 0a  r as a literal .
add0: 20 20 28 69 2e 65 2e 20 22 31 2e 30 31 22 29 20    (i.e. "1.01") 
ade0: 72 65 73 75 6c 74 73 20 69 6e 20 61 20 70 61 72  results in a par
adf0: 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e  se error...  <p>
ae00: 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 74  In the future, t
ae10: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61  his option may a
ae20: 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f 74 68 65  lso disable othe
ae30: 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  r floating point
ae40: 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74   .  functionalit
ae50: 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74  y, for example t
ae60: 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75  he [sqlite3_resu
ae70: 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20  lt_double()], . 
ae80: 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64   [sqlite3_bind_d
ae90: 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74  ouble()], [sqlit
aea0: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
aeb0: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
aec0: 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
aed0: 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73  )] API functions
aee0: 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50  ..  </p>.}..COMP
aef0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
af00: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
af10: 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  KEY} {.  If this
af20: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
af30: 65 64 2c 20 74 68 65 6e 20 5b 66 6f 72 65 69 67  ed, then [foreig
af40: 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
af50: 5d 20 73 79 6e 74 61 78 20 69 73 0a 20 20 6e 6f  ] syntax is.  no
af60: 74 20 72 65 63 6f 67 6e 69 7a 65 64 2e 0a 7d 0a  t recognized..}.
af70: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
af80: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54  {SQLITE_OMIT_GET
af90: 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73  _TABLE} {.  This
afa0: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
afb0: 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69  upport for [sqli
afc0: 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d  te3_get_table()]
afd0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
afe0: 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f  free_table()] to
aff0: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
b000: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
b010: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52  SQLITE_OMIT_INCR
b020: 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f  BLOB} {.  This o
b030: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70  ption causes sup
b040: 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65  port for [sqlite
b050: 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65  3_blob | increme
b060: 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20  ntal BLOB I/O]. 
b070: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
b080: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b090: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49  N {SQLITE_OMIT_I
b0a0: 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b 7d 20  NTEGRITY_CHECK} 
b0b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b0c0: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
b0d0: 72 20 74 68 65 20 5b 69 6e 74 65 67 72 69 74 79  r the [integrity
b0e0: 5f 63 68 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a  _check pragma]..
b0f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
b100: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
b110: 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  IKE_OPTIMIZATION
b120: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
b130: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61  n disables the a
b140: 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65  bility of SQLite
b150: 20 74 6f 20 75 73 65 20 69 6e 64 69 63 65 73 20   to use indices 
b160: 74 6f 20 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76  to help.  resolv
b170: 65 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c  e [LIKE] and [GL
b180: 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73 20 69 6e  OB] operators in
b190: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2e   a WHERE clause.
b1a0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
b1b0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
b1c0: 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20  LOAD_EXTENSION} 
b1d0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
b1e0: 6f 6d 69 74 73 20 74 68 65 20 65 6e 74 69 72 65  omits the entire
b1f0: 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69   extension loadi
b200: 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f  ng mechanism fro
b210: 6d 0a 20 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c  m.  SQLite, incl
b220: 75 64 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65  uding [sqlite3_e
b230: 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
b240: 73 69 6f 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73  sion()] and.  [s
b250: 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
b260: 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  nsion()] interfa
b270: 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ces..}..COMPILE_
b280: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
b290: 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b  MIT_LOCALTIME} {
b2a0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
b2b0: 6d 69 74 73 20 74 68 65 20 22 6c 6f 63 61 6c 74  mits the "localt
b2c0: 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 66 72  ime" modifier fr
b2d0: 6f 6d 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  om the date and 
b2e0: 74 69 6d 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73  time.  functions
b2f0: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  .  This option i
b300: 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66  s sometimes usef
b310: 75 6c 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74  ul when trying t
b320: 6f 20 63 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20  o compile.  the 
b330: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
b340: 6e 63 74 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61  nctions on a pla
b350: 74 66 6f 72 6d 20 74 68 61 74 20 64 6f 65 73 20  tform that does 
b360: 6e 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65 0a  not support the.
b370: 20 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63    concept of loc
b380: 61 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50  al time..}..COMP
b390: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
b3a0: 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44  TE_OMIT_LOOKASID
b3b0: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
b3c0: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 5b 6c 6f  on omits the [lo
b3d0: 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61  okaside memory a
b3e0: 6c 6c 6f 63 61 74 6f 72 5d 2e 0a 7d 0a 0a 43 4f  llocator]..}..CO
b3f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
b400: 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59  LITE_OMIT_MEMORY
b410: 44 42 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69  DB} {.  When thi
b420: 73 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  s is defined, th
b430: 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e  e library does n
b440: 6f 74 20 72 65 73 70 65 63 74 20 74 68 65 20 73  ot respect the s
b450: 70 65 63 69 61 6c 20 64 61 74 61 62 61 73 65 0a  pecial database.
b460: 20 20 6e 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a    name ":memory:
b470: 22 20 28 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64  " (normally used
b480: 20 74 6f 20 63 72 65 61 74 65 20 61 6e 20 5b 69   to create an [i
b490: 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
b4a0: 65 5d 29 2e 20 49 66 20 0a 20 20 22 3a 6d 65 6d  e]). If .  ":mem
b4b0: 6f 72 79 3a 22 20 69 73 20 70 61 73 73 65 64 20  ory:" is passed 
b4c0: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  to [sqlite3_open
b4d0: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
b4e0: 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 20 20 5b 73  en16()], or.  [s
b4f0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
b500: 5d 2c 20 61 20 66 69 6c 65 20 77 69 74 68 20 74  ], a file with t
b510: 68 69 73 20 6e 61 6d 65 20 77 69 6c 6c 20 62 65  his name will be
b520: 20 0a 20 20 6f 70 65 6e 65 64 20 6f 72 20 63 72   .  opened or cr
b530: 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  eated..}..COMPIL
b540: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b550: 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a  _OMIT_OR_OPTIMIZ
b560: 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73 20  ATION} {.  This 
b570: 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20  option disables 
b580: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 53  the ability of S
b590: 51 4c 69 74 65 20 74 6f 20 75 73 65 20 61 6e 20  QLite to use an 
b5a0: 69 6e 64 65 78 20 74 6f 67 65 74 68 65 72 0a 20  index together. 
b5b0: 20 77 69 74 68 20 74 65 72 6d 73 20 6f 66 20 61   with terms of a
b5c0: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f   WHERE clause co
b5d0: 6e 6e 65 63 74 65 64 20 62 79 20 74 68 65 20 4f  nnected by the O
b5e0: 52 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43  R operator..}..C
b5f0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
b600: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52  QLITE_OMIT_PAGER
b610: 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65  _PRAGMAS} {.  De
b620: 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69  fining this opti
b630: 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73  on omits pragmas
b640: 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20   related to the 
b650: 70 61 67 65 72 20 73 75 62 73 79 73 74 65 6d 20  pager subsystem 
b660: 66 72 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c  from .  the buil
b670: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
b680: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
b690: 54 5f 50 52 41 47 4d 41 7d 20 7b 0a 20 20 54 68  T_PRAGMA} {.  Th
b6a0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
b6b0: 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 5b 50  d to omit the [P
b6c0: 52 41 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 0a 20  RAGMA] command. 
b6d0: 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72   from the librar
b6e0: 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20  y. Note that it 
b6f0: 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66  is useful to def
b700: 69 6e 65 20 74 68 65 20 6d 61 63 72 6f 73 20 74  ine the macros t
b710: 68 61 74 20 6f 6d 69 74 0a 20 20 73 70 65 63 69  hat omit.  speci
b720: 66 69 63 20 70 72 61 67 6d 61 73 20 69 6e 20 61  fic pragmas in a
b730: 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 69 73 2c  ddition to this,
b740: 20 61 73 20 74 68 65 79 20 6d 61 79 20 61 6c 73   as they may als
b750: 6f 20 72 65 6d 6f 76 65 20 73 75 70 70 6f 72 74  o remove support
b760: 69 6e 67 20 63 6f 64 65 0a 20 20 69 6e 20 6f 74  ing code.  in ot
b770: 68 65 72 20 73 75 62 2d 73 79 73 74 65 6d 73 2e  her sub-systems.
b780: 20 54 68 69 73 20 6d 61 63 72 6f 20 72 65 6d 6f   This macro remo
b790: 76 65 73 20 74 68 65 20 5b 50 52 41 47 4d 41 5d  ves the [PRAGMA]
b7a0: 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 2e 0a 7d   command only..}
b7b0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
b7c0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52   {SQLITE_OMIT_PR
b7d0: 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 7d  OGRESS_CALLBACK}
b7e0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
b7f0: 20 6d 61 79 20 62 65 20 64 65 66 69 6e 65 64 20   may be defined 
b800: 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 61 70 61  to omit the capa
b810: 62 69 6c 69 74 79 20 74 6f 20 69 73 73 75 65 20  bility to issue 
b820: 22 70 72 6f 67 72 65 73 73 22 20 0a 20 20 63 61  "progress" .  ca
b830: 6c 6c 62 61 63 6b 73 20 64 75 72 69 6e 67 20 6c  llbacks during l
b840: 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 53 51 4c 20  ong-running SQL 
b850: 73 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 20  statements. The 
b860: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 67  .  [sqlite3_prog
b870: 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 29 5d 0a  ress_handler()].
b880: 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69    API function i
b890: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 69 6e  s not present in
b8a0: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a   the library..}.
b8b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
b8c0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49  {SQLITE_OMIT_QUI
b8d0: 43 4b 42 41 4c 41 4e 43 45 7d 20 7b 0a 20 20 54  CKBALANCE} {.  T
b8e0: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
b8f0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 2c   an alternative,
b900: 20 66 61 73 74 65 72 20 42 2d 54 72 65 65 20 62   faster B-Tree b
b910: 61 6c 61 6e 63 69 6e 67 20 72 6f 75 74 69 6e 65  alancing routine
b920: 2e 0a 20 20 55 73 69 6e 67 20 74 68 69 73 20 6f  ..  Using this o
b930: 70 74 69 6f 6e 20 6d 61 6b 65 73 20 53 51 4c 69  ption makes SQLi
b940: 74 65 20 73 6c 69 67 68 74 6c 79 20 73 6d 61 6c  te slightly smal
b950: 6c 65 72 20 61 74 20 74 68 65 20 65 78 70 65 6e  ler at the expen
b960: 73 65 20 6f 66 0a 20 20 6d 61 6b 69 6e 67 20 69  se of.  making i
b970: 74 20 72 75 6e 20 73 6c 69 67 68 74 6c 79 20 73  t run slightly s
b980: 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lower..}..COMPIL
b990: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
b9a0: 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58 7d 20 7b  _OMIT_REINDEX} {
b9b0: 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74  .  When this opt
b9c0: 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20  ion is defined, 
b9d0: 74 68 65 20 5b 52 45 49 4e 44 45 58 5d 0a 20 20  the [REINDEX].  
b9e0: 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69  command is not i
b9f0: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6c  ncluded in the l
ba00: 69 62 72 61 72 79 2e 0a 20 20 45 78 65 63 75 74  ibrary..  Execut
ba10: 69 6e 67 20 61 20 5b 52 45 49 4e 44 45 58 5d 20  ing a [REINDEX] 
ba20: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73  statement causes
ba30: 20 0a 20 20 61 20 70 61 72 73 65 20 65 72 72 6f   .  a parse erro
ba40: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
ba50: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
ba60: 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53  T_SCHEMA_PRAGMAS
ba70: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
ba80: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
ba90: 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71 75 65   pragmas for que
baa0: 72 79 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  rying the databa
bab0: 73 65 20 73 63 68 65 6d 61 20 66 72 6f 6d 20 0a  se schema from .
bac0: 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a    the build..}..
bad0: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
bae0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45  SQLITE_OMIT_SCHE
baf0: 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d  MA_VERSION_PRAGM
bb00: 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  AS} {.  Defining
bb10: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
bb20: 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72 20 71  ts pragmas for q
bb30: 75 65 72 79 69 6e 67 20 61 6e 64 20 6d 6f 64 69  uerying and modi
bb40: 66 79 69 6e 67 20 74 68 65 20 0a 20 20 64 61 74  fying the .  dat
bb50: 61 62 61 73 65 20 73 63 68 65 6d 61 20 76 65 72  abase schema ver
bb60: 73 69 6f 6e 20 61 6e 64 20 75 73 65 72 20 76 65  sion and user ve
bb70: 72 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 62  rsion from the b
bb80: 75 69 6c 64 2e 20 53 70 65 63 69 66 69 63 61 6c  uild. Specifical
bb90: 6c 79 2c 20 74 68 65 20 0a 20 20 5b 73 63 68 65  ly, the .  [sche
bba0: 6d 61 5f 76 65 72 73 69 6f 6e 5d 20 61 6e 64 20  ma_version] and 
bbb0: 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e 5d 20 50  [user_version] P
bbc0: 52 41 47 4d 41 73 20 61 72 65 20 6f 6d 69 74 74  RAGMAs are omitt
bbd0: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
bbe0: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
bbf0: 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45 7d  IT_SHARED_CACHE}
bc00: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
bc10: 20 62 75 69 6c 64 73 20 53 51 4c 69 74 65 20 77   builds SQLite w
bc20: 69 74 68 6f 75 74 20 73 75 70 70 6f 72 74 20 66  ithout support f
bc30: 6f 72 20 73 68 61 72 65 64 2d 63 61 63 68 65 20  or shared-cache 
bc40: 6d 6f 64 65 2e 0a 20 20 54 68 65 20 5b 73 71 6c  mode..  The [sql
bc50: 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72  ite3_enable_shar
bc60: 65 64 5f 63 61 63 68 65 28 29 5d 20 69 73 20 6f  ed_cache()] is o
bc70: 6d 69 74 74 65 64 20 61 6c 6f 6e 67 20 77 69 74  mitted along wit
bc80: 68 20 61 20 66 61 69 72 0a 20 20 61 6d 6f 75 6e  h a fair.  amoun
bc90: 74 20 6f 66 20 6c 6f 67 69 63 20 77 69 74 68 69  t of logic withi
bca0: 6e 20 74 68 65 20 42 2d 54 72 65 65 20 73 75 62  n the B-Tree sub
bcb0: 73 79 73 74 65 6d 20 61 73 73 6f 63 69 61 74 65  system associate
bcc0: 64 20 77 69 74 68 20 73 68 61 72 65 64 0a 20 20  d with shared.  
bcd0: 63 61 63 68 65 20 6d 61 6e 61 67 65 6d 65 6e 74  cache management
bce0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
bcf0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
bd00: 5f 53 55 42 51 55 45 52 59 7d 20 7b 0a 20 20 49  _SUBQUERY} {.  I
bd10: 66 20 64 65 66 69 6e 65 64 2c 20 73 75 70 70 6f  f defined, suppo
bd20: 72 74 20 66 6f 72 20 73 75 62 2d 73 65 6c 65 63  rt for sub-selec
bd30: 74 73 20 61 6e 64 20 74 68 65 20 49 4e 28 29 20  ts and the IN() 
bd40: 6f 70 65 72 61 74 6f 72 20 61 72 65 20 6f 6d 69  operator are omi
bd50: 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  tted..}..COMPILE
bd60: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bd70: 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c  OMIT_TCL_VARIABL
bd80: 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6d  E} {.  If this m
bd90: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2c  acro is defined,
bda0: 20 74 68 65 6e 20 74 68 65 20 73 70 65 63 69 61   then the specia
bdb0: 6c 20 22 24 3c 76 61 72 69 61 62 6c 65 2d 6e 61  l "$<variable-na
bdc0: 6d 65 3e 22 20 73 79 6e 74 61 78 0a 20 20 75 73  me>" syntax.  us
bdd0: 65 64 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  ed to automatica
bde0: 6c 6c 79 20 62 69 6e 64 20 53 51 4c 20 76 61 72  lly bind SQL var
bdf0: 69 61 62 6c 65 73 20 74 6f 20 54 43 4c 20 76 61  iables to TCL va
be00: 72 69 61 62 6c 65 73 20 69 73 20 6f 6d 69 74 74  riables is omitt
be10: 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ed..}..COMPILE_O
be20: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
be30: 49 54 5f 54 45 4d 50 44 42 7d 20 7b 0a 20 20 54  IT_TEMPDB} {.  T
be40: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
be50: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 54 45 4d   support for TEM
be60: 50 20 6f 72 20 54 45 4d 50 4f 52 41 52 59 20 74  P or TEMPORARY t
be70: 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  ables..}..COMPIL
be80: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
be90: 5f 4f 4d 49 54 5f 54 52 41 43 45 7d 20 7b 0a 20  _OMIT_TRACE} {. 
bea0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   This option omi
beb0: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74  ts support for t
bec0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66  he [sqlite3_prof
bed0: 69 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  ile()] and.  [sq
bee0: 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 69  lite3_trace()] i
bef0: 6e 74 65 72 66 61 63 65 73 20 61 6e 64 20 74 68  nterfaces and th
bf00: 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 6c  eir associated l
bf10: 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ogic..}..COMPILE
bf20: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
bf30: 4f 4d 49 54 5f 54 52 49 47 47 45 52 7d 20 7b 0a  OMIT_TRIGGER} {.
bf40: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
bf50: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70  option omits sup
bf60: 70 6f 72 74 20 66 6f 72 20 54 52 49 47 47 45 52  port for TRIGGER
bf70: 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
bf80: 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
bf90: 20 54 52 49 47 47 45 52 5d 20 6f 72 20 5b 44 52   TRIGGER] or [DR
bfa0: 4f 50 20 54 52 49 47 47 45 52 5d 0a 20 20 63 6f  OP TRIGGER].  co
bfb0: 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c  mmands are avail
bfc0: 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73  able in this cas
bfd0: 65 2c 20 61 6e 64 20 61 74 74 65 6d 70 74 69 6e  e, and attemptin
bfe0: 67 20 74 6f 20 65 78 65 63 75 74 65 0a 20 20 65  g to execute.  e
bff0: 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c  ither will resul
c000: 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72  t in a parse err
c010: 6f 72 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  or..  This optio
c020: 6e 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 73 20  n also disables 
c030: 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b  enforcement of [
c040: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
c050: 74 72 61 69 6e 74 73 5d 2c 0a 20 20 73 69 6e 63  traints],.  sinc
c060: 65 20 74 68 65 20 63 6f 64 65 20 74 68 61 74 20  e the code that 
c070: 69 6d 70 6c 65 6d 65 6e 74 73 20 74 72 69 67 67  implements trigg
c080: 65 72 73 20 61 6e 64 20 77 68 69 63 68 20 69 73  ers and which is
c090: 20 6f 6d 69 74 74 65 64 20 62 79 20 74 68 69 73   omitted by this
c0a0: 0a 20 20 6f 70 74 69 6f 6e 20 69 73 20 61 6c 73  .  option is als
c0b0: 6f 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  o used to implem
c0c0: 65 6e 74 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79  ent [foreign key
c0d0: 20 61 63 74 69 6f 6e 73 5d 2e 0a 7d 0a 0a 43 4f   actions]..}..CO
c0e0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
c0f0: 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41  LITE_OMIT_TRUNCA
c100: 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d  TE_OPTIMIZATION}
c110: 20 7b 0a 20 20 41 20 64 65 66 61 75 6c 74 20 62   {.  A default b
c120: 75 69 6c 64 20 6f 66 20 53 51 4c 69 74 65 2c 20  uild of SQLite, 
c130: 69 66 20 61 20 5b 44 45 4c 45 54 45 5d 20 73 74  if a [DELETE] st
c140: 61 74 65 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57  atement has no W
c150: 48 45 52 45 20 63 6c 61 75 73 65 0a 20 20 61 6e  HERE clause.  an
c160: 64 20 6f 70 65 72 61 74 65 73 20 6f 6e 20 61 20  d operates on a 
c170: 74 61 62 6c 65 20 77 69 74 68 20 6e 6f 20 74 72  table with no tr
c180: 69 67 67 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d  iggers, an optim
c190: 69 7a 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 74  ization occurs t
c1a0: 68 61 74 0a 20 20 63 61 75 73 65 73 20 74 68 65  hat.  causes the
c1b0: 20 44 45 4c 45 54 45 20 74 6f 20 6f 63 63 75 72   DELETE to occur
c1c0: 20 62 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64   by dropping and
c1d0: 20 72 65 63 72 65 61 74 69 6e 67 20 74 68 65 20   recreating the 
c1e0: 74 61 62 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70  table.  .  Dropp
c1f0: 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69  ing and recreati
c200: 6e 67 20 61 20 74 61 62 6c 65 20 69 73 20 75 73  ng a table is us
c210: 75 61 6c 6c 79 20 6d 75 63 68 20 66 61 73 74 65  ually much faste
c220: 72 20 74 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a  r than deleting.
c230: 20 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6e 74    the table cont
c240: 65 6e 74 20 72 6f 77 20 62 79 20 72 6f 77 2e 20  ent row by row. 
c250: 20 54 68 69 73 20 69 73 20 74 68 65 20 22 74 72   This is the "tr
c260: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
c270: 69 6f 6e 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ion"..}..COMPILE
c280: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c290: 4f 4d 49 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20  OMIT_UTF16} {.  
c2a0: 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75 73  This macro is us
c2b0: 65 64 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f  ed to omit suppo
c2c0: 72 74 20 66 6f 72 20 55 54 46 31 36 20 74 65 78  rt for UTF16 tex
c2d0: 74 20 65 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e  t encoding. When
c2e0: 20 74 68 69 73 20 69 73 0a 20 20 64 65 66 69 6e   this is.  defin
c2f0: 65 64 20 61 6c 6c 20 41 50 49 20 66 75 6e 63 74  ed all API funct
c300: 69 6f 6e 73 20 74 68 61 74 20 72 65 74 75 72 6e  ions that return
c310: 20 6f 72 20 61 63 63 65 70 74 20 55 54 46 31 36   or accept UTF16
c320: 20 65 6e 63 6f 64 65 64 20 74 65 78 74 20 61 72   encoded text ar
c330: 65 0a 20 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e  e.  unavailable.
c340: 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
c350: 20 63 61 6e 20 62 65 20 69 64 65 6e 74 69 66 69   can be identifi
c360: 65 64 20 62 79 20 74 68 65 20 66 61 63 74 20 74  ed by the fact t
c370: 68 61 74 20 74 68 65 79 20 65 6e 64 0a 20 20 77  hat they end.  w
c380: 69 74 68 20 27 31 36 27 2c 20 66 6f 72 20 65 78  ith '16', for ex
c390: 61 6d 70 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70  ample [sqlite3_p
c3a0: 72 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71  repare16()], [sq
c3b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
c3c0: 74 31 36 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  t16()] and.  [sq
c3d0: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
c3e0: 36 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  6()]..}..COMPILE
c3f0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c400: 4f 4d 49 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20  OMIT_VACUUM} {. 
c410: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
c420: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
c430: 65 20 5b 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d  e [VACUUM].  com
c440: 6d 61 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c  mand is not incl
c450: 75 64 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72  uded in the libr
c460: 61 72 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67  ary..  Executing
c470: 20 61 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74   a [VACUUM] stat
c480: 65 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20  ement causes .  
c490: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d  a parse error..}
c4a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c4b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49   {SQLITE_OMIT_VI
c4c0: 45 57 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67  EW} {.  Defining
c4d0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69   this option omi
c4e0: 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56  ts support for V
c4f0: 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69  IEW objects. Nei
c500: 74 68 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45  ther the .  [CRE
c510: 41 54 45 20 56 49 45 57 5d 20 6e 6f 72 20 74 68  ATE VIEW] nor th
c520: 65 20 5b 44 52 4f 50 20 56 49 45 57 5d 0a 20 20  e [DROP VIEW].  
c530: 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61  commands are ava
c540: 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63  ilable in this c
c550: 61 73 65 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d  ase, and.  attem
c560: 70 74 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65  pting to execute
c570: 20 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73   either will res
c580: 75 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65  ult in a parse e
c590: 72 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47  rror...  WARNING
c5a0: 3a 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20  : If this macro 
c5b0: 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77  is defined, it w
c5c0: 69 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69  ill not be possi
c5d0: 62 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61  ble to open a da
c5e0: 74 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69  tabase.  for whi
c5f0: 63 68 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f  ch the schema co
c600: 6e 74 61 69 6e 73 20 56 49 45 57 20 6f 62 6a 65  ntains VIEW obje
c610: 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  cts. .}..COMPILE
c620: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
c630: 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c  OMIT_VIRTUALTABL
c640: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
c650: 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74  on omits support
c660: 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65   for the [sqlite
c670: 33 5f 76 74 61 62 20 7c 20 56 69 72 74 75 61 6c  3_vtab | Virtual
c680: 20 54 61 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e   Table].  mechan
c690: 69 73 6d 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d  ism in SQLite..}
c6a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
c6b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41   {SQLITE_OMIT_WA
c6c0: 4c 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  L} {.  This opti
c6d0: 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 22 5b 77  on omits the "[w
c6e0: 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 5d 22  rite-ahead log]"
c6f0: 20 28 61 2e 6b 2e 61 2e 20 22 5b 57 41 4c 5d 22   (a.k.a. "[WAL]"
c700: 29 20 63 61 70 61 62 69 6c 69 74 79 2e 0a 7d 0a  ) capability..}.
c710: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
c720: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44  {SQLITE_OMIT_WSD
c730: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
c740: 6e 20 62 75 69 6c 64 73 20 61 20 76 65 72 73 69  n builds a versi
c750: 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  on of the SQLite
c760: 20 6c 69 62 72 61 72 79 20 74 68 61 74 20 63 6f   library that co
c770: 6e 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74  ntains no.  Writ
c780: 61 62 6c 65 20 53 74 61 74 69 63 20 44 61 74 61  able Static Data
c790: 20 28 57 53 44 29 2e 20 20 57 53 44 20 69 73 20   (WSD).  WSD is 
c7a0: 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73  global variables
c7b0: 20 61 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a 20   and/or static. 
c7c0: 20 76 61 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d   variables.  Som
c7d0: 65 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e  e platforms do n
c7e0: 6f 74 20 73 75 70 70 6f 72 74 20 57 53 44 2c 20  ot support WSD, 
c7f0: 61 6e 64 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  and this option 
c800: 69 73 20 6e 65 63 65 73 73 61 72 79 0a 20 20 69  is necessary.  i
c810: 6e 20 6f 72 64 65 72 20 66 6f 72 20 53 51 4c 69  n order for SQLi
c820: 74 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65  te to work those
c830: 20 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20   platforms.  .. 
c840: 20 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d   Unlike other OM
c850: 49 54 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68  IT options which
c860: 20 6d 61 6b 65 20 74 68 65 20 53 51 4c 69 74 65   make the SQLite
c870: 20 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c 65 72   library smaller
c880: 2c 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ,.  this option 
c890: 61 63 74 75 61 6c 6c 79 20 69 6e 63 72 65 61 73  actually increas
c8a0: 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 53  es the size of S
c8b0: 51 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65 73 20  QLite and makes 
c8c0: 69 74 20 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c  it run.  a littl
c8d0: 65 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20  e slower.  Only 
c8e0: 75 73 65 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  use this option 
c8f0: 69 66 20 53 51 4c 69 74 65 20 69 73 20 62 65 69  if SQLite is bei
c900: 6e 67 20 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a  ng built for an.
c910: 20 20 65 6d 62 65 64 64 65 64 20 74 61 72 67 65    embedded targe
c920: 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  t that does not 
c930: 73 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a  support WSD..}..
c940: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
c950: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52  SQLITE_OMIT_XFER
c960: 5f 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  _OPT} {.  This o
c970: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
c980: 6f 72 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61  ort for optimiza
c990: 74 69 6f 6e 73 20 74 68 61 74 20 68 65 6c 70 20  tions that help 
c9a0: 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20  statements.  of 
c9b0: 74 68 65 20 66 6f 72 6d 20 22 49 4e 53 45 52 54  the form "INSERT
c9c0: 20 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54   INTO ... SELECT
c9d0: 20 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74 65 72   ..." run faster
c9e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
c9f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f  ION {SQLITE_ZERO
ca00: 5f 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69  _MALLOC} {.  Thi
ca10: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62  s option omits b
ca20: 6f 74 68 20 74 68 65 20 5b 64 65 66 61 75 6c 74  oth the [default
ca30: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
ca40: 72 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b 64 65  r] and the.  [de
ca50: 62 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61  bugging memory a
ca60: 6c 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74  llocator] from t
ca70: 68 65 20 62 75 69 6c 64 20 61 6e 64 20 73 75 62  he build and sub
ca80: 73 74 69 74 75 74 65 73 20 61 20 73 74 75 62 0a  stitutes a stub.
ca90: 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    memory allocat
caa0: 6f 72 20 74 68 61 74 20 61 6c 77 61 79 73 20 66  or that always f
cab0: 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 77 69  ails.  SQLite wi
cac0: 6c 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74 68 20  ll not run with 
cad0: 74 68 69 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f  this.  stub memo
cae0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e  ry allocator sin
caf0: 63 65 20 69 74 20 77 69 6c 6c 20 62 65 20 75 6e  ce it will be un
cb00: 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65  able to allocate
cb10: 20 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20   memory.  But.  
cb20: 74 68 69 73 20 73 74 75 62 20 63 61 6e 20 62 65  this stub can be
cb30: 20 72 65 70 6c 61 63 65 64 20 61 74 20 73 74 61   replaced at sta
cb40: 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20  rt-time using.  
cb50: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d  [sqlite3_config]
cb60: 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ([SQLITE_CONFIG_
cb70: 4d 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a  MALLOC],...) or.
cb80: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69    [sqlite3_confi
cb90: 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  g]([SQLITE_CONFI
cba0: 47 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20  G_HEAP],...)..  
cbb0: 53 6f 20 74 68 65 20 6e 65 74 20 65 66 66 65 63  So the net effec
cbc0: 74 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c  t of this compil
cbd0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
cbe0: 20 74 68 61 74 20 69 74 20 61 6c 6c 6f 77 73 20   that it allows 
cbf0: 53 51 4c 69 74 65 0a 20 20 74 6f 20 62 65 20 63  SQLite.  to be c
cc00: 6f 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b  ompiled and link
cc10: 65 64 20 61 67 61 69 6e 73 74 20 61 20 73 79 73  ed against a sys
cc20: 74 65 6d 20 6c 69 62 72 61 72 79 20 74 68 61 74  tem library that
cc30: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
cc40: 74 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72  t.  malloc(), fr
cc50: 65 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61  ee(), and/or rea
cc60: 6c 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c  lloc()..}..</tcl
cc70: 3e 0a 3c 61 20 6e 61 6d 65 3d 22 64 65 62 75 67  >.<a name="debug
cc80: 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 68  options"></a>.<h
cc90: 32 3e 31 2e 37 20 41 6e 61 6c 79 73 69 73 20 61  2>1.7 Analysis a
cca0: 6e 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74  nd Debugging Opt
ccb0: 69 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a  ions</h2>.<tcl>.
ccc0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
ccd0: 7b 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b  {SQLITE_DEBUG} {
cce0: 0a 20 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f  .  The SQLite so
ccf0: 75 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69  urce code contai
cd00: 6e 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f  ns literally tho
cd10: 75 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74  usands of assert
cd20: 28 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20  () statements.  
cd30: 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 69  used to verify i
cd40: 6e 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69  nternal assumpti
cd50: 6f 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69  ons and subrouti
cd60: 6e 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73  ne preconditions
cd70: 20 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69   and.  postcondi
cd80: 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73  tions.  These as
cd90: 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74  sert() statement
cda0: 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74  s are normally t
cdb0: 75 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65  urned off.  (the
cdc0: 79 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f  y generate no co
cdd0: 64 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e  de) since turnin
cde0: 67 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20  g them on makes 
cdf0: 53 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f  SQLite run appro
ce00: 78 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65  ximately.  three
ce10: 20 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20   times slower.  
ce20: 42 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20  But for testing 
ce30: 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74  and analysis, it
ce40: 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75   is useful to tu
ce50: 72 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74 28  rn.  the assert(
ce60: 29 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e  ) statements on.
ce70: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42    The SQLITE_DEB
ce80: 55 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  UG compile-time 
ce90: 6f 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73  option does this
cea0: 2e 0a 20 20 3c 70 3e 53 51 4c 49 54 45 5f 44 45  ..  <p>SQLITE_DE
ceb0: 42 55 47 20 61 6c 73 6f 20 65 6e 61 62 6c 65 73  BUG also enables
cec0: 20 73 6f 6d 65 20 6f 74 68 65 72 20 64 65 62 75   some other debu
ced0: 67 67 69 6e 67 20 66 65 61 74 75 72 65 73 2c 20  gging features, 
cee0: 73 75 63 68 20 61 73 0a 20 20 73 70 65 63 69 61  such as.  specia
cef0: 6c 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65  l [PRAGMA] state
cf00: 6d 65 6e 74 73 20 74 68 61 74 20 74 75 72 6e 20  ments that turn 
cf10: 6f 6e 20 74 72 61 63 69 6e 67 20 61 6e 64 20 6c  on tracing and l
cf20: 69 73 74 69 6e 67 20 66 65 61 74 75 72 65 73 0a  isting features.
cf30: 20 20 75 73 65 64 20 66 6f 72 20 74 72 6f 75 62    used for troub
cf40: 6c 65 73 68 6f 6f 74 69 6e 67 20 61 6e 64 20 61  leshooting and a
cf50: 6e 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20 5b  nalysis of the [
cf60: 56 44 42 45 5d 20 61 6e 64 20 63 6f 64 65 20 67  VDBE] and code g
cf70: 65 6e 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d  enerator..}..COM
cf80: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
cf90: 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d 20 7b 0a  ITE_MEMDEBUG} {.
cfa0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 45 4d    The SQLITE_MEM
cfb0: 44 45 42 55 47 20 6f 70 74 69 6f 6e 20 63 61 75  DEBUG option cau
cfc0: 73 65 73 20 61 6e 20 69 6e 73 74 72 75 6d 65 6e  ses an instrumen
cfd0: 74 65 64 20 0a 20 20 5b 64 65 62 75 67 67 69 6e  ted .  [debuggin
cfe0: 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  g memory allocat
cff0: 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75 73 65 64  or].  to be used
d000: 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   as the default 
d010: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
d020: 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 2e 20   within SQLite. 
d030: 20 54 68 65 0a 20 20 69 6e 73 74 72 75 6d 65 6e   The.  instrumen
d040: 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ted memory alloc
d050: 61 74 6f 72 20 63 68 65 63 6b 73 20 66 6f 72 20  ator checks for 
d060: 6d 69 73 75 73 65 20 6f 66 20 64 79 6e 61 6d 69  misuse of dynami
d070: 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 0a  cally allocated.
d080: 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78 61 6d 70    memory.  Examp
d090: 6c 65 73 20 6f 66 20 6d 69 73 75 73 65 20 69 6e  les of misuse in
d0a0: 63 6c 75 64 65 20 75 73 69 6e 67 20 6d 65 6d 6f  clude using memo
d0b0: 72 79 20 61 66 74 65 72 20 69 74 20 69 73 20 66  ry after it is f
d0c0: 72 65 65 64 2c 0a 20 20 77 72 69 74 69 6e 67 20  reed,.  writing 
d0d0: 6f 66 66 20 74 68 65 20 65 6e 64 73 20 6f 66 20  off the ends of 
d0e0: 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
d0f0: 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20 6d 65 6d  ion, freeing mem
d100: 6f 72 79 20 6e 6f 74 20 70 72 65 76 69 6f 75 73  ory not previous
d110: 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64 20 66 72  ly.  obtained fr
d120: 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  om the memory al
d130: 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66 61 69 6c  locator, or fail
d140: 69 6e 67 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  ing to initializ
d150: 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c 6f 63 61  e newly.  alloca
d160: 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d 0a 0a 3c  ted memory..}..<
d170: 2f 74 63 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 77  /tcl>.<a name="w
d180: 69 6e 33 32 6f 70 74 69 6f 6e 73 22 3e 3c 2f 61  in32options"></a
d190: 3e 0a 3c 68 32 3e 31 2e 38 20 57 69 6e 64 6f 77  >.<h2>1.8 Window
d1a0: 73 2d 53 70 65 63 69 66 69 63 20 4f 70 74 69 6f  s-Specific Optio
d1b0: 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a 43  ns</h2>.<tcl>..C
d1c0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d1d0: 51 4c 49 54 45 5f 57 49 4e 33 32 5f 48 45 41 50  QLITE_WIN32_HEAP
d1e0: 5f 43 52 45 41 54 45 7d 20 7b 0a 20 20 54 68 69  _CREATE} {.  Thi
d1f0: 73 20 6f 70 74 69 6f 6e 20 66 6f 72 63 65 73 20  s option forces 
d200: 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
d210: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
d220: 72 2c 20 77 68 65 6e 20 65 6e 61 62 6c 65 64 2c  r, when enabled,
d230: 20 74 6f 0a 20 20 63 72 65 61 74 65 20 61 20 70   to.  create a p
d240: 72 69 76 61 74 65 20 68 65 61 70 20 74 6f 20 68  rivate heap to h
d250: 6f 6c 64 20 61 6c 6c 20 6d 65 6d 6f 72 79 20 61  old all memory a
d260: 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 7d 0a 0a 43  llocations..}..C
d270: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
d280: 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c  QLITE_WIN32_MALL
d290: 4f 43 5f 56 41 4c 49 44 41 54 45 7d 20 7b 0a 20  OC_VALIDATE} {. 
d2a0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 66 6f 72   This option for
d2b0: 63 65 73 20 74 68 65 20 57 69 6e 33 32 20 6e 61  ces the Win32 na
d2c0: 74 69 76 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  tive memory allo
d2d0: 63 61 74 6f 72 2c 20 77 68 65 6e 20 65 6e 61 62  cator, when enab
d2e0: 6c 65 64 2c 20 74 6f 0a 20 20 6d 61 6b 65 20 73  led, to.  make s
d2f0: 74 72 61 74 65 67 69 63 20 63 61 6c 6c 73 20 69  trategic calls i
d300: 6e 74 6f 20 74 68 65 20 48 65 61 70 56 61 6c 69  nto the HeapVali
d310: 64 61 74 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  date() function 
d320: 69 66 20 61 73 73 65 72 74 28 29 20 69 73 20 61  if assert() is a
d330: 6c 73 6f 0a 20 20 65 6e 61 62 6c 65 64 2e 0a 7d  lso.  enabled..}
d340: 0a 0a 3c 2f 74 63 6c 3e 0a                       ..</tcl>.