Documentation Source Text

Hex Artifact Content
Login

Artifact 35785b1e78e94c09518be0b2b1453786a7be93bc:


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 0a 3c  QLite</title>..<
0030: 68 31 3e 31 2e 30 20 43 6f 6d 70 69 6c 61 74 69  h1>1.0 Compilati
0040: 6f 6e 20 4f 70 74 69 6f 6e 73 20 46 6f 72 20 53  on Options For S
0050: 51 4c 69 74 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a  QLite</h1>..<p>.
0060: 46 6f 72 20 6d 6f 73 74 20 70 75 72 70 6f 73 65  For most purpose
0070: 73 2c 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65  s, SQLite can be
0080: 20 62 75 69 6c 74 20 6a 75 73 74 20 66 69 6e 65   built just fine
0090: 20 75 73 69 6e 67 20 74 68 65 20 64 65 66 61 75   using the defau
00a0: 6c 74 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f  lt.compilation o
00b0: 70 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c  ptions. However,
00c0: 20 69 66 20 72 65 71 75 69 72 65 64 2c 20 74 68   if required, th
00d0: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
00e0: 70 74 69 6f 6e 73 0a 64 6f 63 75 6d 65 6e 74 65  ptions.documente
00f0: 64 20 62 65 6c 6f 77 20 63 61 6e 20 62 65 20 75  d below can be u
0100: 73 65 64 20 74 6f 20 0a 3c 61 20 68 72 65 66 3d  sed to .<a href=
0110: 22 23 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e  "#omitfeatures">
0120: 6f 6d 69 74 20 53 51 4c 69 74 65 20 66 65 61 74  omit SQLite feat
0130: 75 72 65 73 3c 2f 61 3e 20 28 72 65 73 75 6c 74  ures</a> (result
0140: 69 6e 67 20 69 6e 0a 61 20 73 6d 61 6c 6c 65 72  ing in.a smaller
0150: 20 63 6f 6d 70 69 6c 65 64 20 6c 69 62 72 61 72   compiled librar
0160: 79 20 73 69 7a 65 29 20 6f 72 20 74 6f 20 63 68  y size) or to ch
0170: 61 6e 67 65 20 74 68 65 0a 3c 61 20 68 72 65 66  ange the.<a href
0180: 3d 22 23 64 65 66 61 75 6c 74 73 22 3e 64 65 66  ="#defaults">def
0190: 61 75 6c 74 20 76 61 6c 75 65 73 3c 2f 61 3e 20  ault values</a> 
01a0: 6f 66 20 73 6f 6d 65 20 70 61 72 61 6d 65 74 65  of some paramete
01b0: 72 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 76  rs..</p>..<p>.Ev
01c0: 65 72 79 20 65 66 66 6f 72 74 20 68 61 73 20 62  ery effort has b
01d0: 65 65 6e 20 6d 61 64 65 20 74 6f 20 65 6e 73 75  een made to ensu
01e0: 72 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69  re that the vari
01f0: 6f 75 73 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73  ous combinations
0200: 0a 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  .of compilation 
0210: 6f 70 74 69 6f 6e 73 20 77 6f 72 6b 20 68 61 72  options work har
0220: 6d 6f 6e 69 6f 75 73 6c 79 20 61 6e 64 20 70 72  moniously and pr
0230: 6f 64 75 63 65 20 61 20 77 6f 72 6b 69 6e 67 20  oduce a working 
0240: 6c 69 62 72 61 72 79 2e 0a 4e 65 76 65 72 74 68  library..Neverth
0250: 65 6c 65 73 73 2c 20 69 74 20 69 73 20 73 74 72  eless, it is str
0260: 6f 6e 67 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65  ongly recommende
0270: 64 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74  d that the SQLit
0280: 65 20 74 65 73 74 2d 73 75 69 74 65 0a 62 65 20  e test-suite.be 
0290: 65 78 65 63 75 74 65 64 20 74 6f 20 63 68 65 63  executed to chec
02a0: 6b 20 66 6f 72 20 65 72 72 6f 72 73 20 62 65 66  k for errors bef
02b0: 6f 72 65 20 75 73 69 6e 67 20 61 6e 20 53 51 4c  ore using an SQL
02c0: 69 74 65 20 6c 69 62 72 61 72 79 20 62 75 69 6c  ite library buil
02d0: 74 0a 77 69 74 68 20 6e 6f 6e 2d 73 74 61 6e 64  t.with non-stand
02e0: 61 72 64 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  ard compilation 
02f0: 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 3c 61  options..</p>.<a
0300: 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 73 22   name="defaults"
0310: 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 31 20 4f 70  ></a>.<h2>1.1 Op
0320: 74 69 6f 6e 73 20 54 6f 20 53 65 74 20 44 65 66  tions To Set Def
0330: 61 75 6c 74 20 50 61 72 61 6d 65 74 65 72 20 56  ault Parameter V
0340: 61 6c 75 65 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c  alues</h2>..<tcl
0350: 3e 0a 70 72 6f 63 20 43 4f 4d 50 49 4c 45 5f 4f  >.proc COMPILE_O
0360: 50 54 49 4f 4e 20 7b 6e 61 6d 65 20 74 65 78 74  PTION {name text
0370: 7d 20 7b 0a 20 20 69 66 20 7b 5b 72 65 67 65 78  } {.  if {[regex
0380: 70 20 7b 53 51 4c 49 54 45 5f 28 5b 41 2d 5a 30  p {SQLITE_([A-Z0
0390: 2d 39 5f 5d 2b 29 7d 20 24 6e 61 6d 65 20 61 6c  -9_]+)} $name al
03a0: 6c 20 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20  l label]} {.    
03b0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 5b 73 74 72  hd_fragment [str
03c0: 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 61 62  ing tolower $lab
03d0: 65 6c 5d 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f  el].    hd_keywo
03e0: 72 64 73 20 24 61 6c 6c 0a 20 20 7d 0a 20 20 69  rds $all.  }.  i
03f0: 66 20 7b 5b 72 65 67 65 78 70 20 7b 5e 59 59 28  f {[regexp {^YY(
0400: 5b 41 2d 5a 30 2d 39 5f 5d 2b 29 7d 20 24 6e 61  [A-Z0-9_]+)} $na
0410: 6d 65 20 61 6c 6c 20 6c 61 62 65 6c 5d 7d 20 7b  me all label]} {
0420: 0a 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74  .    hd_fragment
0430: 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72   [string tolower
0440: 20 24 61 6c 6c 5d 0a 20 20 20 20 68 64 5f 6b 65   $all].    hd_ke
0450: 79 77 6f 72 64 73 20 24 61 6c 6c 0a 20 20 7d 0a  ywords $all.  }.
0460: 20 20 68 64 5f 70 75 74 73 20 3c 70 3e 3c 62 3e    hd_puts <p><b>
0470: 24 6e 61 6d 65 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  $name</b></p>.  
0480: 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 5c  regsub -all "\n\
0490: 5c 73 2a 5c 6e 22 20 24 74 65 78 74 20 22 3c 2f  \s*\n" $text "</
04a0: 70 3e 5c 6e 5c 6e 3c 70 3e 22 20 74 65 78 74 0a  p>\n\n<p>" text.
04b0: 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 3c 62 6c    hd_resolve <bl
04c0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 3e 24 74 65 78  ockquote><p>$tex
04d0: 74 3c 2f 70 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  t</p></blockquot
04e0: 65 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e>.}..COMPILE_OP
04f0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46  TION {SQLITE_DEF
0500: 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d  AULT_AUTOVACUUM=
0510: 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67 74  <i>&lt;1 or 0&gt
0520: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
0530: 6d 61 63 72 6f 20 64 65 74 65 72 6d 69 6e 65 73  macro determines
0540: 20 69 66 20 53 51 4c 69 74 65 20 63 72 65 61 74   if SQLite creat
0550: 65 73 20 64 61 74 61 62 61 73 65 73 20 77 69 74  es databases wit
0560: 68 20 74 68 65 20 0a 20 20 5b 61 75 74 6f 5f 76  h the .  [auto_v
0570: 61 63 75 75 6d 5d 20 66 6c 61 67 20 73 65 74 20  acuum] flag set 
0580: 62 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20  by default. The 
0590: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
05a0: 20 30 20 0a 20 20 28 64 6f 20 6e 6f 74 20 63 72   0 .  (do not cr
05b0: 65 61 74 65 20 61 75 74 6f 2d 76 61 63 75 75 6d  eate auto-vacuum
05c0: 20 64 61 74 61 62 61 73 65 73 29 2e 20 49 6e 20   databases). In 
05d0: 61 6e 79 20 63 61 73 65 20 74 68 65 0a 20 20 63  any case the.  c
05e0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61  ompile-time defa
05f0: 75 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72  ult may be overr
0600: 69 64 64 65 6e 20 62 79 20 74 68 65 20 0a 20 20  idden by the .  
0610: 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63  [PRAGMA auto_vac
0620: 75 75 6d 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a  uum] command..}.
0630: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
0640: 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  {SQLITE_DEFAULT_
0650: 43 41 43 48 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c  CACHE_SIZE=<i>&l
0660: 74 3b 70 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d  t;pages&gt;</i>}
0670: 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72 6f 20   {.  This macro 
0680: 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74  sets the default
0690: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 67   size of the pag
06a0: 65 2d 63 61 63 68 65 20 66 6f 72 20 65 61 63 68  e-cache for each
06b0: 20 61 74 74 61 63 68 65 64 0a 20 20 64 61 74 61   attached.  data
06c0: 62 61 73 65 2c 20 69 6e 20 70 61 67 65 73 2e 20  base, in pages. 
06d0: 54 68 69 73 20 63 61 6e 20 62 65 20 6f 76 65 72  This can be over
06e0: 72 69 64 64 65 6e 20 62 79 20 74 68 65 20 0a 20  ridden by the . 
06f0: 20 5b 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73   [PRAGMA cache_s
0700: 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 20 54 68  ize] command. Th
0710: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
0720: 69 73 20 32 30 30 30 2e 0a 7d 0a 0a 43 4f 4d 50  is 2000..}..COMP
0730: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
0740: 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f  TE_DEFAULT_FILE_
0750: 46 4f 52 4d 41 54 3d 3c 69 3e 26 6c 74 3b 31 20  FORMAT=<i>&lt;1 
0760: 6f 72 20 34 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  or 4&gt;</i>} {.
0770: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 63    The default sc
0780: 68 65 6d 61 2d 6c 65 76 65 6c 20 66 69 6c 65 20  hema-level file 
0790: 66 6f 72 6d 61 74 20 75 73 65 64 20 62 79 20 53  format used by S
07a0: 51 4c 69 74 65 20 77 68 65 6e 20 63 72 65 61 74  QLite when creat
07b0: 69 6e 67 0a 20 20 6e 65 77 20 64 61 74 61 62 61  ing.  new databa
07c0: 73 65 20 66 69 6c 65 73 20 69 73 20 73 65 74 20  se files is set 
07d0: 62 79 20 74 68 69 73 20 6d 61 63 72 6f 2e 20 20  by this macro.  
07e0: 54 68 65 20 66 69 6c 65 20 66 6f 72 6d 61 74 73  The file formats
07f0: 20 61 72 65 20 61 6c 6c 0a 20 20 76 65 72 79 20   are all.  very 
0800: 73 69 6d 69 6c 61 72 2e 20 20 54 68 65 20 64 69  similar.  The di
0810: 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e  fference between
0820: 20 66 6f 72 6d 61 74 73 20 31 20 61 6e 64 20 34   formats 1 and 4
0830: 20 69 73 20 74 68 61 74 20 66 6f 72 6d 61 74 0a   is that format.
0840: 20 20 34 20 75 6e 64 65 72 73 74 61 6e 64 73 20    4 understands 
0850: 64 65 73 63 65 6e 64 69 6e 67 20 69 6e 64 69 63  descending indic
0860: 65 73 20 61 6e 64 20 68 61 73 20 61 20 74 69 67  es and has a tig
0870: 68 74 65 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f  hter encoding fo
0880: 72 0a 20 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  r.  boolean valu
0890: 65 73 2e 0a 0a 20 20 53 51 4c 69 74 65 20 28 61  es...  SQLite (a
08a0: 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e  s of [version 3.
08b0: 36 2e 30 5d 29 20 63 61 6e 20 72 65 61 64 20 61  6.0]) can read a
08c0: 6e 64 20 77 72 69 74 65 20 61 6e 79 20 66 69 6c  nd write any fil
08d0: 65 20 66 6f 72 6d 61 74 0a 20 20 62 65 74 77 65  e format.  betwe
08e0: 65 6e 20 31 20 61 6e 64 20 34 2e 20 20 42 75 74  en 1 and 4.  But
08f0: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
0900: 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of SQLite might 
0910: 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f 0a 20  not be able to. 
0920: 20 72 65 61 64 20 66 6f 72 6d 61 74 73 20 67 72   read formats gr
0930: 65 61 74 65 72 20 74 68 61 6e 20 31 2e 20 20 53  eater than 1.  S
0940: 6f 20 74 68 61 74 20 6f 6c 64 65 72 20 76 65 72  o that older ver
0950: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
0960: 77 69 6c 6c 0a 20 20 62 65 20 61 62 6c 65 20 74  will.  be able t
0970: 6f 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65  o read and write
0980: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20   database files 
0990: 63 72 65 61 74 65 64 20 62 79 20 6e 65 77 65 72  created by newer
09a0: 20 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66 20 53   versions.  of S
09b0: 51 4c 69 74 65 2c 20 74 68 65 20 64 65 66 61 75  QLite, the defau
09c0: 6c 74 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69  lt file format i
09d0: 73 20 73 65 74 20 74 6f 20 31 20 66 6f 72 20 6d  s set to 1 for m
09e0: 61 78 69 6d 75 6d 0a 20 20 63 6f 6d 70 61 74 69  aximum.  compati
09f0: 62 69 6c 69 74 79 2e 0a 0a 20 20 54 68 65 20 66  bility...  The f
0a00: 69 6c 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 61  ile format for a
0a10: 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 61   new database ca
0a20: 6e 20 62 65 20 73 65 74 20 61 74 20 72 75 6e 74  n be set at runt
0a30: 69 6d 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20  ime using.  the 
0a40: 5b 50 52 41 47 4d 41 20 6c 65 67 61 63 79 5f 66  [PRAGMA legacy_f
0a50: 69 6c 65 5f 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d  ile_format] comm
0a60: 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  and..}..COMPILE_
0a70: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44  OPTION {SQLITE_D
0a80: 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53  EFAULT_MEMSTATUS
0a90: 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20 30 26 67  =<i>&lt;1 or 0&g
0aa0: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73  t;</i>} {.  This
0ab0: 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20 74   macro is used t
0ac0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74  o determine whet
0ad0: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 66  her or not the f
0ae0: 65 61 74 75 72 65 73 20 65 6e 61 62 6c 65 64 20  eatures enabled 
0af0: 61 6e 64 0a 20 20 64 69 73 61 62 6c 65 64 20 75  and.  disabled u
0b00: 73 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f  sing the SQLITE_
0b10: 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
0b20: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71   argument to [sq
0b30: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a  lite3_config()].
0b40: 20 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20    are available 
0b50: 62 79 20 64 65 66 61 75 6c 74 2e 20 54 68 65 20  by default. The 
0b60: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
0b70: 20 31 20 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   1 ([SQLITE_CONF
0b80: 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 0a 20 20  IG_MEMSTATUS].  
0b90: 72 65 6c 61 74 65 64 20 66 65 61 74 75 72 65 73  related features
0ba0: 20 65 6e 61 62 6c 65 64 29 2e 0a 7d 0a 0a 43 4f   enabled)..}..CO
0bb0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
0bc0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47  LITE_DEFAULT_PAG
0bd0: 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 62 79  E_SIZE=<i>&lt;by
0be0: 74 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20  tes&gt;</i>} {. 
0bf0: 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 20 75   This macro is u
0c00: 73 65 64 20 74 6f 20 73 65 74 20 74 68 65 20 64  sed to set the d
0c10: 65 66 61 75 6c 74 20 70 61 67 65 2d 73 69 7a 65  efault page-size
0c20: 20 75 73 65 64 20 77 68 65 6e 20 61 0a 20 20 64   used when a.  d
0c30: 61 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74  atabase is creat
0c40: 65 64 2e 20 54 68 65 20 76 61 6c 75 65 20 61 73  ed. The value as
0c50: 73 69 67 6e 65 64 20 6d 75 73 74 20 62 65 20 61  signed must be a
0c60: 20 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68 65   power of 2. The
0c70: 0a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  .  default value
0c80: 20 69 73 20 31 30 32 34 2e 20 54 68 65 20 63 6f   is 1024. The co
0c90: 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75  mpile-time defau
0ca0: 6c 74 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69  lt may be overri
0cb0: 64 64 65 6e 20 61 74 20 0a 20 20 72 75 6e 74 69  dden at .  runti
0cc0: 6d 65 20 62 79 20 74 68 65 20 5b 50 52 41 47 4d  me by the [PRAGM
0cd0: 41 20 70 61 67 65 5f 73 69 7a 65 5d 20 63 6f 6d  A page_size] com
0ce0: 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  mand..}..COMPILE
0cf0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
0d00: 44 45 46 41 55 4c 54 5f 54 45 4d 50 5f 43 41 43  DEFAULT_TEMP_CAC
0d10: 48 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70  HE_SIZE=<i>&lt;p
0d20: 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ages&gt;</i>} {.
0d30: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
0d40: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 69  s the default si
0d50: 7a 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63  ze of the page-c
0d60: 61 63 68 65 20 66 6f 72 20 74 65 6d 70 6f 72 61  ache for tempora
0d70: 72 79 20 66 69 6c 65 73 0a 20 20 63 72 65 61 74  ry files.  creat
0d80: 65 64 20 62 79 20 53 51 4c 69 74 65 20 74 6f 20  ed by SQLite to 
0d90: 73 74 6f 72 65 20 69 6e 74 65 72 6d 65 64 69 61  store intermedia
0da0: 74 65 20 72 65 73 75 6c 74 73 2c 20 69 6e 20 70  te results, in p
0db0: 61 67 65 73 2e 20 49 74 20 64 6f 65 73 0a 20 20  ages. It does.  
0dc0: 6e 6f 74 20 61 66 66 65 63 74 20 74 68 65 20 70  not affect the p
0dd0: 61 67 65 2d 63 61 63 68 65 20 66 6f 72 20 74 68  age-cache for th
0de0: 65 20 74 65 6d 70 20 64 61 74 61 62 61 73 65 2c  e temp database,
0df0: 20 77 68 65 72 65 20 74 61 62 6c 65 73 20 63 72   where tables cr
0e00: 65 61 74 65 64 0a 20 20 75 73 69 6e 67 20 5b 43  eated.  using [C
0e10: 52 45 41 54 45 20 54 41 42 4c 45 20 7c 20 43 52  REATE TABLE | CR
0e20: 45 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45 5d  EATE TEMP TABLE]
0e30: 20 61 72 65 20 73 74 6f 72 65 64 2e 20 54 68 65   are stored. The
0e40: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 0a 20   default value. 
0e50: 20 69 73 20 35 30 30 2e 0a 7d 0a 0a 43 4f 4d 50   is 500..}..COMP
0e60: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 59 59 53 54  ILE_OPTION {YYST
0e70: 41 43 4b 44 45 50 54 48 3d 3c 69 3e 26 6c 74 3b  ACKDEPTH=<i>&lt;
0e80: 6d 61 78 5f 64 65 70 74 68 26 67 74 3b 3c 2f 69  max_depth&gt;</i
0e90: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63 72  >} {.  This macr
0ea0: 6f 20 73 65 74 73 20 74 68 65 20 6d 61 78 69 6d  o sets the maxim
0eb0: 75 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20  um depth of the 
0ec0: 4c 41 4c 52 28 31 29 20 73 74 61 63 6b 20 75 73  LALR(1) stack us
0ed0: 65 64 20 62 79 0a 20 20 74 68 65 20 53 51 4c 20  ed by.  the SQL 
0ee0: 70 61 72 73 65 72 20 77 69 74 68 69 6e 20 53 51  parser within SQ
0ef0: 4c 69 74 65 2e 20 20 54 68 65 20 64 65 66 61 75  Lite.  The defau
0f00: 6c 74 20 76 61 6c 75 65 20 69 73 20 31 30 30 2e  lt value is 100.
0f10: 20 20 41 20 74 79 70 69 63 61 6c 0a 20 20 61 70    A typical.  ap
0f20: 70 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 75  plication will u
0f30: 73 65 20 6c 65 73 73 20 74 68 61 6e 20 61 62 6f  se less than abo
0f40: 75 74 20 32 30 20 6c 65 76 65 6c 73 20 6f 66 20  ut 20 levels of 
0f50: 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 44 65 76  the stack..  Dev
0f60: 65 6c 6f 70 65 72 73 20 77 68 6f 73 65 20 61 70  elopers whose ap
0f70: 70 6c 69 63 61 74 69 6f 6e 73 20 63 6f 6e 74 61  plications conta
0f80: 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  in SQL statement
0f90: 73 20 74 68 61 74 20 0a 20 20 6e 65 65 64 20 6d  s that .  need m
0fa0: 6f 72 65 20 74 68 61 6e 20 31 30 30 20 4c 41 4c  ore than 100 LAL
0fb0: 52 28 31 29 20 73 74 61 63 6b 20 65 6e 74 72 69  R(1) stack entri
0fc0: 65 73 20 73 68 6f 75 6c 64 20 73 65 72 69 6f 75  es should seriou
0fd0: 73 6c 79 0a 20 20 63 6f 6e 73 69 64 65 72 20 72  sly.  consider r
0fe0: 65 66 61 63 74 6f 72 69 6e 67 20 74 68 65 69 72  efactoring their
0ff0: 20 53 51 4c 20 61 73 20 69 74 20 69 73 20 6c 69   SQL as it is li
1000: 6b 65 6c 79 20 74 6f 20 62 65 20 77 65 6c 6c 20  kely to be well 
1010: 62 65 79 6f 6e 64 0a 20 20 74 68 65 20 61 62 69  beyond.  the abi
1020: 6c 69 74 79 20 6f 66 20 61 6e 79 20 68 75 6d 61  lity of any huma
1030: 6e 20 74 6f 20 63 6f 6d 70 72 65 68 65 6e 64 2e  n to comprehend.
1040: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31  .}.</tcl>..<h2>1
1050: 2e 32 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65  .2 Options To Se
1060: 74 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68  t Size Limits</h
1070: 32 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65  2>..<p>There are
1080: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1090: 74 69 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20  tions that will 
10a0: 73 65 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73  set upper bounds
10b0: 0a 6f 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66  .on the sizes of
10c0: 20 76 61 72 69 6f 75 73 20 73 74 72 75 63 74 75   various structu
10d0: 72 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20  res in SQLite.  
10e0: 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  The compile-time
10f0: 0a 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c  .options normall
1100: 79 20 73 65 74 20 61 20 68 61 72 64 20 75 70 70  y set a hard upp
1110: 65 72 20 62 6f 75 6e 64 20 77 68 69 63 68 20 63  er bound which c
1120: 61 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 61 74  an be changed.at
1130: 20 72 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64   run-time on ind
1140: 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73  ividual [databas
1150: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75  e connections] u
1160: 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65  sing the.[sqlite
1170: 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72  3_limit()] inter
1180: 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  face.</p>..<p>Th
1190: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  e compile-time o
11a0: 70 74 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69  ptions for setti
11b0: 6e 67 20 75 70 70 65 72 20 62 6f 75 6e 64 73 20  ng upper bounds 
11c0: 61 72 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f  are.[limits | do
11d0: 63 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74  cumented separat
11e0: 65 6c 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f  ely].  The follo
11f0: 77 69 6e 67 20 69 73 20 61 20 6c 69 73 74 20 6f  wing is a list o
1200: 66 0a 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  f.the available 
1210: 73 65 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c  settings:</p>..<
1220: 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ul>.<li> [SQLITE
1230: 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 20 20  _MAX_ATTACHED]  
1240: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
1250: 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20  TE_MAX_COLUMN]  
1260: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
1270: 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f  TE_MAX_COMPOUND_
1280: 53 45 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c  SELECT]  </li>.<
1290: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  li> [SQLITE_MAX_
12a0: 45 58 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c  EXPR_DEPTH]  </l
12b0: 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  i>.<li> [SQLITE_
12c0: 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MAX_FUNCTION_ARG
12d0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
12e0: 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48  QLITE_MAX_LENGTH
12f0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
1300: 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50  QLITE_MAX_LIKE_P
1310: 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20  ATTERN_LENGTH]  
1320: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  </li>.<li> [SQLI
1330: 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e  TE_MAX_PAGE_COUN
1340: 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b  T]  </li>.<li> [
1350: 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f  SQLITE_MAX_PAGE_
1360: 53 49 5a 45 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69  SIZE]  </li>.<li
1370: 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51  > [SQLITE_MAX_SQ
1380: 4c 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e  L_LENGTH]  </li>
1390: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41  .<li> [SQLITE_MA
13a0: 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45  X_VARIABLE_NUMBE
13b0: 52 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  R]  </li>.</ul>.
13c0: 0a 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f  .<a name="contro
13d0: 6c 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a  lfeatures"></a>.
13e0: 3c 68 32 3e 31 2e 33 20 4f 70 74 69 6f 6e 73 20  <h2>1.3 Options 
13f0: 54 6f 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61  To Control Opera
1400: 74 69 6e 67 20 43 68 61 72 61 63 74 65 72 69 73  ting Characteris
1410: 74 69 63 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e  tics</h2>..<tcl>
1420: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
1430: 7b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52  {SQLITE_OS_OTHER
1440: 3d 3c 69 3e 26 6c 74 3b 30 20 6f 72 20 31 26 67  =<i>&lt;0 or 1&g
1450: 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 65 20  t;</i>} {.  The 
1460: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 53 51  option causes SQ
1470: 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 69 74 73  Lite to omit its
1480: 20 62 75 69 6c 74 2d 69 6e 20 6f 70 65 72 61 74   built-in operat
1490: 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
14a0: 66 61 63 65 73 0a 20 20 66 6f 72 20 55 6e 69 78  faces.  for Unix
14b0: 2c 20 77 69 6e 64 6f 77 73 2c 20 61 6e 64 20 4f  , windows, and O
14c0: 53 2f 32 2e 20 20 54 68 65 20 72 65 73 75 6c 74  S/2.  The result
14d0: 69 6e 67 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ing library will
14e0: 20 68 61 76 65 20 6e 6f 20 64 65 66 61 75 6c 74   have no default
14f0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20  .  [sqlite3_vfs 
1500: 7c 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  | operating syst
1510: 65 6d 20 69 6e 74 65 72 66 61 63 65 5d 2e 20 20  em interface].  
1520: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
1530: 74 20 75 73 65 0a 20 20 5b 73 71 6c 69 74 65 33  t use.  [sqlite3
1540: 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
1550: 20 74 6f 20 72 65 67 69 73 74 65 72 20 61 6e 20   to register an 
1560: 61 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65  appropriate inte
1570: 72 66 61 63 65 20 62 65 66 6f 72 65 0a 20 20 75  rface before.  u
1580: 73 69 6e 67 20 53 51 4c 69 74 65 2e 20 20 41 70  sing SQLite.  Ap
1590: 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20  plications must 
15a0: 61 6c 73 6f 20 73 75 70 70 6c 79 20 69 6d 70 6c  also supply impl
15b0: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20  ementations for 
15c0: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6f  the.  [sqlite3_o
15d0: 73 5f 69 6e 69 74 28 29 5d 20 61 6e 64 20 5b 73  s_init()] and [s
15e0: 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 5d  qlite3_os_end()]
15f0: 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54 68   interfaces.  Th
1600: 65 20 75 73 75 61 6c 20 70 72 61 63 74 69 63 65  e usual practice
1610: 0a 20 20 69 73 20 66 6f 72 20 74 68 65 20 73 75  .  is for the su
1620: 70 70 6c 69 65 64 20 5b 73 71 6c 69 74 65 33 5f  pplied [sqlite3_
1630: 6f 73 5f 69 6e 69 74 28 29 5d 20 74 6f 20 69 6e  os_init()] to in
1640: 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 66  voke [sqlite3_vf
1650: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 2e 0a 20  s_register()].. 
1660: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 75 74   SQLite will aut
1670: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 76 6f 6b  omatically invok
1680: 65 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  e [sqlite3_os_in
1690: 69 74 28 29 5d 20 77 68 65 6e 20 69 74 20 69 6e  it()] when it in
16a0: 69 74 69 61 6c 69 7a 65 73 2e 0a 0a 20 20 54 68  itializes...  Th
16b0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 79 70  is option is typ
16c0: 69 63 61 6c 6c 79 20 75 73 65 64 20 77 68 65 6e  ically used when
16d0: 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65   building SQLite
16e0: 20 66 6f 72 20 61 6e 20 65 6d 62 65 64 64 65 64   for an embedded
16f0: 0a 20 20 70 6c 61 74 66 6f 72 6d 20 77 69 74 68  .  platform with
1700: 20 61 20 63 75 73 74 6f 6d 20 6f 70 65 72 61 74   a custom operat
1710: 69 6e 67 20 73 79 73 74 65 6d 2e 0a 7d 0a 0a 43  ing system..}..C
1720: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
1730: 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c  QLITE_SECURE_DEL
1740: 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63 6f  ETE} {.  This co
1750: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1760: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
1770: 74 6f 20 6f 76 65 72 77 72 69 74 65 20 64 65 6c  to overwrite del
1780: 65 74 65 64 0a 20 20 69 6e 66 6f 72 6d 61 74 69  eted.  informati
1790: 6f 6e 20 77 69 74 68 20 7a 65 72 6f 73 20 69 6e  on with zeros in
17a0: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6d 61 72   addition to mar
17b0: 6b 69 6e 67 20 74 68 65 20 73 70 61 63 65 0a 20  king the space. 
17c0: 20 61 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f   as available fo
17d0: 72 20 72 65 75 73 65 2e 20 20 57 69 74 68 6f 75  r reuse.  Withou
17e0: 74 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 64  t this option, d
17f0: 65 6c 65 74 65 64 20 64 61 74 61 0a 20 20 6d 69  eleted data.  mi
1800: 67 68 74 20 62 65 20 72 65 63 6f 76 65 72 61 62  ght be recoverab
1810: 6c 65 20 66 72 6f 6d 20 61 20 64 61 74 61 62 61  le from a databa
1820: 73 65 20 75 73 69 6e 67 20 61 20 62 69 6e 61 72  se using a binar
1830: 79 20 65 64 69 74 6f 72 2e 0a 20 20 48 6f 77 65  y editor..  Howe
1840: 76 65 72 2c 20 74 68 65 72 65 20 69 73 20 61 20  ver, there is a 
1850: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
1860: 6c 74 79 20 66 6f 72 20 75 73 69 6e 67 20 74 68  lty for using th
1870: 69 73 20 6f 70 74 69 6f 6e 2e 0a 0a 20 20 54 68  is option...  Th
1880: 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20 3c  is option does <
1890: 75 3e 6e 6f 74 3c 2f 75 3e 20 63 61 75 73 65 20  u>not</u> cause 
18a0: 64 65 6c 65 74 65 64 20 64 61 74 61 20 69 73 20  deleted data is 
18b0: 73 65 63 75 72 65 6c 79 0a 20 20 72 65 6d 6f 76  securely.  remov
18c0: 65 64 20 66 72 6f 6d 20 74 68 65 20 75 6e 64 65  ed from the unde
18d0: 72 6c 79 69 6e 67 20 73 74 6f 72 61 67 65 20 6d  rlying storage m
18e0: 65 64 69 61 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  edia..}..COMPILE
18f0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
1900: 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26 6c  THREADSAFE=<i>&l
1910: 74 3b 30 20 6f 72 20 31 20 6f 72 20 32 26 67 74  t;0 or 1 or 2&gt
1920: 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20  ;</i>} {.  This 
1930: 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20  option controls 
1940: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 63  whether or not c
1950: 6f 64 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20  ode is included 
1960: 69 6e 20 53 51 4c 69 74 65 20 74 6f 0a 20 20 65  in SQLite to.  e
1970: 6e 61 62 6c 65 20 69 74 20 74 6f 20 6f 70 65 72  nable it to oper
1980: 61 74 65 20 73 61 66 65 6c 79 20 69 6e 20 61 20  ate safely in a 
1990: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 65 6e  multithreaded en
19a0: 76 69 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 65 0a  vironment.  The.
19b0: 20 20 64 65 66 61 75 6c 74 20 69 73 20 53 51 4c    default is SQL
19c0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
19d0: 20 77 68 69 63 68 20 69 73 20 73 61 66 65 20 66   which is safe f
19e0: 6f 72 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74  or use in a mult
19f0: 69 74 68 72 65 61 64 65 64 0a 20 20 65 6e 76 69  ithreaded.  envi
1a00: 72 6f 6e 6d 65 6e 74 2e 20 20 57 68 65 6e 20 63  ronment.  When c
1a10: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c  ompiled with SQL
1a20: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
1a30: 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 63 6f   all mutexing co
1a40: 64 65 0a 20 20 69 73 20 6f 6d 69 74 74 65 64 20  de.  is omitted 
1a50: 61 6e 64 20 69 74 20 69 73 20 75 6e 73 61 66 65  and it is unsafe
1a60: 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 69   to use SQLite i
1a70: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
1a80: 64 20 70 72 6f 67 72 61 6d 2e 0a 20 20 57 68 65  d program..  Whe
1a90: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
1aa0: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
1ab0: 45 3d 32 2c 20 53 51 4c 69 74 65 20 63 61 6e 20  E=2, SQLite can 
1ac0: 62 65 20 75 73 65 64 20 69 6e 20 61 20 6d 75 6c  be used in a mul
1ad0: 74 69 74 68 72 65 61 64 65 64 0a 20 20 70 72 6f  tithreaded.  pro
1ae0: 67 72 61 6d 20 73 6f 20 6c 6f 6e 67 20 61 73 20  gram so long as 
1af0: 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61  no two threads a
1b00: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
1b10: 65 20 73 61 6d 65 0a 20 20 5b 64 61 74 61 62 61  e same.  [databa
1b20: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61  se connection] a
1b30: 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e  t the same time.
1b40: 0a 0a 20 20 54 6f 20 70 75 74 20 69 74 20 61 6e  ..  To put it an
1b50: 6f 74 68 65 72 20 77 61 79 2c 20 53 51 4c 49 54  other way, SQLIT
1b60: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 73  E_THREADSAFE=1 s
1b70: 65 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a  ets the default.
1b80: 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64    [threading mod
1b90: 65 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a 65 64  e] to Serialized
1ba0: 2e 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  .  SQLITE_THREAD
1bb0: 53 41 46 45 3d 32 20 73 65 74 73 20 74 68 65 20  SAFE=2 sets the 
1bc0: 64 65 66 61 75 6c 74 0a 20 20 5b 74 68 72 65 61  default.  [threa
1bd0: 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d 75  ding mode] to Mu
1be0: 6c 74 69 2d 74 68 72 65 61 64 65 64 2e 20 20 41  lti-threaded.  A
1bf0: 6e 64 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44  nd SQLITE_THREAD
1c00: 53 41 46 45 3d 30 20 73 65 74 73 20 74 68 65 0a  SAFE=0 sets the.
1c10: 20 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64    [threading mod
1c20: 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68 72  e] to Single-thr
1c30: 65 61 64 65 64 2e 0a 0a 20 20 54 68 65 20 76 61  eaded...  The va
1c40: 6c 75 65 20 6f 66 20 53 51 4c 49 54 45 5f 54 48  lue of SQLITE_TH
1c50: 52 45 41 44 53 41 46 45 20 63 61 6e 20 62 65 20  READSAFE can be 
1c60: 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20 72 75  determined at ru
1c70: 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74  n-time.  using t
1c80: 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65  he [sqlite3_thre
1c90: 61 64 73 61 66 65 28 29 5d 20 69 6e 74 65 72 66  adsafe()] interf
1ca0: 61 63 65 2e 0a 0a 20 20 57 68 65 6e 20 53 51 4c  ace...  When SQL
1cb0: 69 74 65 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  ite has been com
1cc0: 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54  piled with SQLIT
1cd0: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 6f  E_THREADSAFE=1 o
1ce0: 72 0a 20 20 53 51 4c 49 54 45 5f 54 48 52 45 41  r.  SQLITE_THREA
1cf0: 44 53 41 46 45 3d 32 20 74 68 65 6e 20 74 68 65  DSAFE=2 then the
1d00: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
1d10: 5d 0a 20 20 63 61 6e 20 62 65 20 61 6c 74 65 72  ].  can be alter
1d20: 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75  ed at run-time u
1d30: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
1d40: 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65  3_config()] inte
1d50: 72 66 61 63 65 20 74 6f 67 65 74 68 65 72 0a 20  rface together. 
1d60: 20 77 69 74 68 20 6f 6e 65 20 6f 66 20 74 68 65   with one of the
1d70: 73 65 20 76 65 72 62 73 3a 0a 0a 20 20 3c 75 6c  se verbs:..  <ul
1d80: 3e 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49 54 45 5f  >.  <li>[SQLITE_
1d90: 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
1da0: 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51 4c 49  EAD].  <li>[SQLI
1db0: 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  TE_CONFIG_MULTIT
1dc0: 48 52 45 41 44 5d 0a 20 20 3c 6c 69 3e 5b 53 51  HREAD].  <li>[SQ
1dd0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49  LITE_CONFIG_SERI
1de0: 41 4c 49 5a 45 44 5d 0a 20 20 3c 2f 75 6c 3e 0a  ALIZED].  </ul>.
1df0: 0a 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f  .  The [SQLITE_O
1e00: 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 61 6e 64  PEN_NOMUTEX] and
1e10: 0a 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  .  [SQLITE_OPEN_
1e20: 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 73  FULLMUTEX] flags
1e30: 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65   to [sqlite3_ope
1e40: 6e 5f 76 32 28 29 5d 20 63 61 6e 20 61 6c 73 6f  n_v2()] can also
1e50: 20 62 65 20 75 73 65 64 0a 20 20 74 6f 20 61 64   be used.  to ad
1e60: 6a 75 73 74 20 74 68 65 20 5b 74 68 72 65 61 64  just the [thread
1e70: 69 6e 67 20 6d 6f 64 65 5d 20 6f 66 20 69 6e 64  ing mode] of ind
1e80: 69 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73  ividual [databas
1e90: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 0a 20  e connections]. 
1ea0: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20   at run-time... 
1eb0: 20 4e 6f 74 65 20 74 68 61 74 20 77 68 65 6e 20   Note that when 
1ec0: 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
1ed0: 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 54  ed with SQLITE_T
1ee0: 48 52 45 41 44 53 41 46 45 3d 30 2c 20 74 68 65  HREADSAFE=0, the
1ef0: 20 63 6f 64 65 0a 20 20 74 6f 20 6d 61 6b 65 20   code.  to make 
1f00: 53 51 4c 69 74 65 20 74 68 72 65 61 64 73 61 66  SQLite threadsaf
1f10: 65 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  e is omitted fro
1f20: 6d 20 74 68 65 20 62 75 69 6c 64 2e 20 20 57 68  m the build.  Wh
1f30: 65 6e 20 74 68 69 73 20 6f 63 63 75 72 73 2c 0a  en this occurs,.
1f40: 20 20 69 74 20 69 73 20 69 6d 70 6f 73 73 69 62    it is impossib
1f50: 6c 65 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  le to change the
1f60: 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
1f70: 5d 20 61 74 20 73 74 61 72 74 2d 74 69 6d 65 20  ] at start-time 
1f80: 6f 72 20 72 75 6e 2d 74 69 6d 65 2e 0a 0a 20 20  or run-time...  
1f90: 53 65 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  See the [threadi
1fa0: 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75 6d 65 6e  ng mode] documen
1fb0: 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74  tation for addit
1fc0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
1fd0: 6e 0a 20 20 6f 6e 20 61 73 70 65 63 74 73 20 6f  n.  on aspects o
1fe0: 66 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 69  f using SQLite i
1ff0: 6e 20 61 20 6d 75 6c 74 69 74 68 72 65 61 64 65  n a multithreade
2000: 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 7d  d environment..}
2010: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
2020: 20 7b 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54   {SQLITE_TEMP_ST
2030: 4f 52 45 3d 3c 69 3e 26 6c 74 3b 30 20 74 68 72  ORE=<i>&lt;0 thr
2040: 6f 75 67 68 20 33 26 67 74 3b 3c 2f 69 3e 7d 20  ough 3&gt;</i>} 
2050: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
2060: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
2070: 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73   temporary files
2080: 20 61 72 65 20 73 74 6f 72 65 64 20 6f 6e 20 64   are stored on d
2090: 69 73 6b 20 6f 72 0a 20 20 69 6e 20 6d 65 6d 6f  isk or.  in memo
20a0: 72 79 2e 20 20 54 68 65 20 6d 65 61 6e 69 6e 67  ry.  The meaning
20b0: 73 20 66 6f 72 20 76 61 72 69 6f 75 73 20 73 65  s for various se
20c0: 74 74 69 6e 67 73 20 6f 66 20 74 68 69 73 20 63  ttings of this c
20d0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f 70  ompile-time.  op
20e0: 74 69 6f 6e 20 61 72 65 20 61 73 20 66 6f 6c 6c  tion are as foll
20f0: 6f 77 73 3a 0a 0a 20 20 3c 74 61 62 6c 65 20 63  ows:..  <table c
2100: 65 6c 6c 70 61 64 64 69 6e 67 3d 22 32 22 20 62  ellpadding="2" b
2110: 6f 72 64 65 72 3d 22 31 22 3e 0a 20 20 3c 74 72  order="1">.  <tr
2120: 3e 3c 74 68 3e 53 51 4c 49 54 45 5f 54 45 4d 50  ><th>SQLITE_TEMP
2130: 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c 74 68 3e 4d  _STORE</th><th>M
2140: 65 61 6e 69 6e 67 3c 2f 74 68 3e 3c 2f 74 72 3e  eaning</th></tr>
2150: 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  .  <tr><td align
2160: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
2170: 3c 74 64 3e 41 6c 77 61 79 73 20 75 73 65 20 74  <td>Always use t
2180: 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 3c 2f  emporary files</
2190: 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c  td></tr>.  <tr><
21a0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
21b0: 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 55 73 65 20  ">1</td><td>Use 
21c0: 66 69 6c 65 73 20 62 79 20 64 65 66 61 75 6c 74  files by default
21d0: 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 0a 20   but allow the. 
21e0: 20 5b 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74   [PRAGMA temp_st
21f0: 6f 72 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20  ore] command to 
2200: 6f 76 65 72 72 69 64 65 3c 2f 74 64 3e 3c 2f 74  override</td></t
2210: 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69  r>.  <tr><td ali
2220: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74  gn="center">2</t
2230: 64 3e 3c 74 64 3e 55 73 65 20 6d 65 6d 6f 72 79  d><td>Use memory
2240: 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 20   by default but 
2250: 61 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41  allow the.  [PRA
2260: 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20  GMA temp_store] 
2270: 63 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72  command to overr
2280: 69 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20  ide</td></tr>.  
2290: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  <tr><td align="c
22a0: 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74 64  enter">3</td><td
22b0: 3e 41 6c 77 61 79 73 20 75 73 65 20 6d 65 6d 6f  >Always use memo
22c0: 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  ry</td></tr>.  <
22d0: 2f 74 61 62 6c 65 3e 0a 0a 20 20 54 68 65 20 64  /table>..  The d
22e0: 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69  efault setting i
22f0: 73 20 31 2e 20 20 0a 20 20 41 64 64 69 74 69 6f  s 1.  .  Additio
2300: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
2310: 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20  can be found in 
2320: 5b 74 65 6d 70 73 74 6f 72 65 20 7c 20 74 65 6d  [tempstore | tem
2330: 70 66 69 6c 65 73 2e 68 74 6d 6c 5d 2e 0a 7d 0a  pfiles.html]..}.
2340: 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d  </tcl>..<a name=
2350: 22 65 6e 61 62 6c 65 66 65 61 74 75 72 65 73 22  "enablefeatures"
2360: 3e 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 34 20 4f 70  ></a>.<h2>1.4 Op
2370: 74 69 6f 6e 73 20 54 6f 20 45 6e 61 62 6c 65 20  tions To Enable 
2380: 46 65 61 74 75 72 65 73 20 4e 6f 72 6d 61 6c 6c  Features Normall
2390: 79 20 54 75 72 6e 65 64 20 4f 66 66 3c 2f 68 32  y Turned Off</h2
23a0: 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45  >..<tcl>.COMPILE
23b0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
23c0: 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f 57 52  ENABLE_ATOMIC_WR
23d0: 49 54 45 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  ITE} {.  If this
23e0: 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C-preprocessor 
23f0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
2400: 20 61 6e 64 20 69 66 20 74 68 65 0a 20 20 78 44   and if the.  xD
2410: 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73  eviceCharacteris
2420: 74 69 63 73 20 6d 65 74 68 6f 64 20 6f 66 20 5b  tics method of [
2430: 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
2440: 64 73 5d 20 6f 62 6a 65 63 74 20 66 6f 72 0a 20  ds] object for. 
2450: 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
2460: 20 72 65 70 6f 72 74 73 20 28 76 69 61 20 6f 6e   reports (via on
2470: 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45  e of the [SQLITE
2480: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 20 62  _IOCAP_ATOMIC] b
2490: 69 74 73 29 0a 20 20 74 68 61 74 20 74 68 65 20  its).  that the 
24a0: 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f  filesystem suppo
24b0: 72 74 73 20 61 74 6f 6d 69 63 20 77 72 69 74 65  rts atomic write
24c0: 73 20 61 6e 64 20 69 66 20 61 20 74 72 61 6e 73  s and if a trans
24d0: 61 63 74 69 6f 6e 0a 20 20 69 6e 76 6f 6c 76 65  action.  involve
24e0: 73 20 61 20 63 68 61 6e 67 65 20 74 6f 20 6f 6e  s a change to on
24f0: 6c 79 20 61 20 73 69 6e 67 6c 65 20 70 61 67 65  ly a single page
2500: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
2510: 20 66 69 6c 65 2c 0a 20 20 74 68 65 6e 20 74 68   file,.  then th
2520: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f  e transaction co
2530: 6d 6d 69 74 73 20 77 69 74 68 20 6a 75 73 74 20  mmits with just 
2540: 61 20 73 69 6e 67 6c 65 20 77 72 69 74 65 20 72  a single write r
2550: 65 71 75 65 73 74 20 6f 66 0a 20 20 61 20 73 69  equest of.  a si
2560: 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68 65  ngle page of the
2570: 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 6e 6f   database and no
2580: 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
2590: 6c 20 69 73 20 63 72 65 61 74 65 64 0a 20 20 6f  l is created.  o
25a0: 72 20 77 72 69 74 74 65 6e 2e 20 20 4f 6e 20 66  r written.  On f
25b0: 69 6c 65 73 79 73 74 65 6d 73 20 74 68 61 74 20  ilesystems that 
25c0: 73 75 70 70 6f 72 74 20 61 74 6f 6d 69 63 20 77  support atomic w
25d0: 72 69 74 65 73 2c 20 74 68 69 73 0a 20 20 6f 70  rites, this.  op
25e0: 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 72  timization can r
25f0: 65 73 75 6c 74 20 69 6e 20 73 69 67 6e 69 66 69  esult in signifi
2600: 63 61 6e 74 20 73 70 65 65 64 20 69 6d 70 72 6f  cant speed impro
2610: 76 65 6d 65 6e 74 73 20 66 6f 72 0a 20 20 73 6d  vements for.  sm
2620: 61 6c 6c 20 75 70 64 61 74 65 73 2e 20 20 48 6f  all updates.  Ho
2630: 77 65 76 65 72 2c 20 66 65 77 20 66 69 6c 65 73  wever, few files
2640: 79 73 74 65 6d 73 20 73 75 70 70 6f 72 74 20 74  ystems support t
2650: 68 69 73 20 63 61 70 61 62 69 6c 69 74 79 0a 20  his capability. 
2660: 20 61 6e 64 20 74 68 65 20 63 6f 64 65 20 70 61   and the code pa
2670: 74 68 73 20 74 68 61 74 20 63 68 65 63 6b 20 66  ths that check f
2680: 6f 72 20 74 68 69 73 20 63 61 70 61 62 69 6c 69  or this capabili
2690: 74 79 20 73 6c 6f 77 20 64 6f 77 6e 20 77 72 69  ty slow down wri
26a0: 74 65 0a 20 20 70 65 72 66 6f 72 6d 61 6e 63 65  te.  performance
26b0: 20 6f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74   on systems that
26c0: 20 6c 61 63 6b 20 61 74 6f 6d 69 63 20 77 72 69   lack atomic wri
26d0: 74 65 20 63 61 70 61 62 69 6c 69 74 79 2c 20 73  te capability, s
26e0: 6f 20 74 68 69 73 0a 20 20 66 65 61 74 75 72 65  o this.  feature
26f0: 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20   is disabled by 
2700: 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 43 4f 4d 50  default..}..COMP
2710: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
2720: 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e  TE_ENABLE_COLUMN
2730: 5f 4d 45 54 41 44 41 54 41 7d 20 7b 0a 20 20 57  _METADATA} {.  W
2740: 68 65 6e 20 74 68 69 73 20 43 2d 70 72 65 70 72  hen this C-prepr
2750: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73  ocessor macro is
2760: 20 64 65 66 69 6e 65 64 2c 20 53 51 4c 69 74 65   defined, SQLite
2770: 20 69 6e 63 6c 75 64 65 73 20 73 6f 6d 65 0a 20   includes some. 
2780: 20 61 64 64 69 74 69 6f 6e 61 6c 20 41 50 49 73   additional APIs
2790: 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 63 6f   that provide co
27a0: 6e 76 65 6e 69 65 6e 74 20 61 63 63 65 73 73 20  nvenient access 
27b0: 74 6f 20 6d 65 74 61 2d 64 61 74 61 20 61 62 6f  to meta-data abo
27c0: 75 74 0a 20 20 74 61 62 6c 65 73 20 61 6e 64 20  ut.  tables and 
27d0: 71 75 65 72 69 65 73 2e 20 20 54 68 65 20 41 50  queries.  The AP
27e0: 49 73 20 74 68 61 74 20 61 72 65 20 65 6e 61 62  Is that are enab
27f0: 6c 65 64 20 62 79 20 74 68 69 73 20 6f 70 74 69  led by this opti
2800: 6f 6e 20 61 72 65 3a 0a 0a 20 20 3c 75 6c 3e 0a  on are:..  <ul>.
2810: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
2820: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
2830: 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  name()] </li>.  
2840: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
2850: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
2860: 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20  me16()] </li>.  
2870: 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f  <li> [sqlite3_co
2880: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
2890: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20  )] </li>.  <li> 
28a0: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
28b0: 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 29 5d 20  table_name16()] 
28c0: 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71  </li>.  <li> [sq
28d0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
28e0: 67 69 6e 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c 69  gin_name()] </li
28f0: 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  >.  <li> [sqlite
2900: 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
2910: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
2920: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
2930: 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
2940: 61 64 61 74 61 28 29 5d 20 3c 2f 6c 69 3e 0a 20  adata()] </li>. 
2950: 20 3c 2f 75 6c 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c   </ul>.}..COMPIL
2960: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2970: 5f 45 4e 41 42 4c 45 5f 46 54 53 33 7d 20 7b 0a  _ENABLE_FTS3} {.
2980: 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69    When this opti
2990: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e  on is defined in
29a0: 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74 69   the [amalgamati
29b0: 6f 6e 5d 2c 20 76 65 72 73 69 6f 6e 20 33 0a 20  on], version 3. 
29c0: 20 6f 66 20 74 68 65 20 66 75 6c 6c 2d 74 65 78   of the full-tex
29d0: 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20  t search engine 
29e0: 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20  is added to the 
29f0: 62 75 69 6c 64 20 61 75 74 6f 6d 61 74 69 63 61  build automatica
2a00: 6c 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  lly..}..COMPILE_
2a10: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45  OPTION {SQLITE_E
2a20: 4e 41 42 4c 45 5f 49 43 55 7d 20 7b 0a 20 20 54  NABLE_ICU} {.  T
2a30: 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65  his option cause
2a40: 73 20 74 68 65 20 0a 20 20 3c 61 20 68 72 65 66  s the .  <a href
2a50: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 69 63 75  ="http://www.icu
2a60: 2d 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 22 3e 49  -project.org/">I
2a70: 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6d  nternational Com
2a80: 70 6f 6e 65 6e 74 73 20 66 6f 72 20 55 6e 69 63  ponents for Unic
2a90: 6f 64 65 3c 2f 61 3e 0a 20 20 6f 72 20 22 49 43  ode</a>.  or "IC
2aa0: 55 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20  U" extension to 
2ab0: 53 51 4c 69 74 65 20 74 6f 20 62 65 20 61 64 64  SQLite to be add
2ac0: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 2e  ed to the build.
2ad0: 20 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50    .}..COMPILE_OP
2ae0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
2af0: 42 4c 45 5f 49 4f 54 52 41 43 45 7d 20 7b 0a 20  BLE_IOTRACE} {. 
2b00: 20 57 68 65 6e 20 62 6f 74 68 20 74 68 65 20 53   When both the S
2b10: 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74  QLite core and t
2b20: 68 65 20 5b 43 6f 6d 6d 61 6e 64 20 4c 69 6e 65  he [Command Line
2b30: 20 49 6e 74 65 72 66 61 63 65 5d 20 28 43 4c 49   Interface] (CLI
2b40: 29 20 61 72 65 20 62 6f 74 68 20 0a 20 20 63 6f  ) are both .  co
2b50: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 69 73  mpiled with this
2b60: 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68   option, then th
2b70: 65 20 43 4c 49 20 70 72 6f 76 69 64 65 73 20 61  e CLI provides a
2b80: 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64 0a  n extra command.
2b90: 20 20 6e 61 6d 65 64 20 22 2e 69 6f 74 72 61 63    named ".iotrac
2ba0: 65 22 20 74 68 61 74 20 70 72 6f 76 69 64 65 73  e" that provides
2bb0: 20 61 20 6c 6f 77 2d 6c 65 76 65 6c 20 6c 6f 67   a low-level log
2bc0: 20 6f 66 20 49 2f 4f 20 61 63 74 69 76 69 74 79   of I/O activity
2bd0: 2e 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  ..  This option 
2be0: 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20  is experimental 
2bf0: 61 6e 64 20 6d 61 79 20 62 65 20 64 69 73 63 6f  and may be disco
2c00: 6e 74 69 6e 75 65 64 20 69 6e 20 61 20 66 75 74  ntinued in a fut
2c10: 75 72 65 20 72 65 6c 65 61 73 65 2e 0a 7d 0a 0a  ure release..}..
2c20: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
2c30: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f  SQLITE_ENABLE_LO
2c40: 43 4b 49 4e 47 5f 53 54 59 4c 45 7d 20 7b 0a 20  CKING_STYLE} {. 
2c50: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61   This option ena
2c60: 62 6c 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20  bles additional 
2c70: 6c 6f 67 69 63 20 69 6e 20 74 68 65 20 4f 53 20  logic in the OS 
2c80: 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72 20  interface layer 
2c90: 66 6f 72 0a 20 20 4d 61 63 20 4f 53 20 58 2e 20  for.  Mac OS X. 
2ca0: 54 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6c  The additional l
2cb0: 6f 67 69 63 20 61 74 74 65 6d 70 74 73 20 74 6f  ogic attempts to
2cc0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
2cd0: 79 70 65 20 6f 66 20 74 68 65 0a 20 20 75 6e 64  ype of the.  und
2ce0: 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74  erlying filesyst
2cf0: 65 6d 20 61 6e 64 20 63 68 6f 6f 73 65 20 61 6e  em and choose an
2d00: 64 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f  d alternative lo
2d10: 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79 0a 20  cking strategy. 
2d20: 20 74 68 61 74 20 77 6f 72 6b 73 20 63 6f 72 72   that works corr
2d30: 65 63 74 6c 79 20 66 6f 72 20 74 68 61 74 20 66  ectly for that f
2d40: 69 6c 65 73 79 73 74 65 6d 20 74 79 70 65 2e 20  ilesystem type. 
2d50: 46 69 76 65 20 6c 6f 63 6b 69 6e 67 20 73 74 72  Five locking str
2d60: 61 74 65 67 69 65 73 20 0a 20 20 61 72 65 20 61  ategies .  are a
2d70: 76 61 69 6c 61 62 6c 65 3a 0a 0a 20 20 3c 75 6c  vailable:..  <ul
2d80: 3e 0a 20 20 20 20 3c 6c 69 3e 20 50 6f 73 69 78  >.    <li> Posix
2d90: 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20   locking style. 
2da0: 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61  This is the defa
2db0: 75 6c 74 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  ult locking styl
2dc0: 65 20 61 6e 64 20 74 68 65 0a 20 20 20 20 20 20  e and the.      
2dd0: 20 20 20 73 74 79 6c 65 20 75 73 65 64 20 62 79     style used by
2de0: 20 6f 74 68 65 72 20 28 6e 6f 6e 20 4f 53 58 29   other (non OSX)
2df0: 20 75 6e 69 78 65 73 2e 20 4c 6f 63 6b 73 20 61   unixes. Locks a
2e00: 72 65 20 6f 62 74 61 69 6e 65 64 20 61 6e 64 20  re obtained and 
2e10: 0a 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73  .         releas
2e20: 65 64 20 75 73 69 6e 67 20 74 68 65 20 66 63 6e  ed using the fcn
2e30: 74 6c 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  tl() system call
2e40: 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 41 46 50 20  ...    <li> AFP 
2e50: 6c 6f 63 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54  locking style. T
2e60: 68 69 73 20 6c 6f 63 6b 69 6e 67 20 73 74 79 6c  his locking styl
2e70: 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 6e 65  e is used for ne
2e80: 74 77 6f 72 6b 20 66 69 6c 65 20 0a 20 20 20 20  twork file .    
2e90: 20 20 20 20 20 73 79 73 74 65 6d 73 20 74 68 61       systems tha
2ea0: 74 20 75 73 65 20 74 68 65 20 41 46 50 20 28 41  t use the AFP (A
2eb0: 70 70 6c 65 20 46 69 6c 69 6e 67 20 50 72 6f 74  pple Filing Prot
2ec0: 6f 63 6f 6c 29 20 70 72 6f 74 6f 63 6f 6c 2e 20  ocol) protocol. 
2ed0: 4c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 61  Locks.         a
2ee0: 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63  re obtained by c
2ef0: 61 6c 6c 69 6e 67 20 74 68 65 20 6c 69 62 72 61  alling the libra
2f00: 72 79 20 66 75 6e 63 74 69 6f 6e 20 5f 41 46 50  ry function _AFP
2f10: 46 53 53 65 74 4c 6f 63 6b 28 29 2e 0a 0a 20 20  FSSetLock()...  
2f20: 20 20 3c 6c 69 3e 20 46 6c 6f 63 6b 20 6c 6f 63    <li> Flock loc
2f30: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 54 68 69 73  king style. This
2f40: 20 69 73 20 75 73 65 64 20 66 6f 72 20 66 69 6c   is used for fil
2f50: 65 2d 73 79 73 74 65 6d 73 20 74 68 61 74 20 64  e-systems that d
2f60: 6f 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 73  o not.         s
2f70: 75 70 70 6f 72 74 20 50 6f 73 69 78 20 6c 6f 63  upport Posix loc
2f80: 6b 69 6e 67 20 73 74 79 6c 65 2e 20 4c 6f 63 6b  king style. Lock
2f90: 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 61  s are obtained a
2fa0: 6e 64 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e  nd released usin
2fb0: 67 0a 20 20 20 20 20 20 20 20 20 74 68 65 20 66  g.         the f
2fc0: 6c 6f 63 6b 28 29 20 73 79 73 74 65 6d 20 63 61  lock() system ca
2fd0: 6c 6c 2e 0a 0a 20 20 20 20 3c 6c 69 3e 20 44 6f  ll...    <li> Do
2fe0: 74 2d 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 73  t-file locking s
2ff0: 74 79 6c 65 2e 20 54 68 69 73 20 6c 6f 63 6b 69  tyle. This locki
3000: 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65 64  ng style is used
3010: 20 77 68 65 6e 20 6e 65 69 74 68 65 72 0a 20 20   when neither.  
3020: 20 20 20 20 20 20 20 66 6c 6f 63 6b 20 6e 6f 72         flock nor
3030: 20 50 6f 73 69 78 20 6c 6f 63 6b 69 6e 67 20 73   Posix locking s
3040: 74 79 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72  tyles are suppor
3050: 74 65 64 20 62 79 20 74 68 65 20 66 69 6c 65 20  ted by the file 
3060: 73 79 73 74 65 6d 2e 0a 20 20 20 20 20 20 20 20  system..        
3070: 20 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 73 20   Database locks 
3080: 61 72 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20  are obtained by 
3090: 63 72 65 61 74 69 6e 67 20 61 6e 64 20 65 6e 74  creating and ent
30a0: 72 79 20 69 6e 20 74 68 65 20 66 69 6c 65 2d 73  ry in the file-s
30b0: 79 73 74 65 6d 0a 20 20 20 20 20 20 20 20 20 61  ystem.         a
30c0: 74 20 61 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20 6c  t a well-known l
30d0: 6f 63 61 74 69 6f 6e 20 72 65 6c 61 74 69 76 65  ocation relative
30e0: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
30f0: 20 66 69 6c 65 20 28 61 20 22 64 6f 74 2d 66 69   file (a "dot-fi
3100: 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 61 6e  le").         an
3110: 64 20 72 65 6c 69 6e 71 75 69 73 68 65 64 20 62  d relinquished b
3120: 79 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 73  y deleting the s
3130: 61 6d 65 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3c  ame file...    <
3140: 6c 69 3e 20 4e 6f 20 6c 6f 63 6b 69 6e 67 20 73  li> No locking s
3150: 74 79 6c 65 2e 20 49 66 20 6e 6f 6e 65 20 6f 66  tyle. If none of
3160: 20 74 68 65 20 61 62 6f 76 65 20 63 61 6e 20 62   the above can b
3170: 65 20 73 75 70 70 6f 72 74 65 64 2c 20 74 68 69  e supported, thi
3180: 73 20 0a 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  s .         lock
3190: 69 6e 67 20 73 74 79 6c 65 20 69 73 20 75 73 65  ing style is use
31a0: 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 20 6c  d. No database l
31b0: 6f 63 6b 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  ocking mechanism
31c0: 20 69 73 20 75 73 65 64 2e 20 57 68 65 6e 0a 20   is used. When. 
31d0: 20 20 20 20 20 20 20 20 74 68 69 73 20 73 79 73          this sys
31e0: 74 65 6d 20 69 73 20 75 73 65 64 20 69 74 20 69  tem is used it i
31f0: 73 20 6e 6f 74 20 73 61 66 65 20 66 6f 72 20 61  s not safe for a
3200: 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65   single database
3210: 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20   to be.         
3220: 61 63 63 65 73 73 65 64 20 62 79 20 6d 75 6c 74  accessed by mult
3230: 69 70 6c 65 20 63 6c 69 65 6e 74 73 2e 0a 20 20  iple clients..  
3240: 3c 2f 75 6c 3e 0a 0a 20 20 41 64 64 69 74 69 6f  </ul>..  Additio
3250: 6e 61 6c 6c 79 2c 20 66 69 76 65 20 65 78 74 72  nally, five extr
3260: 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61  a VFS implementa
3270: 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 76 69 64  tions are provid
3280: 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68  ed as well as th
3290: 65 0a 20 20 64 65 66 61 75 6c 74 2e 20 42 79 20  e.  default. By 
32a0: 73 70 65 63 69 66 79 69 6e 67 20 6f 6e 65 20 6f  specifying one o
32b0: 66 20 74 68 65 20 65 78 74 72 61 20 56 46 53 20  f the extra VFS 
32c0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
32d0: 0a 20 20 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20  .  when calling 
32e0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
32f0: 28 29 5d 2c 20 61 6e 20 61 70 70 6c 69 63 61 74  ()], an applicat
3300: 69 6f 6e 20 6d 61 79 20 62 79 70 61 73 73 20 74  ion may bypass t
3310: 68 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 0a 20  he file-system. 
3320: 20 64 65 74 65 63 74 69 6f 6e 20 6c 6f 67 69 63   detection logic
3330: 20 61 6e 64 20 65 78 70 6c 69 63 69 74 6c 79 20   and explicitly 
3340: 73 65 6c 65 63 74 20 6f 6e 65 20 6f 66 20 74 68  select one of th
3350: 65 20 61 62 6f 76 65 20 6c 6f 63 6b 69 6e 67 20  e above locking 
3360: 73 74 79 6c 65 73 2e 20 54 68 65 0a 20 20 66 69  styles. The.  fi
3370: 76 65 20 65 78 74 72 61 20 56 46 53 20 69 6d 70  ve extra VFS imp
3380: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65  lementations are
3390: 20 63 61 6c 6c 65 64 20 22 75 6e 69 78 2d 70 6f   called "unix-po
33a0: 73 69 78 22 2c 20 22 75 6e 69 78 2d 61 66 70 22  six", "unix-afp"
33b0: 2c 0a 20 20 22 75 6e 69 78 2d 66 6c 6f 63 6b 22  ,.  "unix-flock"
33c0: 2c 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22  , "unix-dotfile"
33d0: 20 61 6e 64 20 22 75 6e 69 78 2d 6e 6f 6e 65 22   and "unix-none"
33e0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
33f0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42  ION {SQLITE_ENAB
3400: 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45  LE_MEMORY_MANAGE
3410: 4d 45 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MENT} {.  This o
3420: 70 74 69 6f 6e 20 61 64 64 73 20 65 78 74 72 61  ption adds extra
3430: 20 6c 6f 67 69 63 20 74 6f 20 53 51 4c 69 74 65   logic to SQLite
3440: 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 69 74 20   that allows it 
3450: 74 6f 20 72 65 6c 65 61 73 65 20 75 6e 75 73 65  to release unuse
3460: 64 0a 20 20 6d 65 6d 6f 72 79 20 75 70 6f 6e 20  d.  memory upon 
3470: 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 6f  request.  This o
3480: 70 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 65 6e  ption must be en
3490: 61 62 6c 65 64 20 69 6e 20 6f 72 64 65 72 20 66  abled in order f
34a0: 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65  or the.  [sqlite
34b0: 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79  3_release_memory
34c0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ()] interface to
34d0: 20 77 6f 72 6b 2e 20 20 49 66 20 74 68 69 73 20   work.  If this 
34e0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 6f  compile-time.  o
34f0: 70 74 69 6f 6e 20 69 73 20 6e 6f 74 20 75 73 65  ption is not use
3500: 64 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  d, the [sqlite3_
3510: 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29  release_memory()
3520: 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 61  ] interface is a
3530: 20 0a 20 20 6e 6f 2d 6f 70 2e 20 20 53 69 6e 63   .  no-op.  Sinc
3540: 65 20 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f  e [sqlite3_soft_
3550: 68 65 61 70 5f 6c 69 6d 69 74 28 29 5d 20 64 65  heap_limit()] de
3560: 70 65 6e 64 73 20 6f 6e 0a 20 20 5b 73 71 6c 69  pends on.  [sqli
3570: 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
3580: 72 79 28 29 5d 2c 20 74 68 69 73 20 6f 70 74 69  ry()], this opti
3590: 6f 6e 20 69 73 20 61 6c 73 6f 20 6e 65 63 65 73  on is also neces
35a0: 73 61 72 79 20 66 6f 72 0a 20 20 74 68 65 20 63  sary for.  the c
35b0: 6f 72 72 65 63 74 20 6f 70 65 72 61 74 69 6f 6e  orrect operation
35c0: 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 73 6f 66   of [sqlite3_sof
35d0: 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28 29 5d 2e  t_heap_limit()].
35e0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
35f0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
3600: 45 5f 4d 45 4d 53 59 53 33 7d 20 7b 0a 20 20 54  E_MEMSYS3} {.  T
3610: 68 69 73 20 6f 70 74 69 6f 6e 20 69 6e 63 6c 75  his option inclu
3620: 64 65 73 20 63 6f 64 65 20 69 6e 20 53 51 4c 69  des code in SQLi
3630: 74 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e  te that implemen
3640: 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  ts an alternativ
3650: 65 0a 20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  e.  memory alloc
3660: 61 74 6f 72 2e 20 20 54 68 69 73 20 61 6c 74 65  ator.  This alte
3670: 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 61  rnative memory a
3680: 6c 6c 6f 63 61 74 6f 72 20 69 73 20 6f 6e 6c 79  llocator is only
3690: 20 65 6e 67 61 67 65 64 0a 20 20 77 68 65 6e 20   engaged.  when 
36a0: 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  the [SQLITE_CONF
36b0: 49 47 5f 48 45 41 50 5d 20 6f 70 74 69 6f 6e 20  IG_HEAP] option 
36c0: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  to [sqlite3_conf
36d0: 69 67 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f  ig()] is used to
36e0: 0a 20 20 73 75 70 70 6c 79 20 61 20 6c 61 72 67  .  supply a larg
36f0: 65 20 63 68 75 6e 6b 20 6f 66 20 6d 65 6d 6f 72  e chunk of memor
3700: 79 20 66 72 6f 6d 20 77 68 69 63 68 20 61 6c 6c  y from which all
3710: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
3720: 6f 6e 73 20 61 72 65 0a 20 20 74 61 6b 65 6e 2e  ons are.  taken.
3730: 0a 20 20 54 68 65 20 4d 45 4d 53 59 53 33 20 6d  .  The MEMSYS3 m
3740: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
3750: 75 73 65 73 20 61 20 68 79 62 72 69 64 20 61 6c  uses a hybrid al
3760: 6c 6f 63 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74  location algorit
3770: 68 6d 20 0a 20 20 70 61 74 74 65 72 6e 65 64 20  hm .  patterned 
3780: 61 66 74 65 72 20 64 6c 6d 61 6c 6c 6f 63 28 29  after dlmalloc()
3790: 2e 20 20 20 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20  .   Only one of 
37a0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
37b0: 4d 53 59 53 33 20 61 6e 64 20 0a 20 20 53 51 4c  MSYS3 and .  SQL
37c0: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
37d0: 53 35 20 6d 61 79 20 62 65 20 65 6e 61 62 6c 65  S5 may be enable
37e0: 64 20 61 74 20 6f 6e 63 65 2e 0a 7d 0a 0a 43 4f  d at once..}..CO
37f0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
3800: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
3810: 59 53 35 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  YS5} {.  This op
3820: 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f  tion includes co
3830: 64 65 20 69 6e 20 53 51 4c 69 74 65 20 74 68 61  de in SQLite tha
3840: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20  t implements an 
3850: 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 6d 65  alternative.  me
3860: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20  mory allocator. 
3870: 20 54 68 69 73 20 61 6c 74 65 72 6e 61 74 69 76   This alternativ
3880: 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
3890: 6f 72 20 69 73 20 6f 6e 6c 79 20 65 6e 67 61 67  or is only engag
38a0: 65 64 0a 20 20 77 68 65 6e 20 74 68 65 20 5b 53  ed.  when the [S
38b0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41  QLITE_CONFIG_HEA
38c0: 50 5d 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71  P] option to [sq
38d0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
38e0: 69 73 20 75 73 65 64 20 74 6f 0a 20 20 73 75 70  is used to.  sup
38f0: 70 6c 79 20 61 20 6c 61 72 67 65 20 63 68 75 6e  ply a large chun
3900: 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d  k of memory from
3910: 20 77 68 69 63 68 20 61 6c 6c 20 6d 65 6d 6f 72   which all memor
3920: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72  y allocations ar
3930: 65 0a 20 20 74 61 6b 65 6e 2e 0a 20 20 54 68 65  e.  taken..  The
3940: 20 4d 45 4d 53 59 53 35 20 6d 6f 64 75 6c 65 20   MEMSYS5 module 
3950: 72 6f 75 6e 64 73 20 61 6c 6c 20 61 6c 6c 6f 63  rounds all alloc
3960: 61 74 69 6f 6e 73 20 75 70 20 74 6f 20 74 68 65  ations up to the
3970: 20 6e 65 78 74 20 70 6f 77 65 72 0a 20 20 6f 66   next power.  of
3980: 20 74 77 6f 20 61 6e 64 20 75 73 65 73 20 61 20   two and uses a 
3990: 66 69 72 73 74 2d 66 69 74 2c 20 62 75 64 64 79  first-fit, buddy
39a0: 2d 61 6c 6c 6f 63 61 74 6f 72 20 61 6c 67 6f 72  -allocator algor
39b0: 69 74 68 6d 0a 20 20 74 68 61 74 20 70 72 6f 76  ithm.  that prov
39c0: 69 64 65 73 20 73 74 72 6f 6e 67 20 67 75 61 72  ides strong guar
39d0: 61 6e 74 65 65 73 20 61 67 61 69 6e 73 74 20 66  antees against f
39e0: 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64  ragmentation and
39f0: 20 62 72 65 61 6b 64 6f 77 6e 0a 20 20 73 75 62   breakdown.  sub
3a00: 6a 65 63 74 20 74 6f 20 63 65 72 74 61 69 6e 20  ject to certain 
3a10: 6f 70 65 72 61 74 69 6e 67 20 63 6f 6e 73 74 72  operating constr
3a20: 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  aints..}..COMPIL
3a30: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3a40: 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 7d 20 7b  _ENABLE_RTREE} {
3a50: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  .  This option c
3a60: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20  auses SQLite to 
3a70: 69 6e 63 6c 75 64 65 20 73 75 70 70 6f 72 74 20  include support 
3a80: 66 6f 72 20 74 68 65 0a 20 20 5b 72 74 72 65 65  for the.  [rtree
3a90: 20 7c 20 52 2a 54 72 65 65 20 69 6e 64 65 78 20   | R*Tree index 
3aa0: 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d 0a 0a 43  extension]..}..C
3ab0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
3ac0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44  QLITE_ENABLE_UPD
3ad0: 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54  ATE_DELETE_LIMIT
3ae0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
3af0: 6e 20 65 6e 61 62 6c 65 73 20 61 6e 20 6f 70 74  n enables an opt
3b00: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
3b10: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  nd LIMIT clause 
3b20: 6f 6e 20 0a 20 20 5b 55 50 44 41 54 45 5d 20 61  on .  [UPDATE] a
3b30: 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  nd [DELETE] stat
3b40: 65 6d 65 6e 74 73 2e 0a 0a 20 20 3c 70 3e 49 66  ements...  <p>If
3b50: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
3b60: 64 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 69 74  defined, then it
3b70: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 0a 20   must also be . 
3b80: 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75 73   defined when us
3b90: 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27 20  ing the 'lemon' 
3ba0: 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74 65  tool to generate
3bb0: 20 61 20 70 61 72 73 65 2e 63 0a 20 20 66 69 6c   a parse.c.  fil
3bc0: 65 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68  e. Because of th
3bd0: 69 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  is, this option 
3be0: 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  may only be used
3bf0: 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72   when the librar
3c00: 79 20 69 73 20 62 75 69 6c 74 0a 20 20 66 72 6f  y is built.  fro
3c10: 6d 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72  m source, not fr
3c20: 6f 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61  om the [amalgama
3c30: 74 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68  tion] or from th
3c40: 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a  e collection of.
3c50: 20 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 43    pre-packaged C
3c60: 20 66 69 6c 65 73 20 70 72 6f 76 69 64 65 64 20   files provided 
3c70: 66 6f 72 20 6e 6f 6e 2d 55 4e 49 58 20 6c 69 6b  for non-UNIX lik
3c80: 65 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74  e platforms on t
3c90: 68 65 20 77 65 62 73 69 74 65 2e 0a 20 20 3c 2f  he website..  </
3ca0: 70 3e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  p>.}..COMPILE_OP
3cb0: 54 49 4f 4e 20 7b 59 59 54 52 41 43 4b 4d 41 58  TION {YYTRACKMAX
3cc0: 53 54 41 43 4b 44 45 50 54 48 7d 20 7b 0a 20 20  STACKDEPTH} {.  
3cd0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75 73  This option caus
3ce0: 65 73 20 74 68 65 20 4c 41 4c 52 28 31 29 20 70  es the LALR(1) p
3cf0: 61 72 73 65 72 20 73 74 61 63 6b 20 64 65 70 74  arser stack dept
3d00: 68 20 74 6f 20 62 65 20 74 72 61 63 6b 65 64 0a  h to be tracked.
3d10: 20 20 61 6e 64 20 72 65 70 6f 72 74 65 64 20 75    and reported u
3d20: 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
3d30: 33 5f 73 74 61 74 75 73 5d 28 5b 53 51 4c 49 54  3_status]([SQLIT
3d40: 45 5f 53 54 41 54 55 53 5f 50 41 52 53 45 52 5f  E_STATUS_PARSER_
3d50: 53 54 41 43 4b 5d 2c 2e 2e 2e 29 0a 20 20 69 6e  STACK],...).  in
3d60: 74 65 72 66 61 63 65 2e 20 20 53 51 4c 69 74 65  terface.  SQLite
3d70: 27 73 20 4c 41 4c 52 28 31 29 20 70 61 72 73 65  's LALR(1) parse
3d80: 72 20 68 61 73 20 61 20 66 69 78 65 64 20 73 74  r has a fixed st
3d90: 61 63 6b 20 64 65 70 74 68 0a 20 20 28 64 65 74  ack depth.  (det
3da0: 65 72 6d 69 6e 65 64 20 61 74 20 63 6f 6d 70 69  ermined at compi
3db0: 6c 65 2d 74 69 6d 65 20 75 73 69 6e 67 20 74 68  le-time using th
3dc0: 65 20 5b 59 59 53 54 41 43 4b 44 45 50 54 48 5d  e [YYSTACKDEPTH]
3dd0: 20 6f 70 74 69 6f 6e 73 29 2e 0a 20 20 54 68 69   options)..  Thi
3de0: 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  s option can be 
3df0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74  used to help det
3e00: 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 61 70 70  ermine if an app
3e10: 6c 69 63 61 74 69 6f 6e 20 69 73 0a 20 20 67 65  lication is.  ge
3e20: 74 74 69 6e 67 20 63 6c 6f 73 65 20 74 6f 20 65  tting close to e
3e30: 78 63 65 65 64 69 6e 67 20 74 68 65 20 6d 61 78  xceeding the max
3e40: 69 6d 75 6d 20 4c 41 4c 52 28 31 29 20 73 74 61  imum LALR(1) sta
3e50: 63 6b 20 64 65 70 74 68 2e 0a 7d 0a 3c 2f 74 63  ck depth..}.</tc
3e60: 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6f 6d 69  l>..<a name="omi
3e70: 74 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a  tfeatures"></a>.
3e80: 3c 68 32 3e 31 2e 35 20 4f 70 74 69 6f 6e 73 20  <h2>1.5 Options 
3e90: 54 6f 20 4f 6d 69 74 20 46 65 61 74 75 72 65 73  To Omit Features
3ea0: 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f  </h2>..<p>The fo
3eb0: 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20  llowing options 
3ec0: 63 61 6e 20 75 73 65 64 20 74 6f 20 72 65 64 75  can used to redu
3ed0: 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ce the size of t
3ee0: 68 65 20 63 6f 6d 70 69 6c 65 64 0a 6c 69 62 72  he compiled.libr
3ef0: 61 72 79 20 62 79 20 6f 6d 69 74 74 69 6e 67 20  ary by omitting 
3f00: 6f 70 74 69 6f 6e 61 6c 20 66 65 61 74 75 72 65  optional feature
3f10: 73 2e 20 54 68 69 73 20 69 73 20 70 72 6f 62 61  s. This is proba
3f20: 62 6c 79 20 6f 6e 6c 79 20 75 73 65 66 75 6c 0a  bly only useful.
3f30: 69 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73 74  in embedded syst
3f40: 65 6d 73 20 77 68 65 72 65 20 73 70 61 63 65 20  ems where space 
3f50: 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 74 69  is especially ti
3f60: 67 68 74 2c 20 61 73 20 65 76 65 6e 20 77 69 74  ght, as even wit
3f70: 68 20 61 6c 6c 0a 66 65 61 74 75 72 65 73 20 69  h all.features i
3f80: 6e 63 6c 75 64 65 64 20 74 68 65 20 53 51 4c 69  ncluded the SQLi
3f90: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 72 65  te library is re
3fa0: 6c 61 74 69 76 65 6c 79 20 73 6d 61 6c 6c 2e 20  latively small. 
3fb0: 44 6f 6e 27 74 20 66 6f 72 67 65 74 0a 74 6f 20  Don't forget.to 
3fc0: 74 65 6c 6c 20 79 6f 75 72 20 63 6f 6d 70 69 6c  tell your compil
3fd0: 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 66  er to optimize f
3fe0: 6f 72 20 62 69 6e 61 72 79 20 73 69 7a 65 21 20  or binary size! 
3ff0: 28 74 68 65 20 2d 4f 73 20 6f 70 74 69 6f 6e 20  (the -Os option 
4000: 69 66 0a 75 73 69 6e 67 20 47 43 43 29 2e 20 20  if.using GCC).  
4010: 54 65 6c 6c 69 6e 67 20 79 6f 75 72 20 63 6f 6d  Telling your com
4020: 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d 69 7a  piler to optimiz
4030: 65 20 66 6f 72 20 73 69 7a 65 20 75 73 75 61 6c  e for size usual
4040: 6c 79 20 68 61 73 0a 61 20 6d 75 63 68 20 6c 61  ly has.a much la
4050: 72 67 65 20 69 6d 70 61 63 74 20 6f 6e 20 6c 69  rge impact on li
4060: 62 72 61 72 79 20 66 6f 6f 74 70 72 69 6e 74 20  brary footprint 
4070: 74 68 61 6e 20 65 6d 70 6c 6f 79 69 6e 67 20 61  than employing a
4080: 6e 79 20 6f 66 20 74 68 65 73 65 0a 63 6f 6d 70  ny of these.comp
4090: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
40a0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 61  .</p>..<p>The ma
40b0: 63 72 6f 73 20 69 6e 20 74 68 69 73 20 73 65 63  cros in this sec
40c0: 74 69 6f 6e 20 64 6f 20 6e 6f 74 20 72 65 71 75  tion do not requ
40d0: 69 72 65 20 76 61 6c 75 65 73 2e 20 54 68 65 20  ire values. The 
40e0: 66 6f 6c 6c 6f 77 69 6e 67 20 0a 63 6f 6d 70 69  following .compi
40f0: 6c 61 74 69 6f 6e 20 73 77 69 74 63 68 65 73 20  lation switches 
4100: 61 6c 6c 20 68 61 76 65 20 74 68 65 20 73 61 6d  all have the sam
4110: 65 20 65 66 66 65 63 74 3a 3c 62 72 3e 0a 2d 44  e effect:<br>.-D
4120: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
4130: 52 54 41 42 4c 45 3c 62 72 3e 0a 2d 44 53 51 4c  RTABLE<br>.-DSQL
4140: 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41  ITE_OMIT_ALTERTA
4150: 42 4c 45 3d 31 3c 62 72 3e 0a 2d 44 53 51 4c 49  BLE=1<br>.-DSQLI
4160: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
4170: 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  LE=0.</p>..<p>If
4180: 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6f 70   any of these op
4190: 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e 65  tions are define
41a0: 64 2c 20 74 68 65 6e 20 74 68 65 20 73 61 6d 65  d, then the same
41b0: 20 73 65 74 20 6f 66 20 53 51 4c 49 54 45 5f 4f   set of SQLITE_O
41c0: 4d 49 54 5f 58 58 58 0a 6f 70 74 69 6f 6e 73 20  MIT_XXX.options 
41d0: 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 64 65 66  must also be def
41e0: 69 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20  ined when using 
41f0: 74 68 65 20 27 6c 65 6d 6f 6e 27 20 74 6f 6f 6c  the 'lemon' tool
4200: 20 74 6f 20 67 65 6e 65 72 61 74 65 20 61 20 70   to generate a p
4210: 61 72 73 65 2e 63 0a 66 69 6c 65 2e 20 42 65 63  arse.c.file. Bec
4220: 61 75 73 65 20 6f 66 20 74 68 69 73 2c 20 74 68  ause of this, th
4230: 65 73 65 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ese options may 
4240: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65  only be used whe
4250: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  n the library is
4260: 20 62 75 69 6c 74 0a 66 72 6f 6d 20 73 6f 75 72   built.from sour
4270: 63 65 2c 20 6e 6f 74 20 66 72 6f 6d 20 74 68 65  ce, not from the
4280: 20 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 20   [amalgamation] 
4290: 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c  or from the coll
42a0: 65 63 74 69 6f 6e 20 6f 66 0a 70 72 65 2d 70 61  ection of.pre-pa
42b0: 63 6b 61 67 65 64 20 43 20 66 69 6c 65 73 20 70  ckaged C files p
42c0: 72 6f 76 69 64 65 64 20 66 6f 72 20 6e 6f 6e 2d  rovided for non-
42d0: 55 4e 49 58 20 6c 69 6b 65 20 70 6c 61 74 66 6f  UNIX like platfo
42e0: 72 6d 73 20 6f 6e 20 74 68 65 20 77 65 62 73 69  rms on the websi
42f0: 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  te..</p>..<p>The
4300: 73 65 20 22 4f 4d 49 54 22 20 6f 70 74 69 6f 6e  se "OMIT" option
4310: 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64  s are considered
4320: 20 75 6e 73 75 70 70 6f 72 74 65 64 2e 20 20 41   unsupported.  A
4330: 6e 79 20 6f 66 20 74 68 65 73 65 0a 6f 70 74 69  ny of these.opti
4340: 6f 6e 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76  ons may be remov
4350: 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 64 65  ed from the code
4360: 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c   in a future rel
4370: 65 61 73 65 0a 61 6e 64 20 77 69 74 68 6f 75 74  ease.and without
4380: 20 77 61 72 6e 69 6e 67 2e 20 20 46 6f 72 20 61   warning.  For a
4390: 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 72 65  ny particular re
43a0: 6c 65 61 73 65 2c 20 73 6f 6d 65 20 6f 66 20 74  lease, some of t
43b0: 68 65 73 65 0a 6f 70 74 69 6f 6e 73 20 6d 61 79  hese.options may
43c0: 20 63 61 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74   cause compile-t
43d0: 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20  ime or run-time 
43e0: 66 61 69 6c 75 72 65 73 2e 3c 2f 70 3e 0a 0a 3c  failures.</p>..<
43f0: 74 63 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  tcl>.COMPILE_OPT
4400: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
4410: 5f 41 4c 54 45 52 54 41 42 4c 45 7d 20 7b 0a 20  _ALTERTABLE} {. 
4420: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
4430: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68  n is defined, th
4440: 65 20 0a 20 20 5b 41 4c 54 45 52 20 54 41 42 4c  e .  [ALTER TABL
4450: 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  E] command is no
4460: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  t included in th
4470: 65 20 0a 20 20 6c 69 62 72 61 72 79 2e 20 45 78  e .  library. Ex
4480: 65 63 75 74 69 6e 67 20 61 6e 20 5b 41 4c 54 45  ecuting an [ALTE
4490: 52 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  R TABLE] stateme
44a0: 6e 74 20 63 61 75 73 65 73 20 61 20 70 61 72 73  nt causes a pars
44b0: 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50  e error..}..COMP
44c0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
44d0: 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 7d  TE_OMIT_ANALYZE}
44e0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
44f0: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
4500: 2c 20 74 68 65 20 5b 41 4e 41 4c 59 5a 45 5d 20  , the [ANALYZE] 
4510: 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6d 69 74 74  command is omitt
4520: 65 64 20 66 72 6f 6d 0a 20 20 74 68 65 20 62 75  ed from.  the bu
4530: 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ild..}..COMPILE_
4540: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
4550: 4d 49 54 5f 41 54 54 41 43 48 7d 20 7b 0a 20 20  MIT_ATTACH} {.  
4560: 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e  When this option
4570: 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65   is defined, the
4580: 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44   [ATTACH] and [D
4590: 45 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20  ETACH] commands 
45a0: 61 72 65 0a 20 20 6f 6d 69 74 74 65 64 20 66 72  are.  omitted fr
45b0: 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  om the build..}.
45c0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
45d0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
45e0: 48 4f 52 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20  HORIZATION} {.  
45f0: 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f 70  Defining this op
4600: 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65 20 61  tion omits the a
4610: 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c  uthorization cal
4620: 6c 62 61 63 6b 20 66 65 61 74 75 72 65 20 66 72  lback feature fr
4630: 6f 6d 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79  om the.  library
4640: 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  . The [sqlite3_s
4650: 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d  et_authorizer()]
4660: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 73   API function is
4670: 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20 20 69   not present.  i
4680: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 7d  n the library..}
4690: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
46a0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55   {SQLITE_OMIT_AU
46b0: 54 4f 49 4e 43 52 45 4d 45 4e 54 7d 20 7b 0a 20  TOINCREMENT} {. 
46c0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
46d0: 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65  used to omit the
46e0: 20 0a 20 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45   .  [AUTOINCREME
46f0: 4e 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  NT] functionalit
4700: 79 2e 20 57 68 65 6e 20 74 68 69 73 20 0a 20 20  y. When this .  
4710: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
4720: 6e 65 64 2c 20 63 6f 6c 75 6d 6e 73 20 64 65 63  ned, columns dec
4730: 6c 61 72 65 64 20 61 73 20 0a 20 20 22 5b 49 4e  lared as .  "[IN
4740: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
4750: 59 5d 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  Y] AUTOINCREMENT
4760: 22 0a 20 20 62 65 68 61 76 65 20 69 6e 20 74 68  ".  behave in th
4770: 65 20 73 61 6d 65 20 77 61 79 20 61 73 20 63 6f  e same way as co
4780: 6c 75 6d 6e 73 20 64 65 63 6c 61 72 65 64 20 61  lumns declared a
4790: 73 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  s "[INTEGER PRIM
47a0: 41 52 59 20 4b 45 59 5d 22 20 77 68 65 6e 20 61  ARY KEY]" when a
47b0: 20 0a 20 20 4e 55 4c 4c 20 69 73 20 69 6e 73 65   .  NULL is inse
47c0: 72 74 65 64 2e 20 54 68 65 20 73 71 6c 69 74 65  rted. The sqlite
47d0: 5f 73 65 71 75 65 6e 63 65 20 73 79 73 74 65 6d  _sequence system
47e0: 20 74 61 62 6c 65 20 69 73 20 6e 65 69 74 68 65   table is neithe
47f0: 72 20 63 72 65 61 74 65 64 2c 20 6e 6f 72 0a 20  r created, nor. 
4800: 20 72 65 73 70 65 63 74 65 64 20 69 66 20 69 74   respected if it
4810: 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 2e   already exists.
4820: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
4830: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
4840: 41 55 54 4f 49 4e 49 54 7d 20 7b 0a 20 20 46 6f  AUTOINIT} {.  Fo
4850: 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  r backwards comp
4860: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f  atibility with o
4870: 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  lder versions of
4880: 20 53 51 4c 69 74 65 20 74 68 61 74 20 6c 61 63   SQLite that lac
4890: 6b 0a 20 20 74 68 65 20 5b 73 71 6c 69 74 65 33  k.  the [sqlite3
48a0: 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 69  _initialize()] i
48b0: 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20 5b 73  nterface, the [s
48c0: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
48d0: 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 20  e()] interface. 
48e0: 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d   is called autom
48f0: 61 74 69 63 61 6c 6c 79 20 75 70 6f 6e 20 65 6e  atically upon en
4900: 74 72 79 20 74 6f 20 63 65 72 74 61 69 6e 20 6b  try to certain k
4910: 65 79 20 69 6e 74 65 72 66 61 63 65 73 20 73 75  ey interfaces su
4920: 63 68 20 61 73 0a 20 20 5b 73 71 6c 69 74 65 33  ch as.  [sqlite3
4930: 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74  _open()], [sqlit
4940: 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28  e3_vfs_register(
4950: 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  )], and [sqlite3
4960: 5f 6d 70 72 69 6e 74 66 28 29 5d 2e 0a 20 20 54  _mprintf()]..  T
4970: 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 69  he overhead of i
4980: 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33  nvoking [sqlite3
4990: 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 61  _initialize()] a
49a0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20  utomatically in 
49b0: 74 68 69 73 0a 20 20 77 61 79 20 6d 61 79 20 62  this.  way may b
49c0: 65 20 6f 6d 69 74 74 65 64 20 62 79 20 62 75 69  e omitted by bui
49d0: 6c 64 69 6e 67 20 53 51 4c 69 74 65 20 77 69 74  lding SQLite wit
49e0: 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49  h the SQLITE_OMI
49f0: 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 43 2d 70  T_AUTOINIT.  C-p
4a00: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
4a10: 6f 2e 20 20 57 68 65 6e 20 62 75 69 6c 74 20 75  o.  When built u
4a20: 73 69 6e 67 20 53 51 4c 49 54 45 5f 4f 4d 49 54  sing SQLITE_OMIT
4a30: 5f 41 55 54 4f 49 4e 49 54 2c 20 53 51 4c 69 74  _AUTOINIT, SQLit
4a40: 65 0a 20 20 77 69 6c 6c 20 6e 6f 74 20 61 75 74  e.  will not aut
4a50: 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 69 74 69  omatically initi
4a60: 61 6c 69 7a 65 20 69 74 73 65 6c 66 20 61 6e 64  alize itself and
4a70: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
4a80: 20 69 73 20 72 65 71 75 69 72 65 64 0a 20 20 74   is required.  t
4a90: 6f 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  o invoke [sqlite
4aa0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
4ab0: 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74  directly prior t
4ac0: 6f 20 62 65 67 69 6e 6e 69 6e 67 20 75 73 65 20  o beginning use 
4ad0: 6f 66 20 74 68 65 0a 20 20 53 51 4c 69 74 65 20  of the.  SQLite 
4ae0: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
4af0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4b00: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55  TE_OMIT_AUTOVACU
4b10: 55 4d 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20  UM} {.  If this 
4b20: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
4b30: 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20 63  d, the library c
4b40: 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 6f 72 20  annot create or 
4b50: 77 72 69 74 65 20 74 6f 20 0a 20 20 64 61 74 61  write to .  data
4b60: 62 61 73 65 73 20 74 68 61 74 20 73 75 70 70 6f  bases that suppo
4b70: 72 74 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d  rt [auto_vacuum]
4b80: 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
4b90: 5b 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63  [PRAGMA auto_vac
4ba0: 75 75 6d 5d 20 73 74 61 74 65 6d 65 6e 74 20 69  uum] statement i
4bb0: 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 0a 20  s not an error. 
4bc0: 20 28 73 69 6e 63 65 20 75 6e 6b 6e 6f 77 6e 20   (since unknown 
4bd0: 50 52 41 47 4d 41 73 20 61 72 65 20 73 69 6c 65  PRAGMAs are sile
4be0: 6e 74 6c 79 20 69 67 6e 6f 72 65 64 29 2c 20 62  ntly ignored), b
4bf0: 75 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75  ut does not retu
4c00: 72 6e 20 61 20 76 61 6c 75 65 0a 20 20 6f 72 20  rn a value.  or 
4c10: 6d 6f 64 69 66 79 20 74 68 65 20 61 75 74 6f 2d  modify the auto-
4c20: 76 61 63 75 75 6d 20 66 6c 61 67 20 69 6e 20 74  vacuum flag in t
4c30: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
4c40: 2e 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20  . If a database 
4c50: 74 68 61 74 0a 20 20 73 75 70 70 6f 72 74 73 20  that.  supports 
4c60: 61 75 74 6f 2d 76 61 63 75 75 6d 20 69 73 20 6f  auto-vacuum is o
4c70: 70 65 6e 65 64 20 62 79 20 61 20 6c 69 62 72 61  pened by a libra
4c80: 72 79 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  ry compiled with
4c90: 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 69 74   this option, it
4ca0: 0a 20 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  .  is automatica
4cb0: 6c 6c 79 20 6f 70 65 6e 65 64 20 69 6e 20 72 65  lly opened in re
4cc0: 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 0a 7d 0a  ad-only mode..}.
4cd0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4ce0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54  {SQLITE_OMIT_BET
4cf0: 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  WEEN_OPTIMIZATIO
4d00: 4e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  N} {.  This opti
4d10: 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20  on disables the 
4d20: 75 73 65 20 6f 66 20 69 6e 64 69 63 65 73 20 77  use of indices w
4d30: 69 74 68 20 57 48 45 52 45 20 63 6c 61 75 73 65  ith WHERE clause
4d40: 20 74 65 72 6d 73 0a 20 20 74 68 61 74 20 65 6d   terms.  that em
4d50: 70 6c 6f 79 20 74 68 65 20 42 45 54 57 45 45 4e  ploy the BETWEEN
4d60: 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f   operator..}..CO
4d70: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
4d80: 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c  LITE_OMIT_BLOB_L
4d90: 49 54 45 52 41 4c 7d 20 7b 0a 20 20 57 68 65 6e  ITERAL} {.  When
4da0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
4db0: 64 65 66 69 6e 65 64 2c 20 69 74 20 69 73 20 6e  defined, it is n
4dc0: 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73  ot possible to s
4dd0: 70 65 63 69 66 79 20 61 20 62 6c 6f 62 20 69 6e  pecify a blob in
4de0: 0a 20 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  .  an SQL statem
4df0: 65 6e 74 20 75 73 69 6e 67 20 74 68 65 20 58 27  ent using the X'
4e00: 41 42 43 44 27 20 73 79 6e 74 61 78 2e 0a 7d 0a  ABCD' syntax..}.
4e10: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4e20: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55 49  {SQLITE_OMIT_BUI
4e30: 4c 54 49 4e 5f 54 45 53 54 7d 20 7b 0a 20 20 41  LTIN_TEST} {.  A
4e40: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
4e50: 20 62 75 69 6c 64 20 69 6e 63 6c 75 64 65 73 20   build includes 
4e60: 61 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f  a small amount o
4e70: 66 20 6c 6f 67 69 63 20 63 6f 6e 74 72 6f 6c 6c  f logic controll
4e80: 65 64 0a 20 20 62 79 20 74 68 65 20 5b 73 71 6c  ed.  by the [sql
4e90: 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f  ite3_test_contro
4ea0: 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74  l()] interface t
4eb0: 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 65  hat is used to e
4ec0: 78 65 72 63 69 73 65 0a 20 20 70 61 72 74 73 20  xercise.  parts 
4ed0: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  of the SQLite co
4ee0: 72 65 20 74 68 61 74 20 61 72 65 20 64 69 66 66  re that are diff
4ef0: 69 63 75 6c 74 20 74 6f 20 63 6f 6e 74 72 6f 6c  icult to control
4f00: 20 61 6e 64 20 6d 65 61 73 75 72 65 20 75 73 69   and measure usi
4f10: 6e 67 0a 20 20 74 68 65 20 73 74 61 6e 64 61 72  ng.  the standar
4f20: 64 20 41 50 49 2e 20 20 54 68 69 73 20 6f 70 74  d API.  This opt
4f30: 69 6f 6e 20 6f 6d 69 74 73 20 74 68 61 74 20 62  ion omits that b
4f40: 75 69 6c 74 2d 69 6e 20 74 65 73 74 20 6c 6f 67  uilt-in test log
4f50: 69 63 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ic..}..COMPILE_O
4f60: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
4f70: 49 54 5f 43 41 53 54 7d 20 7b 0a 20 20 54 68 69  IT_CAST} {.  Thi
4f80: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
4f90: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
4fa0: 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43  upport for the C
4fb0: 41 53 54 20 6f 70 65 72 61 74 6f 72 2e 0a 7d 0a  AST operator..}.
4fc0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4fd0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45  {SQLITE_OMIT_CHE
4fe0: 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74  CK} {.  This opt
4ff0: 69 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74  ion causes SQLit
5000: 65 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72  e to omit suppor
5010: 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73  t for CHECK cons
5020: 74 72 61 69 6e 74 73 2e 0a 7d 0a 0a 43 4f 4d 50  traints..}..COMP
5030: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5040: 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45  TE_OMIT_COMPLETE
5050: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
5060: 6e 20 63 61 75 73 65 73 20 74 68 65 20 5b 73 71  n causes the [sq
5070: 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29  lite3_complete()
5080: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  ] and [sqlite3_c
5090: 6f 6d 70 6c 65 74 65 31 36 28 29 5d 0a 20 20 69  omplete16()].  i
50a0: 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20  nterfaces to be 
50b0: 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50  omitted..}..COMP
50c0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
50d0: 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44  TE_OMIT_COMPOUND
50e0: 5f 53 45 4c 45 43 54 7d 20 7b 0a 20 20 54 68 69  _SELECT} {.  Thi
50f0: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
5100: 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 63 6f 6d   to omit the com
5110: 70 6f 75 6e 64 20 5b 53 45 4c 45 43 54 5d 20 66  pound [SELECT] f
5120: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 20 0a 20  unctionality. . 
5130: 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d   [SELECT] statem
5140: 65 6e 74 73 20 74 68 61 74 20 75 73 65 20 74 68  ents that use th
5150: 65 20 0a 20 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f  e .  UNION, UNIO
5160: 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54  N ALL, INTERSECT
5170: 20 6f 72 20 45 58 43 45 50 54 20 63 6f 6d 70 6f   or EXCEPT compo
5180: 75 6e 64 20 53 45 4c 45 43 54 20 6f 70 65 72 61  und SELECT opera
5190: 74 6f 72 73 20 77 69 6c 6c 20 0a 20 20 63 61 75  tors will .  cau
51a0: 73 65 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  se a parse error
51b0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
51c0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
51d0: 5f 43 4f 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45  _CONFLICT_CLAUSE
51e0: 7d 20 7b 0a 20 20 49 6e 20 74 68 65 20 66 75 74  } {.  In the fut
51f0: 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  ure, this option
5200: 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f   will be used to
5210: 20 6f 6d 69 74 20 74 68 65 20 0a 20 20 5b 4f 4e   omit the .  [ON
5220: 20 43 4f 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73   CONFLICT] claus
5230: 65 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61  e from the libra
5240: 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ry..}..COMPILE_O
5250: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
5260: 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43  IT_DATETIME_FUNC
5270: 53 7d 20 7b 0a 20 20 49 66 20 74 68 69 73 20 6f  S} {.  If this o
5280: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
5290: 2c 20 53 51 4c 69 74 65 27 73 20 62 75 69 6c 74  , SQLite's built
52a0: 2d 69 6e 20 64 61 74 65 20 61 6e 64 20 74 69 6d  -in date and tim
52b0: 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 0a 20  e manipulation. 
52c0: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6f   functions are o
52d0: 6d 69 74 74 65 64 2e 20 53 70 65 63 69 66 69 63  mitted. Specific
52e0: 61 6c 6c 79 2c 20 74 68 65 20 53 51 4c 20 66 75  ally, the SQL fu
52f0: 6e 63 74 69 6f 6e 73 20 6a 75 6c 69 61 6e 64 61  nctions julianda
5300: 79 28 29 2c 20 64 61 74 65 28 29 2c 0a 20 20 74  y(), date(),.  t
5310: 69 6d 65 28 29 2c 20 64 61 74 65 74 69 6d 65 28  ime(), datetime(
5320: 29 20 61 6e 64 20 73 74 72 66 74 69 6d 65 28 29  ) and strftime()
5330: 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62   are not availab
5340: 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  le. The default 
5350: 63 6f 6c 75 6d 6e 0a 20 20 76 61 6c 75 65 73 20  column.  values 
5360: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
5370: 52 52 45 4e 54 5f 44 41 54 45 20 61 6e 64 20 43  RRENT_DATE and C
5380: 55 52 52 45 4e 54 5f 44 41 54 45 54 49 4d 45 20  URRENT_DATETIME 
5390: 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61  are still availa
53a0: 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ble..}..COMPILE_
53b0: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
53c0: 4d 49 54 5f 44 45 43 4c 54 59 50 45 7d 20 7b 0a  MIT_DECLTYPE} {.
53d0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
53e0: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
53f0: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
5400: 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  the.  [sqlite3_c
5410: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 29  olumn_decltype()
5420: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  ] and [sqlite3_c
5430: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
5440: 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73  ()].  interfaces
5450: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
5460: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
5470: 5f 44 45 50 52 45 43 41 54 45 44 7d 20 7b 0a 20  _DEPRECATED} {. 
5480: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 75   This option cau
5490: 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f 6d  ses SQLite to om
54a0: 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69  it support for i
54b0: 6e 74 65 72 66 61 63 65 73 0a 20 20 6d 61 72 6b  nterfaces.  mark
54c0: 65 64 20 61 73 20 64 65 70 72 65 63 61 74 65 64  ed as deprecated
54d0: 2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73  .  This includes
54e0: 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 61 67 67   .  [sqlite3_agg
54f0: 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 29 5d 2c  regate_count()],
5500: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 69  .  [sqlite3_expi
5510: 72 65 64 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74  red()],.  [sqlit
5520: 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e 64  e3_transfer_bind
5530: 69 6e 67 73 28 29 5d 2c 0a 20 20 5b 73 71 6c 69  ings()],.  [sqli
5540: 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76  te3_global_recov
5550: 65 72 28 29 5d 2c 0a 20 20 5b 73 71 6c 69 74 65  er()],.  [sqlite
5560: 33 5f 74 68 72 65 61 64 5f 63 6c 65 61 6e 75 70  3_thread_cleanup
5570: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
5580: 65 33 5f 6d 65 6d 6f 72 79 5f 61 6c 61 72 6d 28  e3_memory_alarm(
5590: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d  )] interfaces..}
55a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
55b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49   {SQLITE_OMIT_DI
55c0: 53 4b 49 4f 7d 20 7b 0a 20 20 54 68 69 73 20 6f  SKIO} {.  This o
55d0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6c 6c 20  ption omits all 
55e0: 73 75 70 70 6f 72 74 20 66 6f 72 20 77 72 69 74  support for writ
55f0: 69 6e 67 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ing to the disk 
5600: 61 6e 64 20 66 6f 72 63 65 73 0a 20 20 64 61 74  and forces.  dat
5610: 61 62 61 73 65 73 20 74 6f 20 65 78 69 73 74 20  abases to exist 
5620: 69 6e 20 6d 65 6d 6f 72 79 20 6f 6e 6c 79 2e 0a  in memory only..
5630: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
5640: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45  N {SQLITE_OMIT_E
5650: 58 50 4c 41 49 4e 7d 20 7b 0a 20 20 44 65 66 69  XPLAIN} {.  Defi
5660: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
5670: 20 63 61 75 73 65 73 20 74 68 65 20 5b 45 58 50   causes the [EXP
5680: 4c 41 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f  LAIN] command to
5690: 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   be omitted from
56a0: 20 74 68 65 0a 20 20 6c 69 62 72 61 72 79 2e 20   the.  library. 
56b0: 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78  Attempting to ex
56c0: 65 63 75 74 65 20 61 6e 20 5b 45 58 50 4c 41 49  ecute an [EXPLAI
56d0: 4e 5d 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  N] statement wil
56e0: 6c 20 63 61 75 73 65 20 61 20 70 61 72 73 65 0a  l cause a parse.
56f0: 20 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50    error..}..COMP
5700: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5710: 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41  TE_OMIT_FLAG_PRA
5720: 47 4d 41 53 7d 20 7b 0a 20 20 54 68 69 73 20 6f  GMAS} {.  This o
5730: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
5740: 6f 72 74 20 66 6f 72 20 61 20 73 75 62 73 65 74  ort for a subset
5750: 20 6f 66 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d   of [PRAGMA] com
5760: 6d 61 6e 64 73 20 74 68 61 74 0a 20 20 71 75 65  mands that.  que
5770: 72 79 20 61 6e 64 20 73 65 74 20 62 6f 6f 6c 65  ry and set boole
5780: 61 6e 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 7d  an properties..}
5790: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
57a0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c   {SQLITE_OMIT_FL
57b0: 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 7d 20 7b 0a  OATING_POINT} {.
57c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
57d0: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 66 6c   used to omit fl
57e0: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d  oating-point num
57f0: 62 65 72 20 73 75 70 70 6f 72 74 20 66 72 6f 6d  ber support from
5800: 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69   the SQLite.  li
5810: 62 72 61 72 79 2e 20 57 68 65 6e 20 73 70 65 63  brary. When spec
5820: 69 66 69 65 64 2c 20 73 70 65 63 69 66 79 69 6e  ified, specifyin
5830: 67 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  g a floating poi
5840: 6e 74 20 6e 75 6d 62 65 72 20 61 73 20 61 20 6c  nt number as a l
5850: 69 74 65 72 61 6c 20 0a 20 20 28 69 2e 65 2e 20  iteral .  (i.e. 
5860: 22 31 2e 30 31 22 29 20 72 65 73 75 6c 74 73 20  "1.01") results 
5870: 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f 72  in a parse error
5880: 2e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68 65 20 66  ...  <p>In the f
5890: 75 74 75 72 65 2c 20 74 68 69 73 20 6f 70 74 69  uture, this opti
58a0: 6f 6e 20 6d 61 79 20 61 6c 73 6f 20 64 69 73 61  on may also disa
58b0: 62 6c 65 20 6f 74 68 65 72 20 66 6c 6f 61 74 69  ble other floati
58c0: 6e 67 20 70 6f 69 6e 74 20 0a 20 20 66 75 6e 63  ng point .  func
58d0: 74 69 6f 6e 61 6c 69 74 79 2c 20 66 6f 72 20 65  tionality, for e
58e0: 78 61 6d 70 6c 65 20 74 68 65 20 5b 73 71 6c 69  xample the [sqli
58f0: 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
5900: 65 28 29 5d 2c 20 0a 20 20 5b 73 71 6c 69 74 65  e()], .  [sqlite
5910: 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 29 5d  3_bind_double()]
5920: 2c 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  , [sqlite3_value
5930: 5f 64 6f 75 62 6c 65 28 29 5d 20 61 6e 64 0a 20  _double()] and. 
5940: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
5950: 5f 64 6f 75 62 6c 65 28 29 5d 20 41 50 49 20 66  _double()] API f
5960: 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 3c 2f 70 3e  unctions..  </p>
5970: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5980: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
5990: 46 4f 52 45 49 47 4e 5f 4b 45 59 7d 20 7b 0a 20  FOREIGN_KEY} {. 
59a0: 20 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   If this option 
59b0: 69 73 20 64 65 66 69 6e 65 64 2c 20 46 4f 52 45  is defined, FORE
59c0: 49 47 4e 20 4b 45 59 20 63 6c 61 75 73 65 73 20  IGN KEY clauses 
59d0: 69 6e 20 63 6f 6c 75 6d 6e 20 64 65 63 6c 61 72  in column declar
59e0: 61 74 69 6f 6e 73 20 61 72 65 0a 20 20 69 67 6e  ations are.  ign
59f0: 6f 72 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ored..}..COMPILE
5a00: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
5a10: 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 7d 20  OMIT_GET_TABLE} 
5a20: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
5a30: 63 61 75 73 65 73 20 73 75 70 70 6f 72 74 20 66  causes support f
5a40: 6f 72 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f  or [sqlite3_get_
5a50: 74 61 62 6c 65 28 29 5d 20 61 6e 64 0a 20 20 5b  table()] and.  [
5a60: 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
5a70: 6c 65 28 29 5d 20 74 6f 20 62 65 20 6f 6d 69 74  le()] to be omit
5a80: 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f  ted..}..COMPILE_
5a90: 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f  OPTION {SQLITE_O
5aa0: 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 7d 20 7b 0a  MIT_INCRBLOB} {.
5ab0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
5ac0: 75 73 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72  uses support for
5ad0: 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 7c   [sqlite3_blob |
5ae0: 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f   incremental BLO
5af0: 42 20 49 2f 4f 5d 0a 20 20 74 6f 20 62 65 20 6f  B I/O].  to be o
5b00: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
5b10: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5b20: 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59  E_OMIT_INTEGRITY
5b30: 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69 73  _CHECK} {.  This
5b40: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
5b50: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 69  pport for the [i
5b60: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 70  ntegrity_check p
5b70: 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49  ragma]..}..COMPI
5b80: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5b90: 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49  E_OMIT_LIKE_OPTI
5ba0: 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68  MIZATION} {.  Th
5bb0: 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
5bc0: 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f  es the ability o
5bd0: 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20  f SQLite to use 
5be0: 69 6e 64 69 63 65 73 20 74 6f 20 68 65 6c 70 0a  indices to help.
5bf0: 20 20 72 65 73 6f 6c 76 65 20 5b 4c 49 4b 45 5d    resolve [LIKE]
5c00: 20 61 6e 64 20 5b 47 4c 4f 42 5d 20 6f 70 65 72   and [GLOB] oper
5c10: 61 74 6f 72 73 20 69 6e 20 61 20 57 48 45 52 45  ators in a WHERE
5c20: 20 63 6c 61 75 73 65 2e 0a 7d 0a 0a 43 4f 4d 50   clause..}..COMP
5c30: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
5c40: 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54  TE_OMIT_LOAD_EXT
5c50: 45 4e 53 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ENSION} {.  This
5c60: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68   option omits th
5c70: 65 20 65 6e 74 69 72 65 20 65 78 74 65 6e 73 69  e entire extensi
5c80: 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d 65 63 68 61  on loading mecha
5c90: 6e 69 73 6d 20 66 72 6f 6d 0a 20 20 53 51 4c 69  nism from.  SQLi
5ca0: 74 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 5b 73  te, including [s
5cb0: 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f  qlite3_enable_lo
5cc0: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
5cd0: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c  and.  [sqlite3_l
5ce0: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d  oad_extension()]
5cf0: 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 7d 0a 0a   interfaces..}..
5d00: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
5d10: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41  SQLITE_OMIT_LOCA
5d20: 4c 54 49 4d 45 7d 20 7b 0a 20 20 54 68 69 73 20  LTIME} {.  This 
5d30: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74 68 65  option omits the
5d40: 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64   "localtime" mod
5d50: 69 66 69 65 72 20 66 72 6f 6d 20 74 68 65 20 64  ifier from the d
5d60: 61 74 65 20 61 6e 64 20 74 69 6d 65 0a 20 20 66  ate and time.  f
5d70: 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20  unctions.  This 
5d80: 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69  option is someti
5d90: 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20  mes useful when 
5da0: 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c  trying to compil
5db0: 65 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64  e.  the date and
5dc0: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20   time functions 
5dd0: 6f 6e 20 61 20 70 6c 61 74 66 6f 72 6d 20 74 68  on a platform th
5de0: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  at does not supp
5df0: 6f 72 74 20 74 68 65 0a 20 20 63 6f 6e 63 65 70  ort the.  concep
5e00: 74 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 2e  t of local time.
5e10: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
5e20: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
5e30: 4d 45 4d 4f 52 59 44 42 7d 20 7b 0a 20 20 57 68  MEMORYDB} {.  Wh
5e40: 65 6e 20 74 68 69 73 20 69 73 20 64 65 66 69 6e  en this is defin
5e50: 65 64 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20  ed, the library 
5e60: 64 6f 65 73 20 6e 6f 74 20 72 65 73 70 65 63 74  does not respect
5e70: 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61 74   the special dat
5e80: 61 62 61 73 65 0a 20 20 6e 61 6d 65 20 22 3a 6d  abase.  name ":m
5e90: 65 6d 6f 72 79 3a 22 20 28 6e 6f 72 6d 61 6c 6c  emory:" (normall
5ea0: 79 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65  y used to create
5eb0: 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61   an in-memory da
5ec0: 74 61 62 61 73 65 29 2e 20 49 66 20 0a 20 20 22  tabase). If .  "
5ed0: 3a 6d 65 6d 6f 72 79 3a 22 20 69 73 20 70 61 73  :memory:" is pas
5ee0: 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  sed to [sqlite3_
5ef0: 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65  open()], [sqlite
5f00: 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a  3_open16()], or.
5f10: 20 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f    [sqlite3_open_
5f20: 76 32 28 29 5d 2c 20 61 20 66 69 6c 65 20 77 69  v2()], a file wi
5f30: 74 68 20 74 68 69 73 20 6e 61 6d 65 20 77 69 6c  th this name wil
5f40: 6c 20 62 65 20 0a 20 20 6f 70 65 6e 65 64 20 6f  l be .  opened o
5f50: 72 20 63 72 65 61 74 65 64 2e 0a 7d 0a 0a 43 4f  r created..}..CO
5f60: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
5f70: 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54  LITE_OMIT_OR_OPT
5f80: 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54  IMIZATION} {.  T
5f90: 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62  his option disab
5fa0: 6c 65 73 20 74 68 65 20 61 62 69 6c 69 74 79 20  les the ability 
5fb0: 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  of SQLite to use
5fc0: 20 61 6e 20 69 6e 64 65 78 20 74 6f 67 65 74 68   an index togeth
5fd0: 65 72 0a 20 20 77 69 74 68 20 74 65 72 6d 73 20  er.  with terms 
5fe0: 6f 66 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  of a WHERE claus
5ff0: 65 20 63 6f 6e 6e 65 63 74 65 64 20 62 79 20 74  e connected by t
6000: 68 65 20 4f 52 20 6f 70 65 72 61 74 6f 72 2e 0a  he OR operator..
6010: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
6020: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  N {SQLITE_OMIT_P
6030: 41 47 45 52 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  AGER_PRAGMAS} {.
6040: 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20    Defining this 
6050: 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61  option omits pra
6060: 67 6d 61 73 20 72 65 6c 61 74 65 64 20 74 6f 20  gmas related to 
6070: 74 68 65 20 70 61 67 65 72 20 73 75 62 73 79 73  the pager subsys
6080: 74 65 6d 20 66 72 6f 6d 20 0a 20 20 74 68 65 20  tem from .  the 
6090: 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  build..}..COMPIL
60a0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
60b0: 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 7d 20 7b 0a  _OMIT_PRAGMA} {.
60c0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
60d0: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
60e0: 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d 61  e [PRAGMA] comma
60f0: 6e 64 0a 20 20 66 72 6f 6d 20 74 68 65 20 6c 69  nd.  from the li
6100: 62 72 61 72 79 2e 20 4e 6f 74 65 20 74 68 61 74  brary. Note that
6110: 20 69 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f   it is useful to
6120: 20 64 65 66 69 6e 65 20 74 68 65 20 6d 61 63 72   define the macr
6130: 6f 73 20 74 68 61 74 20 6f 6d 69 74 0a 20 20 73  os that omit.  s
6140: 70 65 63 69 66 69 63 20 70 72 61 67 6d 61 73 20  pecific pragmas 
6150: 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74  in addition to t
6160: 68 69 73 2c 20 61 73 20 74 68 65 79 20 6d 61 79  his, as they may
6170: 20 61 6c 73 6f 20 72 65 6d 6f 76 65 20 73 75 70   also remove sup
6180: 70 6f 72 74 69 6e 67 20 63 6f 64 65 0a 20 20 69  porting code.  i
6190: 6e 20 6f 74 68 65 72 20 73 75 62 2d 73 79 73 74  n other sub-syst
61a0: 65 6d 73 2e 20 54 68 69 73 20 6d 61 63 72 6f 20  ems. This macro 
61b0: 72 65 6d 6f 76 65 73 20 74 68 65 20 5b 50 52 41  removes the [PRA
61c0: 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c  GMA] command onl
61d0: 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  y..}..COMPILE_OP
61e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
61f0: 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42  T_PROGRESS_CALLB
6200: 41 43 4b 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ACK} {.  This op
6210: 74 69 6f 6e 20 6d 61 79 20 62 65 20 64 65 66 69  tion may be defi
6220: 6e 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20  ned to omit the 
6230: 63 61 70 61 62 69 6c 69 74 79 20 74 6f 20 69 73  capability to is
6240: 73 75 65 20 22 70 72 6f 67 72 65 73 73 22 20 0a  sue "progress" .
6250: 20 20 63 61 6c 6c 62 61 63 6b 73 20 64 75 72 69    callbacks duri
6260: 6e 67 20 6c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20  ng long-running 
6270: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  SQL statements. 
6280: 54 68 65 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  The .  [sqlite3_
6290: 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72  progress_handler
62a0: 28 29 5d 0a 20 20 41 50 49 20 66 75 6e 63 74 69  ()].  API functi
62b0: 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  on is not presen
62c0: 74 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  t in the library
62d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
62e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
62f0: 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45 7d 20 7b  _QUICKBALANCE} {
6300: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
6310: 6d 69 74 73 20 61 6e 20 61 6c 74 65 72 6e 61 74  mits an alternat
6320: 69 76 65 2c 20 66 61 73 74 65 72 20 42 2d 54 72  ive, faster B-Tr
6330: 65 65 20 62 61 6c 61 6e 63 69 6e 67 20 72 6f 75  ee balancing rou
6340: 74 69 6e 65 2e 0a 20 20 55 73 69 6e 67 20 74 68  tine..  Using th
6350: 69 73 20 6f 70 74 69 6f 6e 20 6d 61 6b 65 73 20  is option makes 
6360: 53 51 4c 69 74 65 20 73 6c 69 67 68 74 6c 79 20  SQLite slightly 
6370: 73 6d 61 6c 6c 65 72 20 61 74 20 74 68 65 20 65  smaller at the e
6380: 78 70 65 6e 73 65 20 6f 66 0a 20 20 6d 61 6b 69  xpense of.  maki
6390: 6e 67 20 69 74 20 72 75 6e 20 73 6c 69 67 68 74  ng it run slight
63a0: 6c 79 20 73 6c 6f 77 65 72 2e 0a 7d 0a 0a 43 4f  ly slower..}..CO
63b0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
63c0: 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45  LITE_OMIT_REINDE
63d0: 58 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73  X} {.  When this
63e0: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
63f0: 65 64 2c 20 74 68 65 20 5b 52 45 49 4e 44 45 58  ed, the [REINDEX
6400: 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  ].  command is n
6410: 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ot included in t
6420: 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20 45 78  he library..  Ex
6430: 65 63 75 74 69 6e 67 20 61 20 5b 52 45 49 4e 44  ecuting a [REIND
6440: 45 58 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61  EX] statement ca
6450: 75 73 65 73 20 0a 20 20 61 20 70 61 72 73 65 20  uses .  a parse 
6460: 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  error..}..COMPIL
6470: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
6480: 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41  _OMIT_SCHEMA_PRA
6490: 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69  GMAS} {.  Defini
64a0: 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f  ng this option o
64b0: 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66 6f 72  mits pragmas for
64c0: 20 71 75 65 72 79 69 6e 67 20 74 68 65 20 64 61   querying the da
64d0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 66 72  tabase schema fr
64e0: 6f 6d 20 0a 20 20 74 68 65 20 62 75 69 6c 64 2e  om .  the build.
64f0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
6500: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
6510: 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50  SCHEMA_VERSION_P
6520: 52 41 47 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69  RAGMAS} {.  Defi
6530: 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  ning this option
6540: 20 6f 6d 69 74 73 20 70 72 61 67 6d 61 73 20 66   omits pragmas f
6550: 6f 72 20 71 75 65 72 79 69 6e 67 20 61 6e 64 20  or querying and 
6560: 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 0a 20  modifying the . 
6570: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
6580: 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 75 73 65   version and use
6590: 72 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 74  r version from t
65a0: 68 65 20 62 75 69 6c 64 2e 20 53 70 65 63 69 66  he build. Specif
65b0: 69 63 61 6c 6c 79 2c 20 74 68 65 20 0a 20 20 5b  ically, the .  [
65c0: 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 5d 20  schema_version] 
65d0: 61 6e 64 20 5b 75 73 65 72 5f 76 65 72 73 69 6f  and [user_versio
65e0: 6e 5d 20 50 52 41 47 4d 41 73 20 61 72 65 20 6f  n] PRAGMAs are o
65f0: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
6600: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6610: 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41  E_OMIT_SHARED_CA
6620: 43 48 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  CHE} {.  This op
6630: 74 69 6f 6e 20 62 75 69 6c 64 73 20 53 51 4c 69  tion builds SQLi
6640: 74 65 20 77 69 74 68 6f 75 74 20 73 75 70 70 6f  te without suppo
6650: 72 74 20 66 6f 72 20 73 68 61 72 65 64 2d 63 61  rt for shared-ca
6660: 63 68 65 20 6d 6f 64 65 2e 0a 20 20 54 68 65 20  che mode..  The 
6670: 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f  [sqlite3_enable_
6680: 73 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 20  shared_cache()] 
6690: 69 73 20 6f 6d 69 74 74 65 64 20 61 6c 6f 6e 67  is omitted along
66a0: 20 77 69 74 68 20 61 20 66 61 69 72 0a 20 20 61   with a fair.  a
66b0: 6d 6f 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 77  mount of logic w
66c0: 69 74 68 69 6e 20 74 68 65 20 42 2d 54 72 65 65  ithin the B-Tree
66d0: 20 73 75 62 73 79 73 74 65 6d 20 61 73 73 6f 63   subsystem assoc
66e0: 69 61 74 65 64 20 77 69 74 68 20 73 68 61 72 65  iated with share
66f0: 64 0a 20 20 63 61 63 68 65 20 6d 61 6e 61 67 65  d.  cache manage
6700: 6d 65 6e 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ment..}..COMPILE
6710: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
6720: 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 7d 20 7b  OMIT_SUBQUERY} {
6730: 0a 20 20 49 66 20 64 65 66 69 6e 65 64 2c 20 73  .  If defined, s
6740: 75 70 70 6f 72 74 20 66 6f 72 20 73 75 62 2d 73  upport for sub-s
6750: 65 6c 65 63 74 73 20 61 6e 64 20 74 68 65 20 49  elects and the I
6760: 4e 28 29 20 6f 70 65 72 61 74 6f 72 20 61 72 65  N() operator are
6770: 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d   omitted..}..COM
6780: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6790: 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52  ITE_OMIT_TCL_VAR
67a0: 49 41 42 4c 45 7d 20 7b 0a 20 20 49 66 20 74 68  IABLE} {.  If th
67b0: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
67c0: 6e 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 70  ned, then the sp
67d0: 65 63 69 61 6c 20 22 24 3c 76 61 72 69 61 62 6c  ecial "$<variabl
67e0: 65 2d 6e 61 6d 65 3e 22 20 73 79 6e 74 61 78 0a  e-name>" syntax.
67f0: 20 20 75 73 65 64 20 74 6f 20 61 75 74 6f 6d 61    used to automa
6800: 74 69 63 61 6c 6c 79 20 62 69 6e 64 20 53 51 4c  tically bind SQL
6810: 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 54 43   variables to TC
6820: 4c 20 76 61 72 69 61 62 6c 65 73 20 69 73 20 6f  L variables is o
6830: 6d 69 74 74 65 64 2e 0a 7d 0a 0a 43 4f 4d 50 49  mitted..}..COMPI
6840: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6850: 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 7d 20 7b  E_OMIT_TEMPDB} {
6860: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
6870: 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72  mits support for
6880: 20 54 45 4d 50 20 6f 72 20 54 45 4d 50 4f 52 41   TEMP or TEMPORA
6890: 52 59 20 74 61 62 6c 65 73 2e 0a 7d 0a 0a 43 4f  RY tables..}..CO
68a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
68b0: 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 7d  LITE_OMIT_TRACE}
68c0: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
68d0: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
68e0: 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  or the [sqlite3_
68f0: 70 72 6f 66 69 6c 65 28 29 5d 20 61 6e 64 0a 20  profile()] and. 
6900: 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28   [sqlite3_trace(
6910: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e  )] interfaces an
6920: 64 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74  d their associat
6930: 65 64 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d  ed logic..}..COM
6940: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
6950: 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52  ITE_OMIT_TRIGGER
6960: 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74  } {.  Defining t
6970: 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73  his option omits
6980: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45   support for VIE
6990: 57 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68  W objects. Neith
69a0: 65 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54  er the .  [CREAT
69b0: 45 20 54 52 49 47 47 45 52 5d 20 6f 72 20 5b 44  E TRIGGER] or [D
69c0: 52 4f 50 20 54 52 49 47 47 45 52 5d 0a 20 20 63  ROP TRIGGER].  c
69d0: 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69  ommands are avai
69e0: 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61  lable in this ca
69f0: 73 65 2c 20 61 6e 64 20 61 74 74 65 6d 70 74 69  se, and attempti
6a00: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 0a 20 20  ng to execute.  
6a10: 65 69 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75  either will resu
6a20: 6c 74 20 69 6e 20 61 20 70 61 72 73 65 20 65 72  lt in a parse er
6a30: 72 6f 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a  ror...  WARNING:
6a40: 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69   If this macro i
6a50: 73 20 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69  s defined, it wi
6a60: 6c 6c 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62  ll not be possib
6a70: 6c 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74  le to open a dat
6a80: 61 62 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63  abase.  for whic
6a90: 68 20 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e  h the schema con
6aa0: 74 61 69 6e 73 20 54 52 49 47 47 45 52 20 6f 62  tains TRIGGER ob
6ab0: 6a 65 63 74 73 2e 20 0a 7d 0a 0a 43 4f 4d 50 49  jects. .}..COMPI
6ac0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
6ad0: 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
6ae0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 7d 20 7b 0a  OPTIMIZATION} {.
6af0: 20 20 41 20 64 65 66 61 75 6c 74 20 62 75 69 6c    A default buil
6b00: 64 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 66 20  d of SQLite, if 
6b10: 61 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  a [DELETE] state
6b20: 6d 65 6e 74 20 68 61 73 20 6e 6f 20 57 48 45 52  ment has no WHER
6b30: 45 20 63 6c 61 75 73 65 0a 20 20 61 6e 64 20 6f  E clause.  and o
6b40: 70 65 72 61 74 65 73 20 6f 6e 20 61 20 74 61 62  perates on a tab
6b50: 6c 65 20 77 69 74 68 20 6e 6f 20 74 72 69 67 67  le with no trigg
6b60: 65 72 73 2c 20 61 6e 20 6f 70 74 69 6d 69 7a 61  ers, an optimiza
6b70: 74 69 6f 6e 20 6f 63 63 75 72 73 20 74 68 61 74  tion occurs that
6b80: 0a 20 20 63 61 75 73 65 73 20 74 68 65 20 44 45  .  causes the DE
6b90: 4c 45 54 45 20 74 6f 20 6f 63 63 75 72 20 62 79  LETE to occur by
6ba0: 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   dropping and re
6bb0: 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62  creating the tab
6bc0: 6c 65 2e 20 20 0a 20 20 44 72 6f 70 70 69 6e 67  le.  .  Dropping
6bd0: 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
6be0: 61 20 74 61 62 6c 65 20 69 73 20 75 73 75 61 6c  a table is usual
6bf0: 6c 79 20 6d 75 63 68 20 66 61 73 74 65 72 20 74  ly much faster t
6c00: 68 61 6e 20 64 65 6c 65 74 69 6e 67 0a 20 20 74  han deleting.  t
6c10: 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  he table content
6c20: 20 72 6f 77 20 62 79 20 72 6f 77 2e 20 20 54 68   row by row.  Th
6c30: 69 73 20 69 73 20 74 68 65 20 22 74 72 75 6e 63  is is the "trunc
6c40: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
6c50: 22 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  "..}..COMPILE_OP
6c60: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6c70: 54 5f 55 54 46 31 36 7d 20 7b 0a 20 20 54 68 69  T_UTF16} {.  Thi
6c80: 73 20 6d 61 63 72 6f 20 69 73 20 75 73 65 64 20  s macro is used 
6c90: 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74 20  to omit support 
6ca0: 66 6f 72 20 55 54 46 31 36 20 74 65 78 74 20 65  for UTF16 text e
6cb0: 6e 63 6f 64 69 6e 67 2e 20 57 68 65 6e 20 74 68  ncoding. When th
6cc0: 69 73 20 69 73 0a 20 20 64 65 66 69 6e 65 64 20  is is.  defined 
6cd0: 61 6c 6c 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  all API function
6ce0: 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 6f 72  s that return or
6cf0: 20 61 63 63 65 70 74 20 55 54 46 31 36 20 65 6e   accept UTF16 en
6d00: 63 6f 64 65 64 20 74 65 78 74 20 61 72 65 0a 20  coded text are. 
6d10: 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 20 54 68   unavailable. Th
6d20: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61  ese functions ca
6d30: 6e 20 62 65 20 69 64 65 6e 74 69 66 69 65 64 20  n be identified 
6d40: 62 79 20 74 68 65 20 66 61 63 74 20 74 68 61 74  by the fact that
6d50: 20 74 68 65 79 20 65 6e 64 0a 20 20 77 69 74 68   they end.  with
6d60: 20 27 31 36 27 2c 20 66 6f 72 20 65 78 61 6d 70   '16', for examp
6d70: 6c 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  le [sqlite3_prep
6d80: 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74  are16()], [sqlit
6d90: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
6da0: 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74  ()] and.  [sqlit
6db0: 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29  e3_bind_text16()
6dc0: 5d 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  ]..}..COMPILE_OP
6dd0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
6de0: 54 5f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 57 68  T_VACUUM} {.  Wh
6df0: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
6e00: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
6e10: 56 41 43 55 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e  VACUUM].  comman
6e20: 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65  d is not include
6e30: 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79  d in the library
6e40: 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61 20  ..  Executing a 
6e50: 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d 65  [VACUUM] stateme
6e60: 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61 20 70  nt causes .  a p
6e70: 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43  arse error..}..C
6e80: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
6e90: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d  QLITE_OMIT_VIEW}
6ea0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
6eb0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
6ec0: 73 75 70 70 6f 72 74 20 66 6f 72 20 56 49 45 57  support for VIEW
6ed0: 20 6f 62 6a 65 63 74 73 2e 20 4e 65 69 74 68 65   objects. Neithe
6ee0: 72 20 74 68 65 20 0a 20 20 5b 43 52 45 41 54 45  r the .  [CREATE
6ef0: 20 56 49 45 57 5d 20 6e 6f 72 20 74 68 65 20 5b   VIEW] nor the [
6f00: 44 52 4f 50 20 56 49 45 57 5d 0a 20 20 63 6f 6d  DROP VIEW].  com
6f10: 6d 61 6e 64 73 20 61 72 65 20 61 76 61 69 6c 61  mands are availa
6f20: 62 6c 65 20 69 6e 20 74 68 69 73 20 63 61 73 65  ble in this case
6f30: 2c 20 61 6e 64 0a 20 20 61 74 74 65 6d 70 74 69  , and.  attempti
6f40: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 65 69  ng to execute ei
6f50: 74 68 65 72 20 77 69 6c 6c 20 72 65 73 75 6c 74  ther will result
6f60: 20 69 6e 20 61 20 70 61 72 73 65 20 65 72 72 6f   in a parse erro
6f70: 72 2e 0a 0a 20 20 57 41 52 4e 49 4e 47 3a 20 49  r...  WARNING: I
6f80: 66 20 74 68 69 73 20 6d 61 63 72 6f 20 69 73 20  f this macro is 
6f90: 64 65 66 69 6e 65 64 2c 20 69 74 20 77 69 6c 6c  defined, it will
6fa0: 20 6e 6f 74 20 62 65 20 70 6f 73 73 69 62 6c 65   not be possible
6fb0: 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61 62   to open a datab
6fc0: 61 73 65 0a 20 20 66 6f 72 20 77 68 69 63 68 20  ase.  for which 
6fd0: 74 68 65 20 73 63 68 65 6d 61 20 63 6f 6e 74 61  the schema conta
6fe0: 69 6e 73 20 56 49 45 57 20 6f 62 6a 65 63 74 73  ins VIEW objects
6ff0: 2e 20 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  . .}..COMPILE_OP
7000: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
7010: 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 7d 20  T_VIRTUALTABLE} 
7020: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
7030: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
7040: 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  r the [sqlite3_v
7050: 74 61 62 20 7c 20 56 69 72 74 75 61 6c 20 54 61  tab | Virtual Ta
7060: 62 6c 65 5d 0a 20 20 6d 65 63 68 61 6e 69 73 6d  ble].  mechanism
7070: 20 69 6e 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43   in SQLite..}..C
7080: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
7090: 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 7d 20  QLITE_OMIT_WSD} 
70a0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 73  {.  This options
70b0: 20 62 75 69 6c 64 73 20 61 20 76 65 72 73 69 6f   builds a versio
70c0: 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
70d0: 6c 69 62 72 61 72 79 20 74 68 61 74 20 63 6f 6e  library that con
70e0: 74 61 69 6e 73 20 6e 6f 0a 20 20 57 72 69 74 61  tains no.  Writa
70f0: 62 6c 65 20 53 74 61 74 69 63 20 44 61 74 61 20  ble Static Data 
7100: 28 57 53 44 29 2e 20 20 57 53 44 20 69 73 20 67  (WSD).  WSD is g
7110: 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20  lobal variables 
7120: 61 6e 64 2f 6f 72 20 73 74 61 74 69 63 0a 20 20  and/or static.  
7130: 76 61 72 69 61 62 6c 65 73 2e 20 20 53 6f 6d 65  variables.  Some
7140: 20 70 6c 61 74 66 6f 72 6d 73 20 64 6f 20 6e 6f   platforms do no
7150: 74 20 73 75 70 70 6f 72 74 20 57 53 44 2c 20 61  t support WSD, a
7160: 6e 64 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  nd this option i
7170: 73 20 6e 65 63 65 73 73 61 72 79 0a 20 20 69 6e  s necessary.  in
7180: 20 6f 72 64 65 72 20 66 6f 72 20 53 51 4c 69 74   order for SQLit
7190: 65 20 74 6f 20 77 6f 72 6b 20 74 68 6f 73 65 20  e to work those 
71a0: 70 6c 61 74 66 6f 72 6d 73 2e 20 20 0a 0a 20 20  platforms.  ..  
71b0: 55 6e 6c 69 6b 65 20 6f 74 68 65 72 20 4f 4d 49  Unlike other OMI
71c0: 54 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 20  T options which 
71d0: 6d 61 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20  make the SQLite 
71e0: 6c 69 62 72 61 72 79 20 73 6d 61 6c 6c 65 72 2c  library smaller,
71f0: 0a 20 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  this option a
7200: 63 74 75 61 6c 6c 79 20 69 6e 63 72 65 61 73 65  ctually increase
7210: 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 53 51  s the size of SQ
7220: 4c 69 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 69  Lite and makes i
7230: 74 20 72 75 6e 0a 20 20 61 20 6c 69 74 74 6c 65  t run.  a little
7240: 20 73 6c 6f 77 65 72 2e 20 20 4f 6e 6c 79 20 75   slower.  Only u
7250: 73 65 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  se this option i
7260: 66 20 53 51 4c 69 74 65 20 69 73 20 62 65 69 6e  f SQLite is bein
7270: 67 20 62 75 69 6c 74 20 66 6f 72 20 61 6e 0a 20  g built for an. 
7280: 20 65 6d 62 65 64 64 65 64 20 74 61 72 67 65 74   embedded target
7290: 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73   that does not s
72a0: 75 70 70 6f 72 74 20 57 53 44 2e 0a 7d 0a 0a 43  upport WSD..}..C
72b0: 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53  OMPILE_OPTION {S
72c0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f  QLITE_OMIT_XFER_
72d0: 4f 50 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  OPT} {.  This op
72e0: 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f  tion omits suppo
72f0: 72 74 20 66 6f 72 20 6f 70 74 69 6d 69 7a 61 74  rt for optimizat
7300: 69 6f 6e 73 20 74 68 61 74 20 68 65 6c 70 20 73  ions that help s
7310: 74 61 74 65 6d 65 6e 74 73 0a 20 20 6f 66 20 74  tatements.  of t
7320: 68 65 20 66 6f 72 6d 20 22 49 4e 53 45 52 54 20  he form "INSERT 
7330: 49 4e 54 4f 20 2e 2e 2e 20 53 45 4c 45 43 54 20  INTO ... SELECT 
7340: 2e 2e 2e 22 20 72 75 6e 20 66 61 73 74 65 72 2e  ..." run faster.
7350: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
7360: 4f 4e 20 7b 53 51 4c 49 54 45 5f 5a 45 52 4f 5f  ON {SQLITE_ZERO_
7370: 4d 41 4c 4c 4f 43 7d 20 7b 0a 20 20 54 68 69 73  MALLOC} {.  This
7380: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 62 6f   option omits bo
7390: 74 68 20 74 68 65 20 5b 64 65 66 61 75 6c 74 20  th the [default 
73a0: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
73b0: 5d 20 61 6e 64 20 74 68 65 0a 20 20 5b 64 65 62  ] and the.  [deb
73c0: 75 67 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c  ugging memory al
73d0: 6c 6f 63 61 74 6f 72 5d 20 66 72 6f 6d 20 74 68  locator] from th
73e0: 65 20 62 75 69 6c 64 20 61 6e 64 20 73 75 62 73  e build and subs
73f0: 74 69 74 75 74 65 73 20 61 20 73 74 75 62 0a 20  titutes a stub. 
7400: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
7410: 72 20 74 68 61 74 20 61 6c 77 61 79 73 20 66 61  r that always fa
7420: 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 77 69 6c  ils.  SQLite wil
7430: 6c 20 6e 6f 74 20 72 75 6e 20 77 69 74 68 20 74  l not run with t
7440: 68 69 73 0a 20 20 73 74 75 62 20 6d 65 6d 6f 72  his.  stub memor
7450: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 73 69 6e 63  y allocator sinc
7460: 65 20 69 74 20 77 69 6c 6c 20 62 65 20 75 6e 61  e it will be una
7470: 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  ble to allocate 
7480: 6d 65 6d 6f 72 79 2e 20 20 42 75 74 0a 20 20 74  memory.  But.  t
7490: 68 69 73 20 73 74 75 62 20 63 61 6e 20 62 65 20  his stub can be 
74a0: 72 65 70 6c 61 63 65 64 20 61 74 20 73 74 61 72  replaced at star
74b0: 74 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20 5b  t-time using.  [
74c0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28  sqlite3_config](
74d0: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
74e0: 41 4c 4c 4f 43 5d 2c 2e 2e 2e 29 20 6f 72 0a 20  ALLOC],...) or. 
74f0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
7500: 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ]([SQLITE_CONFIG
7510: 5f 48 45 41 50 5d 2c 2e 2e 2e 29 2e 0a 20 20 53  _HEAP],...)..  S
7520: 6f 20 74 68 65 20 6e 65 74 20 65 66 66 65 63 74  o the net effect
7530: 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   of this compile
7540: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
7550: 74 68 61 74 20 69 74 20 61 6c 6c 6f 77 73 20 53  that it allows S
7560: 51 4c 69 74 65 0a 20 20 74 6f 20 62 65 20 63 6f  QLite.  to be co
7570: 6d 70 69 6c 65 64 20 61 6e 64 20 6c 69 6e 6b 65  mpiled and linke
7580: 64 20 61 67 61 69 6e 73 74 20 61 20 73 79 73 74  d against a syst
7590: 65 6d 20 6c 69 62 72 61 72 79 20 74 68 61 74 20  em library that 
75a0: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
75b0: 0a 20 20 6d 61 6c 6c 6f 63 28 29 2c 20 66 72 65  .  malloc(), fre
75c0: 65 28 29 2c 20 61 6e 64 2f 6f 72 20 72 65 61 6c  e(), and/or real
75d0: 6c 6f 63 28 29 2e 0a 7d 0a 0a 3c 2f 74 63 6c 3e  loc()..}..</tcl>
75e0: 0a 3c 61 20 6e 61 6d 65 3d 22 6f 6d 69 74 66 65  .<a name="omitfe
75f0: 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c 68 32  atures"></a>.<h2
7600: 3e 31 2e 36 20 41 6e 61 6c 79 73 69 73 20 61 6e  >1.6 Analysis an
7610: 64 20 44 65 62 75 67 67 69 6e 67 20 4f 70 74 69  d Debugging Opti
7620: 6f 6e 73 3c 2f 68 32 3e 0a 3c 74 63 6c 3e 0a 0a  ons</h2>.<tcl>..
7630: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7640: 53 51 4c 49 54 45 5f 44 45 42 55 47 7d 20 7b 0a  SQLITE_DEBUG} {.
7650: 20 20 54 68 65 20 53 51 4c 69 74 65 20 73 6f 75    The SQLite sou
7660: 72 63 65 20 63 6f 64 65 20 63 6f 6e 74 61 69 6e  rce code contain
7670: 73 20 6c 69 74 65 72 61 6c 6c 79 20 74 68 6f 75  s literally thou
7680: 73 61 6e 64 73 20 6f 66 20 61 73 73 65 72 74 28  sands of assert(
7690: 29 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75  ) statements.  u
76a0: 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 69 6e  sed to verify in
76b0: 74 65 72 6e 61 6c 20 61 73 73 75 6d 70 74 69 6f  ternal assumptio
76c0: 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e  ns and subroutin
76d0: 65 20 70 72 65 63 6f 6e 64 69 74 69 6f 6e 73 20  e preconditions 
76e0: 61 6e 64 0a 20 20 70 6f 73 74 63 6f 6e 64 69 74  and.  postcondit
76f0: 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 73 73  ions.  These ass
7700: 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73  ert() statements
7710: 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 74 75   are normally tu
7720: 72 6e 65 64 20 6f 66 66 0a 20 20 28 74 68 65 79  rned off.  (they
7730: 20 67 65 6e 65 72 61 74 65 20 6e 6f 20 63 6f 64   generate no cod
7740: 65 29 20 73 69 6e 63 65 20 74 75 72 6e 69 6e 67  e) since turning
7750: 20 74 68 65 6d 20 6f 6e 20 6d 61 6b 65 73 20 53   them on makes S
7760: 51 4c 69 74 65 20 72 75 6e 20 61 70 70 72 6f 78  QLite run approx
7770: 69 6d 61 74 65 6c 79 0a 20 20 74 68 72 65 65 20  imately.  three 
7780: 74 69 6d 65 73 20 73 6c 6f 77 65 72 2e 20 20 42  times slower.  B
7790: 75 74 20 66 6f 72 20 74 65 73 74 69 6e 67 20 61  ut for testing a
77a0: 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 69 74 20  nd analysis, it 
77b0: 69 73 20 75 73 65 66 75 6c 20 74 6f 20 74 75 72  is useful to tur
77c0: 6e 0a 20 20 74 68 65 20 61 73 73 65 72 74 28 29  n.  the assert()
77d0: 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 2e 20   statements on. 
77e0: 20 54 68 65 20 53 51 4c 49 54 45 5f 44 45 42 55   The SQLITE_DEBU
77f0: 47 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  G compile-time o
7800: 70 74 69 6f 6e 20 64 6f 65 73 20 74 68 69 73 2e  ption does this.
7810: 0a 20 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20  .  SQLITE_DEBUG 
7820: 61 6c 73 6f 20 74 75 72 6e 73 20 6f 6e 20 73 6f  also turns on so
7830: 6d 65 20 6f 74 68 65 72 20 64 65 62 75 67 67 69  me other debuggi
7840: 6e 67 20 66 65 61 74 75 72 65 73 2e 0a 7d 0a 0a  ng features..}..
7850: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
7860: 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 7d  SQLITE_MEMDEBUG}
7870: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
7880: 4d 45 4d 44 45 42 55 47 20 6f 70 74 69 6f 6e 20  MEMDEBUG option 
7890: 63 61 75 73 65 73 20 61 6e 20 69 6e 73 74 72 75  causes an instru
78a0: 6d 65 6e 74 65 64 20 0a 20 20 5b 64 65 62 75 67  mented .  [debug
78b0: 67 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ging memory allo
78c0: 63 61 74 6f 72 5d 0a 20 20 74 6f 20 62 65 20 75  cator].  to be u
78d0: 73 65 64 20 61 73 20 74 68 65 20 64 65 66 61 75  sed as the defau
78e0: 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
78f0: 74 6f 72 20 77 69 74 68 69 6e 20 53 51 4c 69 74  tor within SQLit
7900: 65 2e 20 20 54 68 65 0a 20 20 69 6e 73 74 72 75  e.  The.  instru
7910: 6d 65 6e 74 65 64 20 6d 65 6d 6f 72 79 20 61 6c  mented memory al
7920: 6c 6f 63 61 74 6f 72 20 63 68 65 63 6b 73 20 66  locator checks f
7930: 6f 72 20 6d 69 73 75 73 65 20 6f 66 20 64 79 6e  or misuse of dyn
7940: 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74  amically allocat
7950: 65 64 0a 20 20 6d 65 6d 6f 72 79 2e 20 20 45 78  ed.  memory.  Ex
7960: 61 6d 70 6c 65 73 20 6f 66 20 6d 69 73 75 73 65  amples of misuse
7970: 20 69 6e 63 6c 75 64 65 20 75 73 69 6e 67 20 6d   include using m
7980: 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74 20 69  emory after it i
7990: 73 20 66 72 65 65 64 2c 0a 20 20 77 72 69 74 69  s freed,.  writi
79a0: 6e 67 20 6f 66 66 20 74 68 65 20 65 6e 64 73 20  ng off the ends 
79b0: 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  of a memory allo
79c0: 63 61 74 69 6f 6e 2c 20 66 72 65 65 69 6e 67 20  cation, freeing 
79d0: 6d 65 6d 6f 72 79 20 6e 6f 74 20 70 72 65 76 69  memory not previ
79e0: 6f 75 73 6c 79 0a 20 20 6f 62 74 61 69 6e 65 64  ously.  obtained
79f0: 20 66 72 6f 6d 20 74 68 65 20 6d 65 6d 6f 72 79   from the memory
7a00: 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 6f 72 20 66   allocator, or f
7a10: 61 69 6c 69 6e 67 20 74 6f 20 69 6e 69 74 69 61  ailing to initia
7a20: 6c 69 7a 65 20 6e 65 77 6c 79 0a 20 20 61 6c 6c  lize newly.  all
7a30: 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2e 0a 7d  ocated memory..}
7a40: 0a 0a 3c 2f 74 63 6c 3e 0a                       ..</tcl>.