Documentation Source Text

Hex Artifact Content
Login

Artifact b6687caade22f3e6039018f67470043333439480:


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 68  rds $all.  }.  h
03f0: 64 5f 70 75 74 73 20 3c 70 3e 3c 62 3e 24 6e 61  d_puts <p><b>$na
0400: 6d 65 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 72 65 67  me</b></p>.  reg
0410: 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 5c 5c 73 2a  sub -all "\n\\s*
0420: 5c 6e 22 20 24 74 65 78 74 20 22 3c 2f 70 3e 5c  \n" $text "</p>\
0430: 6e 5c 6e 3c 70 3e 22 20 74 65 78 74 0a 20 20 68  n\n<p>" text.  h
0440: 64 5f 72 65 73 6f 6c 76 65 20 3c 62 6c 6f 63 6b  d_resolve <block
0450: 71 75 6f 74 65 3e 3c 70 3e 24 74 65 78 74 3c 2f  quote><p>$text</
0460: 70 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  p></blockquote>.
0470: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
0480: 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  N {SQLITE_DEFAUL
0490: 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d 3c 69 3e  T_AUTOVACUUM=<i>
04a0: 26 6c 74 3b 31 20 6f 72 20 30 26 67 74 3b 3c 2f  &lt;1 or 0&gt;</
04b0: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
04c0: 72 6f 20 64 65 74 65 72 6d 69 6e 65 73 20 69 66  ro determines if
04d0: 20 53 51 4c 69 74 65 20 63 72 65 61 74 65 73 20   SQLite creates 
04e0: 64 61 74 61 62 61 73 65 73 20 77 69 74 68 20 74  databases with t
04f0: 68 65 20 0a 20 20 5b 61 75 74 6f 5f 76 61 63 75  he .  [auto_vacu
0500: 75 6d 5d 20 66 6c 61 67 20 73 65 74 20 62 79 20  um] flag set by 
0510: 64 65 66 61 75 6c 74 2e 20 54 68 65 20 64 65 66  default. The def
0520: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 30 20  ault value is 0 
0530: 0a 20 20 28 64 6f 20 6e 6f 74 20 63 72 65 61 74  .  (do not creat
0540: 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 64 61  e auto-vacuum da
0550: 74 61 62 61 73 65 73 29 2e 20 49 6e 20 61 6e 79  tabases). In any
0560: 20 63 61 73 65 20 74 68 65 0a 20 20 63 6f 6d 70   case the.  comp
0570: 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74  ile-time default
0580: 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69 64 64   may be overridd
0590: 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50 52  en by the .  [PR
05a0: 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d  AGMA auto_vacuum
05b0: 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a 43 4f  ] command..}..CO
05c0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
05d0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43  LITE_DEFAULT_CAC
05e0: 48 45 5f 53 49 5a 45 3d 3c 69 3e 26 6c 74 3b 70  HE_SIZE=<i>&lt;p
05f0: 61 67 65 73 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a  ages&gt;</i>} {.
0600: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 73 65 74    This macro set
0610: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 69  s the default si
0620: 7a 65 20 6f 66 20 74 68 65 20 70 61 67 65 2d 63  ze of the page-c
0630: 61 63 68 65 20 66 6f 72 20 65 61 63 68 20 61 74  ache for each at
0640: 74 61 63 68 65 64 0a 20 20 64 61 74 61 62 61 73  tached.  databas
0650: 65 2c 20 69 6e 20 70 61 67 65 73 2e 20 54 68 69  e, in pages. Thi
0660: 73 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64  s can be overrid
0670: 64 65 6e 20 62 79 20 74 68 65 20 0a 20 20 5b 50  den by the .  [P
0680: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
0690: 5d 20 63 6f 6d 61 6d 6e 64 2e 20 54 68 65 20 64  ] comamnd. The d
06a0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
06b0: 32 30 30 30 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  2000..}..COMPILE
06c0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
06d0: 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52  DEFAULT_FILE_FOR
06e0: 4d 41 54 3d 3c 69 3e 26 6c 74 3b 31 20 6f 72 20  MAT=<i>&lt;1 or 
06f0: 34 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54  4&gt;</i>} {.  T
0700: 68 65 20 64 65 66 61 75 6c 74 20 73 63 68 65 6d  he default schem
0710: 61 2d 6c 65 76 65 6c 20 66 69 6c 65 20 66 6f 72  a-level file for
0720: 6d 61 74 20 75 73 65 64 20 62 79 20 53 51 4c 69  mat used by SQLi
0730: 74 65 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  te when creating
0740: 0a 20 20 6e 65 77 20 64 61 74 61 62 61 73 65 20  .  new database 
0750: 66 69 6c 65 73 20 69 73 20 73 65 74 20 62 79 20  files is set by 
0760: 74 68 69 73 20 6d 61 63 72 6f 2e 20 20 54 68 65  this macro.  The
0770: 20 66 69 6c 65 20 66 6f 72 6d 61 74 73 20 61 72   file formats ar
0780: 65 20 61 6c 6c 0a 20 20 76 65 72 79 20 73 69 6d  e all.  very sim
0790: 69 6c 61 72 2e 20 20 54 68 65 20 64 69 66 66 65  ilar.  The diffe
07a0: 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 66 6f  rence between fo
07b0: 72 6d 61 74 73 20 31 20 61 6e 64 20 34 20 69 73  rmats 1 and 4 is
07c0: 20 74 68 61 74 20 66 6f 72 6d 61 74 0a 20 20 34   that format.  4
07d0: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 64 65 73   understands des
07e0: 63 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 20  cending indices 
07f0: 61 6e 64 20 68 61 73 20 61 20 74 69 67 68 74 65  and has a tighte
0800: 72 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 0a 20  r encoding for. 
0810: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 73 2e   boolean values.
0820: 0a 0a 20 20 53 51 4c 69 74 65 20 28 61 73 20 6f  ..  SQLite (as o
0830: 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 30  f [version 3.6.0
0840: 5d 29 20 63 61 6e 20 72 65 61 64 20 61 6e 64 20  ]) can read and 
0850: 77 72 69 74 65 20 61 6e 79 20 66 69 6c 65 20 66  write any file f
0860: 6f 72 6d 61 74 0a 20 20 62 65 74 77 65 65 6e 20  ormat.  between 
0870: 31 20 61 6e 64 20 34 2e 20 20 42 75 74 20 6f 6c  1 and 4.  But ol
0880: 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  der versions of 
0890: 53 51 4c 69 74 65 20 6d 69 67 68 74 20 6e 6f 74  SQLite might not
08a0: 20 62 65 20 61 62 6c 65 20 74 6f 0a 20 20 72 65   be able to.  re
08b0: 61 64 20 66 6f 72 6d 61 74 73 20 67 72 65 61 74  ad formats great
08c0: 65 72 20 74 68 61 6e 20 31 2e 20 20 53 6f 20 74  er than 1.  So t
08d0: 68 61 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f  hat older versio
08e0: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c  ns of SQLite wil
08f0: 6c 0a 20 20 62 65 20 61 62 6c 65 20 74 6f 20 72  l.  be able to r
0900: 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 64 61  ead and write da
0910: 74 61 62 61 73 65 20 66 69 6c 65 73 20 63 72 65  tabase files cre
0920: 61 74 65 64 20 62 79 20 6e 65 77 65 72 20 76 65  ated by newer ve
0930: 72 73 69 6f 6e 73 0a 20 20 6f 66 20 53 51 4c 69  rsions.  of SQLi
0940: 74 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20  te, the default 
0950: 66 69 6c 65 20 66 6f 72 6d 61 74 20 69 73 20 73  file format is s
0960: 65 74 20 74 6f 20 31 20 66 6f 72 20 6d 61 78 69  et to 1 for maxi
0970: 6d 75 6d 0a 20 20 63 6f 6d 70 61 74 61 62 69 6c  mum.  compatabil
0980: 69 74 79 2e 0a 0a 20 20 54 68 65 20 66 69 6c 65  ity...  The file
0990: 20 66 6f 72 6d 61 74 20 66 6f 72 20 61 20 6e 65   format for a ne
09a0: 77 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62  w database can b
09b0: 65 20 73 65 74 20 61 74 20 72 75 6e 74 69 6d 65  e set at runtime
09c0: 20 75 73 69 6e 67 0a 20 20 74 68 65 20 5b 50 52   using.  the [PR
09d0: 41 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65  AGMA legacy_file
09e0: 5f 66 6f 72 6d 61 74 5d 20 63 6f 6d 6d 61 6e 64  _format] command
09f0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
0a00: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 44 45 46 41  ION {SQLITE_DEFA
0a10: 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 3c 69  ULT_PAGE_SIZE=<i
0a20: 3e 26 6c 74 3b 62 79 74 65 73 26 67 74 3b 3c 2f  >&lt;bytes&gt;</
0a30: 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61 63  i>} {.  This mac
0a40: 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 73 65  ro is used to se
0a50: 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61  t the default pa
0a60: 67 65 2d 73 69 7a 65 20 75 73 65 64 20 77 68 65  ge-size used whe
0a70: 6e 20 61 0a 20 20 64 61 74 61 62 61 73 65 20 69  n a.  database i
0a80: 73 20 63 72 65 61 74 65 64 2e 20 54 68 65 20 76  s created. The v
0a90: 61 6c 75 65 20 61 73 73 69 67 6e 65 64 20 6d 75  alue assigned mu
0aa0: 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66  st be a power of
0ab0: 20 32 2e 20 54 68 65 0a 20 20 64 65 66 61 75 6c   2. The.  defaul
0ac0: 74 20 76 61 6c 75 65 20 69 73 20 31 30 32 34 2e  t value is 1024.
0ad0: 20 54 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   The compile-tim
0ae0: 65 20 64 65 66 61 75 6c 74 20 6d 61 79 20 62 65  e default may be
0af0: 20 6f 76 65 72 72 69 64 64 65 6e 20 61 74 20 0a   overridden at .
0b00: 20 20 72 75 6e 74 69 6d 65 20 62 79 20 74 68 65    runtime by the
0b10: 20 5b 50 52 41 47 4d 41 20 70 61 67 65 5f 73 69   [PRAGMA page_si
0b20: 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2e 0a 7d 0a 0a  ze] command..}..
0b30: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
0b40: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 54  SQLITE_DEFAULT_T
0b50: 45 4d 50 5f 43 41 43 48 45 5f 53 49 5a 45 3d 3c  EMP_CACHE_SIZE=<
0b60: 69 3e 26 6c 74 3b 70 61 67 65 73 26 67 74 3b 3c  i>&lt;pages&gt;<
0b70: 2f 69 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  /i>} {.  This ma
0b80: 63 72 6f 20 73 65 74 73 20 74 68 65 20 64 65 66  cro sets the def
0b90: 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68 65  ault size of the
0ba0: 20 70 61 67 65 2d 63 61 63 68 65 20 66 6f 72 20   page-cache for 
0bb0: 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 0a  temporary files.
0bc0: 20 20 63 72 65 61 74 65 64 20 62 79 20 53 51 4c    created by SQL
0bd0: 69 74 65 20 74 6f 20 73 74 6f 72 65 20 69 6e 74  ite to store int
0be0: 65 72 6d 65 64 69 61 74 65 20 72 65 73 75 6c 74  ermediate result
0bf0: 73 2c 20 69 6e 20 70 61 67 65 73 2e 20 49 74 20  s, in pages. It 
0c00: 64 6f 65 73 0a 20 20 6e 6f 74 20 61 66 66 65 63  does.  not affec
0c10: 74 20 74 68 65 20 70 61 67 65 2d 63 61 63 68 65  t the page-cache
0c20: 20 66 6f 72 20 74 68 65 20 74 65 6d 70 20 64 61   for the temp da
0c30: 74 61 62 61 73 65 2c 20 77 68 65 72 65 20 74 61  tabase, where ta
0c40: 62 6c 65 73 20 63 72 65 61 74 65 64 0a 20 20 75  bles created.  u
0c50: 73 69 6e 67 20 5b 43 52 45 41 54 45 20 54 41 42  sing [CREATE TAB
0c60: 4c 45 20 7c 20 43 52 45 41 54 45 20 54 45 4d 50  LE | CREATE TEMP
0c70: 20 54 41 42 4c 45 5d 20 61 72 65 20 73 74 6f 72   TABLE] are stor
0c80: 65 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  ed. The default 
0c90: 76 61 6c 75 65 0a 20 20 69 73 20 35 30 30 2e 0a  value.  is 500..
0ca0: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31 2e  }.</tcl>..<h2>1.
0cb0: 32 20 4f 70 74 69 6f 6e 73 20 54 6f 20 53 65 74  2 Options To Set
0cc0: 20 53 69 7a 65 20 4c 69 6d 69 74 73 3c 2f 68 32   Size Limits</h2
0cd0: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20  >..<p>There are 
0ce0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
0cf0: 69 6f 6e 73 20 74 68 61 74 20 77 69 6c 6c 20 73  ions that will s
0d00: 65 74 20 75 70 70 65 72 20 62 6f 75 6e 64 73 0a  et upper bounds.
0d10: 6f 6e 20 74 68 65 20 73 69 7a 65 73 20 6f 66 20  on the sizes of 
0d20: 76 61 72 69 6f 75 73 20 73 74 72 75 63 74 75 72  various structur
0d30: 65 73 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 54  es in SQLite.  T
0d40: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  he compile-time.
0d50: 6f 70 74 69 6f 6e 73 20 6e 6f 72 6d 61 6c 6c 79  options normally
0d60: 20 73 65 74 20 61 20 68 61 72 64 20 75 70 70 65   set a hard uppe
0d70: 72 20 62 6f 75 6e 64 20 77 68 69 63 68 20 63 61  r bound which ca
0d80: 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 61 74 20  n be changed.at 
0d90: 72 75 6e 2d 74 69 6d 65 20 6f 6e 20 69 6e 64 69  run-time on indi
0da0: 76 69 64 75 61 6c 20 5b 64 61 74 61 62 61 73 65  vidual [database
0db0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 75 73   connections] us
0dc0: 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33  ing the.[sqlite3
0dd0: 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66  _limit()] interf
0de0: 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ace.</p>..<p>The
0df0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
0e00: 74 69 6f 6e 73 20 66 6f 72 20 73 65 74 74 69 6e  tions for settin
0e10: 67 20 75 70 70 65 72 20 62 6f 75 6e 64 73 20 61  g upper bounds a
0e20: 72 65 0a 5b 6c 69 6d 69 74 73 20 7c 20 64 6f 63  re.[limits | doc
0e30: 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65  umented separate
0e40: 6c 79 5d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77  ly].  The follow
0e50: 69 6e 67 20 69 73 20 61 20 6c 69 73 74 20 6f 66  ing is a list of
0e60: 0a 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73  .the available s
0e70: 65 74 74 69 6e 67 73 3a 3c 2f 70 3e 0a 0a 3c 75  ettings:</p>..<u
0e80: 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  l>.<li> [SQLITE_
0e90: 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 20 20 3c  MAX_ATTACHED]  <
0ea0: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
0eb0: 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 20 3c  E_MAX_COLUMN]  <
0ec0: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
0ed0: 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53  E_MAX_COMPOUND_S
0ee0: 45 4c 45 43 54 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c  ELECT]  </li>.<l
0ef0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 45  i> [SQLITE_MAX_E
0f00: 58 50 52 5f 44 45 50 54 48 5d 20 20 3c 2f 6c 69  XPR_DEPTH]  </li
0f10: 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d  >.<li> [SQLITE_M
0f20: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d  AX_FUNCTION_ARG]
0f30: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
0f40: 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d  LITE_MAX_LENGTH]
0f50: 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51    </li>.<li> [SQ
0f60: 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41  LITE_MAX_LIKE_PA
0f70: 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 20 20 3c  TTERN_LENGTH]  <
0f80: 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  /li>.<li> [SQLIT
0f90: 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54  E_MAX_PAGE_COUNT
0fa0: 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5b 53  ]  </li>.<li> [S
0fb0: 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 53  QLITE_MAX_PAGE_S
0fc0: 49 5a 45 5d 20 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  IZE]  </li>.<li>
0fd0: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c   [SQLITE_MAX_SQL
0fe0: 5f 4c 45 4e 47 54 48 5d 20 20 3c 2f 6c 69 3e 0a  _LENGTH]  </li>.
0ff0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4d 41 58  <li> [SQLITE_MAX
1000: 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
1010: 5d 20 20 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a  ]  </li>.</ul>..
1020: 3c 61 20 6e 61 6d 65 3d 22 63 6f 6e 74 72 6f 6c  <a name="control
1030: 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a 3c  features"></a>.<
1040: 68 32 3e 31 2e 33 20 4f 70 74 69 6f 6e 73 20 54  h2>1.3 Options T
1050: 6f 20 43 6f 6e 74 72 6f 6c 20 4f 70 65 72 61 74  o Control Operat
1060: 69 6e 67 20 43 68 61 72 61 63 74 65 72 69 73 74  ing Characterist
1070: 69 63 73 3c 2f 68 32 3e 0a 0a 3c 74 63 6c 3e 0a  ics</h2>..<tcl>.
1080: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
1090: 53 51 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45  SQLITE_SECURE_DE
10a0: 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20 63  LETE} {.  This c
10b0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
10c0: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
10d0: 20 74 6f 20 6f 76 65 72 77 72 69 74 65 20 64 65   to overwrite de
10e0: 6c 65 74 65 64 0a 20 20 69 6e 66 6f 72 6d 61 74  leted.  informat
10f0: 69 6f 6e 20 77 69 74 68 20 7a 65 72 6f 73 20 69  ion with zeros i
1100: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6d 61  n addition to ma
1110: 72 6b 69 6e 67 20 74 68 65 20 73 70 61 63 65 0a  rking the space.
1120: 20 20 61 73 20 61 76 61 69 6c 61 62 6c 65 20 66    as available f
1130: 6f 72 20 72 65 75 73 65 2e 20 20 57 69 74 68 6f  or reuse.  Witho
1140: 75 74 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20  ut this option, 
1150: 64 65 6c 65 74 65 64 20 64 61 74 61 0a 20 20 6d  deleted data.  m
1160: 69 67 68 74 20 62 65 20 72 65 63 6f 76 65 72 61  ight be recovera
1170: 62 6c 65 20 66 72 6f 6d 20 61 20 64 61 74 61 62  ble from a datab
1180: 61 73 65 20 75 73 69 6e 67 20 61 20 62 69 6e 61  ase using a bina
1190: 72 79 20 65 64 69 74 6f 72 2e 0a 20 20 48 6f 77  ry editor..  How
11a0: 65 76 65 72 2c 20 74 68 65 72 65 20 69 73 20 61  ever, there is a
11b0: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
11c0: 61 6c 74 79 20 66 6f 72 20 75 73 69 6e 67 20 74  alty for using t
11d0: 68 69 73 20 6f 70 74 69 6f 6e 2e 0a 0a 20 20 54  his option...  T
11e0: 68 69 73 20 6f 70 74 69 6f 6e 20 64 6f 65 73 20  his option does 
11f0: 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 63 61 75 73 65  <u>not</u> cause
1200: 20 64 65 6c 65 74 65 64 20 64 61 74 61 20 69 73   deleted data is
1210: 20 73 65 63 75 72 65 6c 79 0a 20 20 72 65 6d 6f   securely.  remo
1220: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 75 6e 64  ved from the und
1230: 65 72 6c 79 69 6e 67 20 73 74 6f 72 61 67 65 20  erlying storage 
1240: 6d 65 64 69 61 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  media..}..COMPIL
1250: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
1260: 5f 54 48 52 45 41 44 53 41 46 45 3d 3c 69 3e 26  _THREADSAFE=<i>&
1270: 6c 74 3b 30 20 6f 72 20 31 26 67 74 3b 3c 2f 69  lt;0 or 1&gt;</i
1280: 3e 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  >} {.  This opti
1290: 6f 6e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74  on controls whet
12a0: 68 65 72 20 6f 72 20 6e 6f 74 20 63 6f 64 65 20  her or not code 
12b0: 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53  is included in S
12c0: 51 4c 69 74 65 20 74 6f 0a 20 20 65 6e 61 62 6c  QLite to.  enabl
12d0: 65 20 69 74 20 74 6f 20 6f 70 65 72 61 74 65 20  e it to operate 
12e0: 73 61 66 65 6c 79 20 69 6e 20 61 20 6d 75 6c 74  safely in a mult
12f0: 69 74 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f  ithreaded enviro
1300: 6e 6d 65 6e 74 2e 20 20 54 68 65 0a 20 20 64 65  nment.  The.  de
1310: 66 61 75 6c 74 20 69 73 20 53 51 4c 49 54 45 5f  fault is SQLITE_
1320: 54 48 52 45 41 44 53 41 46 45 3d 31 20 77 68 69  THREADSAFE=1 whi
1330: 63 68 20 69 73 20 73 61 66 65 20 66 6f 72 20 75  ch is safe for u
1340: 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 74 68 72  se in a multithr
1350: 65 61 64 65 64 0a 20 20 65 6e 76 69 72 6f 6e 6d  eaded.  environm
1360: 65 6e 74 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69  ent.  When compi
1370: 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f  led with SQLITE_
1380: 54 48 52 45 41 44 53 41 46 45 3d 30 20 61 6c 6c  THREADSAFE=0 all
1390: 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 0a 20   mutexing code. 
13a0: 20 69 73 20 6f 6d 69 74 74 65 64 20 61 6e 64 20   is omitted and 
13b0: 69 74 20 69 73 20 75 6e 73 61 66 65 20 74 6f 20  it is unsafe to 
13c0: 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 61 20  use SQLite in a 
13d0: 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 70 72  multithreaded pr
13e0: 6f 67 72 61 6d 2e 0a 0a 20 20 54 68 65 20 76 61  ogram...  The va
13f0: 6c 75 65 20 6f 66 20 53 51 4c 49 54 45 5f 54 48  lue of SQLITE_TH
1400: 52 45 41 44 53 41 46 45 20 63 61 6e 20 62 65 20  READSAFE can be 
1410: 64 65 74 65 72 6d 69 6e 65 64 20 61 74 20 72 75  determined at ru
1420: 6e 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74  n-time.  using t
1430: 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 68 72 65  he [sqlite3_thre
1440: 61 64 73 61 66 65 28 29 5d 20 69 6e 74 65 72 66  adsafe()] interf
1450: 61 63 65 2e 0a 0a 20 20 57 68 65 6e 20 53 51 4c  ace...  When SQL
1460: 69 74 65 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  ite has been com
1470: 70 69 6c 65 64 20 77 69 74 68 20 53 51 4c 49 54  piled with SQLIT
1480: 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 20 74  E_THREADSAFE=1 t
1490: 68 65 6e 20 6d 75 74 65 78 69 6e 67 0a 20 20 63  hen mutexing.  c
14a0: 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 61  an be disabled a
14b0: 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67  t run-time using
14c0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
14d0: 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
14e0: 65 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74  e together.  wit
14f0: 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  h the [SQLITE_CO
1500: 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41  NFIG_SINGLETHREA
1510: 44 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  D], [SQLITE_CONF
1520: 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 2c  IG_MULTITHREAD],
1530: 20 61 6e 64 0a 20 20 5b 53 51 4c 49 54 45 5f 43   and.  [SQLITE_C
1540: 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44  ONFIG_SERIALIZED
1550: 5d 20 76 65 72 62 73 2e 0a 7d 0a 0a 43 4f 4d 50  ] verbs..}..COMP
1560: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
1570: 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 3c 69  TE_TEMP_STORE=<i
1580: 3e 26 6c 74 3b 30 20 74 68 72 6f 75 67 68 20 33  >&lt;0 through 3
1590: 26 67 74 3b 3c 2f 69 3e 7d 20 7b 0a 20 20 54 68  &gt;</i>} {.  Th
15a0: 69 73 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 72 6f  is option contro
15b0: 6c 73 20 77 68 65 74 68 65 72 20 74 65 6d 70 6f  ls whether tempo
15c0: 72 61 72 79 20 66 69 6c 65 73 20 61 72 65 20 73  rary files are s
15d0: 74 6f 72 65 64 20 6f 6e 20 64 69 73 6b 20 6f 72  tored on disk or
15e0: 0a 20 20 69 6e 20 6d 65 6d 6f 72 79 2e 20 20 54  .  in memory.  T
15f0: 68 65 20 6d 65 61 6e 69 6e 67 73 20 66 6f 72 20  he meanings for 
1600: 76 61 72 69 6f 75 73 20 73 65 74 74 69 6e 67 73  various settings
1610: 20 6f 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   of this compile
1620: 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 61  -time.  option a
1630: 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a  re as follows:..
1640: 20 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64    <table cellpad
1650: 64 69 6e 67 3d 22 32 22 20 62 6f 72 64 65 72 3d  ding="2" border=
1660: 22 31 22 3e 0a 20 20 3c 74 72 3e 3c 74 68 3e 53  "1">.  <tr><th>S
1670: 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45  QLITE_TEMP_STORE
1680: 3c 2f 74 68 3e 3c 74 68 3e 4d 65 61 6e 69 6e 67  </th><th>Meaning
1690: 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72  </th></tr>.  <tr
16a0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
16b0: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 41 6c  er">0</td><td>Al
16c0: 77 61 79 73 20 75 73 65 20 74 65 6d 70 6f 72 61  ways use tempora
16d0: 72 79 20 66 69 6c 65 73 3c 2f 74 64 3e 3c 2f 74  ry files</td></t
16e0: 72 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 61 6c 69  r>.  <tr><td ali
16f0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74  gn="center">1</t
1700: 64 3e 3c 74 64 3e 55 73 65 20 66 69 6c 65 73 20  d><td>Use files 
1710: 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 20 61  by default but a
1720: 6c 6c 6f 77 20 74 68 65 0a 20 20 5b 50 52 41 47  llow the.  [PRAG
1730: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5d 20 63  MA temp_store] c
1740: 6f 6d 6d 61 6e 64 20 74 6f 20 6f 76 65 72 72 69  ommand to overri
1750: 64 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 3c  de</td></tr>.  <
1760: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
1770: 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 3e  nter">2</td><td>
1780: 55 73 65 20 6d 65 6d 6f 72 79 20 62 79 20 64 65  Use memory by de
1790: 66 61 75 6c 74 20 62 75 74 20 61 6c 6c 6f 77 20  fault but allow 
17a0: 74 68 65 0a 20 20 5b 50 52 41 47 4d 41 20 74 65  the.  [PRAGMA te
17b0: 6d 70 5f 73 74 6f 72 65 5d 20 63 6f 6d 6d 61 6e  mp_store] comman
17c0: 64 20 74 6f 20 6f 76 65 72 72 69 64 65 3c 2f 74  d to override</t
17d0: 64 3e 3c 2f 74 72 3e 0a 20 20 3c 74 72 3e 3c 74  d></tr>.  <tr><t
17e0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
17f0: 3e 33 3c 2f 74 64 3e 3c 74 64 3e 41 6c 77 61 79  >3</td><td>Alway
1800: 73 20 75 73 65 20 6d 65 6d 6f 72 79 3c 2f 74 64  s use memory</td
1810: 3e 3c 2f 74 72 3e 0a 20 20 3c 2f 74 61 62 6c 65  ></tr>.  </table
1820: 3e 0a 0a 20 20 54 68 65 20 64 65 66 61 75 6c 74  >..  The default
1830: 20 73 65 74 74 69 6e 67 20 69 73 20 31 2e 20 20   setting is 1.  
1840: 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e  .  Additional in
1850: 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65  formation can be
1860: 20 66 6f 75 6e 64 20 69 6e 20 5b 74 65 6d 70 73   found in [temps
1870: 74 6f 72 65 20 7c 20 74 65 6d 70 66 69 6c 65 73  tore | tempfiles
1880: 2e 68 74 6d 6c 5d 2e 0a 7d 0a 3c 2f 74 63 6c 3e  .html]..}.</tcl>
1890: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 65 6e 61 62 6c  ..<a name="enabl
18a0: 65 66 65 61 74 75 72 65 73 22 3e 3c 2f 61 3e 0a  efeatures"></a>.
18b0: 3c 68 32 3e 31 2e 34 20 4f 70 74 69 6f 6e 73 20  <h2>1.4 Options 
18c0: 54 6f 20 45 6e 61 62 6c 65 20 46 65 61 74 75 72  To Enable Featur
18d0: 65 73 20 4e 6f 72 6d 61 6c 6c 79 20 54 75 72 6e  es Normally Turn
18e0: 65 64 20 4f 66 66 3c 2f 68 32 3e 0a 0a 3c 74 63  ed Off</h2>..<tc
18f0: 6c 3e 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  l>.COMPILE_OPTIO
1900: 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  N {SQLITE_ENABLE
1910: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 7d 20 7b  _ATOMIC_WRITE} {
1920: 0a 20 20 49 66 20 74 68 69 73 20 43 2d 70 72 65  .  If this C-pre
1930: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
1940: 69 73 20 64 65 66 69 6e 65 64 20 61 6e 64 20 69  is defined and i
1950: 66 20 74 68 65 0a 20 20 78 44 65 76 69 63 65 43  f the.  xDeviceC
1960: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6d  haracteristics m
1970: 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65  ethod of [sqlite
1980: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
1990: 6a 65 63 74 20 66 6f 72 0a 20 20 61 20 64 61 74  ject for.  a dat
19a0: 61 62 61 73 65 20 66 69 6c 65 20 72 65 70 6f 72  abase file repor
19b0: 74 73 20 28 76 69 61 20 6f 6e 65 20 6f 66 20 74  ts (via one of t
19c0: 68 65 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  he [SQLITE_IOCAP
19d0: 5f 41 54 4f 4d 49 43 5d 20 62 69 74 73 29 0a 20  _ATOMIC] bits). 
19e0: 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 73 79   that the filesy
19f0: 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20 61 74  stem supports at
1a00: 6f 6d 69 63 20 77 72 69 74 65 73 20 61 6e 64 20  omic writes and 
1a10: 69 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  if a transaction
1a20: 0a 20 20 69 6e 76 6f 6c 76 65 73 20 61 20 63 68  .  involves a ch
1a30: 61 6e 67 65 20 74 6f 20 6f 6e 6c 79 20 61 20 73  ange to only a s
1a40: 69 6e 67 6c 65 20 70 61 67 65 20 6f 66 20 74 68  ingle page of th
1a50: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c  e database file,
1a60: 0a 20 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e  .  then the tran
1a70: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 20  saction commits 
1a80: 77 69 74 68 20 6a 75 73 74 20 61 20 73 69 6e 67  with just a sing
1a90: 6c 65 20 77 72 69 74 65 20 72 65 71 75 65 73 74  le write request
1aa0: 20 6f 66 0a 20 20 61 20 73 69 6e 67 6c 65 20 70   of.  a single p
1ab0: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
1ac0: 61 73 65 20 61 6e 64 20 6e 6f 20 72 6f 6c 6c 62  ase and no rollb
1ad0: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 63  ack journal is c
1ae0: 72 65 61 74 65 64 0a 20 20 6f 72 20 77 72 69 74  reated.  or writ
1af0: 74 65 6e 2e 20 20 4f 6e 20 66 69 6c 65 73 79 73  ten.  On filesys
1b00: 74 65 6d 73 20 74 68 61 74 20 73 75 70 70 6f 72  tems that suppor
1b10: 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 2c  t atomic writes,
1b20: 20 74 68 69 73 0a 20 20 6f 70 74 69 6d 69 7a 61   this.  optimiza
1b30: 74 69 6f 6e 20 63 61 6e 20 72 65 73 75 6c 74 20  tion can result 
1b40: 69 6e 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73  in significant s
1b50: 70 65 65 64 20 69 6d 70 72 6f 76 65 6d 65 6e 74  peed improvement
1b60: 73 20 66 6f 72 0a 20 20 73 6d 61 6c 6c 20 75 70  s for.  small up
1b70: 64 61 74 65 73 2e 20 20 48 6f 77 65 76 65 72 2c  dates.  However,
1b80: 20 66 65 77 20 66 69 6c 65 73 79 73 74 65 6d 73   few filesystems
1b90: 20 73 75 70 70 6f 72 74 20 74 68 69 73 20 63 61   support this ca
1ba0: 70 61 62 69 6c 69 74 79 0a 20 20 61 6e 64 20 74  pability.  and t
1bb0: 68 65 20 63 6f 64 65 20 70 61 74 68 73 20 74 68  he code paths th
1bc0: 61 74 20 63 68 65 63 6b 20 66 6f 72 20 74 68 69  at check for thi
1bd0: 73 20 63 61 70 61 62 69 6c 69 74 79 20 73 6c 6f  s capability slo
1be0: 77 20 64 6f 77 6e 20 77 72 69 74 65 0a 20 20 70  w down write.  p
1bf0: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 79  erformance on sy
1c00: 73 74 65 6d 73 20 74 68 61 74 20 6c 61 63 6b 20  stems that lack 
1c10: 61 74 6f 6d 69 63 20 77 72 69 74 65 20 63 61 70  atomic write cap
1c20: 61 62 69 6c 69 74 79 2c 20 73 6f 20 74 68 69 73  ability, so this
1c30: 0a 20 20 66 65 61 74 75 72 65 20 69 73 20 64 69  .  feature is di
1c40: 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
1c50: 74 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  t..}..COMPILE_OP
1c60: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41  TION {SQLITE_ENA
1c70: 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44  BLE_COLUMN_METAD
1c80: 41 54 41 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68  ATA} {.  When th
1c90: 69 73 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  is C-preprocesso
1ca0: 72 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e  r macro is defin
1cb0: 65 64 2c 20 53 51 4c 69 74 65 20 69 6e 63 6c 75  ed, SQLite inclu
1cc0: 64 65 73 20 73 6f 6d 65 0a 20 20 61 64 64 69 74  des some.  addit
1cd0: 69 6f 6e 61 6c 20 41 50 49 73 20 74 68 61 74 20  ional APIs that 
1ce0: 70 72 6f 76 69 64 65 20 63 6f 6e 76 65 6e 69 65  provide convenie
1cf0: 6e 74 20 61 63 63 65 73 73 20 74 6f 20 6d 65 74  nt access to met
1d00: 61 2d 64 61 74 61 20 61 62 6f 75 74 0a 20 20 74  a-data about.  t
1d10: 61 62 6c 65 73 20 61 6e 64 20 71 75 65 72 69 65  ables and querie
1d20: 73 2e 20 20 54 68 65 20 41 50 49 73 20 74 68 61  s.  The APIs tha
1d30: 74 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79  t are enabled by
1d40: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 61 72 65   this option are
1d50: 3a 0a 0a 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e  :..  <ul>.  <li>
1d60: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
1d70: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 29  _database_name()
1d80: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
1d90: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1da0: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 29  atabase_name16()
1db0: 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 20 5b  ] </li>.  <li> [
1dc0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
1dd0: 61 62 6c 65 5f 6e 61 6d 65 28 29 5d 20 3c 2f 6c  able_name()] </l
1de0: 69 3e 0a 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  i>.  <li> [sqlit
1df0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
1e00: 6e 61 6d 65 31 36 28 29 5d 20 3c 2f 6c 69 3e 0a  name16()] </li>.
1e10: 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
1e20: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
1e30: 6d 65 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c  me()] </li>.  <l
1e40: 69 3e 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  i> [sqlite3_colu
1e50: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
1e60: 28 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  ()] </li>.  <li>
1e70: 20 5b 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f   [sqlite3_table_
1e80: 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28  column_metadata(
1e90: 29 5d 20 3c 2f 6c 69 3e 0a 20 20 3c 2f 75 6c 3e  )] </li>.  </ul>
1ea0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
1eb0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ON {SQLITE_ENABL
1ec0: 45 5f 46 54 53 33 7d 20 7b 0a 20 20 57 68 65 6e  E_FTS3} {.  When
1ed0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
1ee0: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
1ef0: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 76  amalgamation], v
1f00: 65 72 73 69 6f 6e 20 33 0a 20 20 6f 66 20 74 68  ersion 3.  of th
1f10: 65 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  e full-text sear
1f20: 63 68 20 65 6e 67 69 6e 65 20 69 73 20 61 64 64  ch engine is add
1f30: 65 64 20 74 6f 20 74 68 65 20 62 75 69 6c 64 20  ed to the build 
1f40: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 7d  automatically..}
1f50: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
1f60: 20 7b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   {SQLITE_ENABLE_
1f70: 49 43 55 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  ICU} {.  This op
1f80: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 20  tion causes the 
1f90: 0a 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70  .  <a href="http
1fa0: 3a 2f 2f 77 77 77 2e 69 63 75 2d 70 72 6f 6a 65  ://www.icu-proje
1fb0: 63 74 2e 6f 72 67 2f 22 3e 49 6e 74 65 72 6e 61  ct.org/">Interna
1fc0: 74 69 6f 6e 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74  tional Component
1fd0: 73 20 66 6f 72 20 55 6e 69 63 6f 64 65 3c 2f 61  s for Unicode</a
1fe0: 3e 0a 20 20 6f 72 20 22 49 43 55 22 20 65 78 74  >.  or "ICU" ext
1ff0: 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69 74 65  ension to SQLite
2000: 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20   to be added to 
2010: 74 68 65 20 62 75 69 6c 64 2e 20 20 0a 7d 0a 0a  the build.  .}..
2020: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
2030: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f  SQLITE_ENABLE_IO
2040: 54 52 41 43 45 7d 20 7b 0a 20 20 57 68 65 6e 20  TRACE} {.  When 
2050: 62 6f 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  both the SQLite 
2060: 63 6f 72 65 20 61 6e 64 20 74 68 65 20 5b 43 6f  core and the [Co
2070: 6d 6d 61 6e 64 20 4c 69 6e 65 20 49 6e 74 65 72  mmand Line Inter
2080: 66 61 63 65 5d 20 28 43 4c 49 29 20 61 72 65 20  face] (CLI) are 
2090: 62 6f 74 68 20 0a 20 20 63 6f 6d 70 69 6c 65 64  both .  compiled
20a0: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
20b0: 6e 2c 20 74 68 65 6e 20 74 68 65 20 43 4c 49 20  n, then the CLI 
20c0: 70 72 6f 76 69 64 65 73 20 61 6e 20 65 78 74 72  provides an extr
20d0: 61 20 63 6f 6d 6d 61 6e 64 0a 20 20 6e 61 6d 65  a command.  name
20e0: 64 20 22 2e 69 6f 74 72 61 63 65 22 20 74 68 61  d ".iotrace" tha
20f0: 74 20 70 72 6f 76 69 64 65 73 20 61 20 6c 6f 77  t provides a low
2100: 2d 6c 65 76 65 6c 20 6c 6f 67 20 6f 66 20 49 2f  -level log of I/
2110: 4f 20 61 63 74 69 76 69 74 79 2e 0a 20 20 54 68  O activity..  Th
2120: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 78 70  is option is exp
2130: 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 6d 61  erimental and ma
2140: 79 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65  y be discontinue
2150: 64 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65  d in a future re
2160: 6c 65 61 73 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  lease..}..COMPIL
2170: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2180: 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f  _ENABLE_LOCKING_
2190: 53 54 59 4c 45 7d 20 7b 0a 20 20 54 68 69 73 20  STYLE} {.  This 
21a0: 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 20 61  option enables a
21b0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
21c0: 69 6e 20 74 68 65 20 4f 53 20 69 6e 74 65 72 66  in the OS interf
21d0: 61 63 65 20 6c 61 79 65 72 20 66 6f 72 0a 20 20  ace layer for.  
21e0: 4d 61 63 20 4f 53 20 58 2e 20 20 54 68 65 20 61  Mac OS X.  The a
21f0: 64 64 69 74 69 6f 6e 61 6c 20 6c 6f 67 69 63 20  dditional logic 
2200: 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  attempts to dete
2210: 72 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f  rmine the type o
2220: 66 20 74 68 65 0a 20 20 75 6e 64 65 72 6c 79 69  f the.  underlyi
2230: 6e 67 20 66 69 6c 65 73 79 73 74 65 6d 20 61 6e  ng filesystem an
2240: 64 20 63 68 6f 6f 73 65 20 61 6e 64 20 61 6c 74  d choose and alt
2250: 65 72 6e 61 74 69 76 65 20 6c 6f 63 6b 69 6e 67  ernative locking
2260: 20 73 74 72 61 74 65 67 79 0a 20 20 74 68 61 74   strategy.  that
2270: 20 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c 79   works correctly
2280: 20 66 6f 72 20 74 68 61 74 20 66 69 6c 65 73 79   for that filesy
2290: 73 74 65 6d 20 74 79 70 65 2e 0a 7d 0a 0a 43 4f  stem type..}..CO
22a0: 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51  MPILE_OPTION {SQ
22b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f  LITE_ENABLE_MEMO
22c0: 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 7d 20 7b  RY_MANAGEMENT} {
22d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  .  This option a
22e0: 64 64 73 20 65 78 74 72 61 20 6c 6f 67 69 63 20  dds extra logic 
22f0: 74 6f 20 53 51 4c 69 74 65 20 74 68 61 74 20 61  to SQLite that a
2300: 6c 6c 6f 77 73 20 69 74 20 74 6f 20 72 65 6c 65  llows it to rele
2310: 61 73 65 20 75 6e 75 73 65 64 0a 20 20 6d 65 6d  ase unused.  mem
2320: 6f 72 79 20 75 70 6f 6e 20 72 65 71 75 65 73 74  ory upon request
2330: 2e 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d  .  This option m
2340: 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20 69  ust be enabled i
2350: 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 0a  n order for the.
2360: 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61    [sqlite3_relea
2370: 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74  se_memory()] int
2380: 65 72 66 61 63 65 20 74 6f 20 77 6f 72 6b 2e 20  erface to work. 
2390: 20 49 66 20 74 68 69 73 20 63 6f 6d 70 69 6c 65   If this compile
23a0: 2d 74 69 6d 65 0a 20 20 6f 70 74 69 6f 6e 20 69  -time.  option i
23b0: 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20  s not used, the 
23c0: 5b 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65  [sqlite3_release
23d0: 5f 6d 65 6d 6f 72 79 28 29 5d 20 69 6e 74 65 72  _memory()] inter
23e0: 66 61 63 65 20 69 73 20 61 20 0a 20 20 6e 6f 2d  face is a .  no-
23f0: 6f 70 2e 20 20 53 69 6e 63 65 20 5b 73 71 6c 69  op.  Since [sqli
2400: 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c 69  te3_soft_heap_li
2410: 6d 69 74 28 29 5d 20 64 65 70 65 6e 64 73 20 6f  mit()] depends o
2420: 6e 0a 20 20 5b 73 71 6c 69 74 65 33 5f 72 65 6c  n.  [sqlite3_rel
2430: 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 5d 2c 20  ease_memory()], 
2440: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 61  this option is a
2450: 6c 73 6f 20 6e 65 63 65 73 73 61 72 79 20 66 6f  lso necessary fo
2460: 72 0a 20 20 74 68 65 20 63 6f 72 72 65 63 74 20  r.  the correct 
2470: 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 5b 73 71  operation of [sq
2480: 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f  lite3_soft_heap_
2490: 6c 69 6d 69 74 28 29 5d 2e 0a 7d 0a 0a 43 4f 4d  limit()]..}..COM
24a0: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
24b0: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
24c0: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
24d0: 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20  n causes SQLite 
24e0: 74 6f 20 69 6e 63 6c 75 64 65 20 73 75 70 70 6f  to include suppo
24f0: 72 74 20 66 6f 72 20 74 68 65 0a 20 20 5b 72 74  rt for the.  [rt
2500: 72 65 65 20 7c 20 52 2a 54 72 65 65 20 69 6e 64  ree | R*Tree ind
2510: 65 78 20 65 78 74 65 6e 73 69 6f 6e 5d 2e 0a 7d  ex extension]..}
2520: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65  .</tcl>..<a name
2530: 3d 22 6f 6d 69 74 66 65 61 74 75 72 65 73 22 3e  ="omitfeatures">
2540: 3c 2f 61 3e 0a 3c 68 32 3e 31 2e 35 20 4f 70 74  </a>.<h2>1.5 Opt
2550: 69 6f 6e 73 20 54 6f 20 4f 6d 69 74 20 46 65 61  ions To Omit Fea
2560: 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54  tures</h2>..<p>T
2570: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74  he following opt
2580: 69 6f 6e 73 20 63 61 6e 20 75 73 65 64 20 74 6f  ions can used to
2590: 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65   reduce the size
25a0: 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 64   of the compiled
25b0: 0a 6c 69 62 72 61 72 79 20 62 79 20 6f 6d 69 74  .library by omit
25c0: 74 69 6e 67 20 6f 70 74 69 6f 6e 61 6c 20 66 65  ting optional fe
25d0: 61 74 75 72 65 73 2e 20 54 68 69 73 20 69 73 20  atures. This is 
25e0: 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 75 73  probably only us
25f0: 65 66 75 6c 0a 69 6e 20 65 6d 62 65 64 64 65 64  eful.in embedded
2600: 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20 73   systems where s
2610: 70 61 63 65 20 69 73 20 65 73 70 65 63 69 61 6c  pace is especial
2620: 6c 79 20 74 69 67 68 74 2c 20 61 73 20 65 76 65  ly tight, as eve
2630: 6e 20 77 69 74 68 20 61 6c 6c 0a 66 65 61 74 75  n with all.featu
2640: 72 65 73 20 69 6e 63 6c 75 64 65 64 20 74 68 65  res included the
2650: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
2660: 69 73 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6d  is relatively sm
2670: 61 6c 6c 2e 20 44 6f 6e 27 74 20 66 6f 72 67 65  all. Don't forge
2680: 74 0a 74 6f 20 74 65 6c 6c 20 79 6f 75 72 20 63  t.to tell your c
2690: 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70 74 69 6d  ompiler to optim
26a0: 69 7a 65 20 66 6f 72 20 62 69 6e 61 72 79 20 73  ize for binary s
26b0: 69 7a 65 21 20 28 74 68 65 20 2d 4f 73 20 6f 70  ize! (the -Os op
26c0: 74 69 6f 6e 20 69 66 0a 75 73 69 6e 67 20 47 43  tion if.using GC
26d0: 43 29 2e 20 20 54 65 6c 6c 69 6e 67 20 79 6f 75  C).  Telling you
26e0: 72 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 6f 70  r compiler to op
26f0: 74 69 6d 69 7a 65 20 66 6f 72 20 73 69 7a 65 20  timize for size 
2700: 75 73 75 61 6c 6c 79 20 68 61 73 0a 61 20 6d 75  usually has.a mu
2710: 63 68 20 6c 61 72 67 65 20 69 6d 70 61 63 74 20  ch large impact 
2720: 6f 6e 20 6c 69 62 72 61 72 79 20 66 6f 6f 74 70  on library footp
2730: 72 69 6e 74 20 74 68 61 6e 20 65 6d 70 6c 6f 79  rint than employ
2740: 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65 73 65  ing any of these
2750: 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
2760: 74 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  tions.</p>..<p>T
2770: 68 65 20 6d 61 63 72 6f 73 20 69 6e 20 74 68 69  he macros in thi
2780: 73 20 73 65 63 74 69 6f 6e 20 64 6f 20 6e 6f 74  s section do not
2790: 20 72 65 71 75 69 72 65 20 76 61 6c 75 65 73 2e   require values.
27a0: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 0a   The following .
27b0: 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 77 69 74  compilation swit
27c0: 63 68 65 73 20 61 6c 6c 20 68 61 76 65 20 74 68  ches all have th
27d0: 65 20 73 61 6d 65 20 65 66 66 65 63 74 3a 3c 62  e same effect:<b
27e0: 72 3e 0a 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54  r>.-DSQLITE_OMIT
27f0: 5f 41 4c 54 45 52 54 41 42 4c 45 3c 62 72 3e 0a  _ALTERTABLE<br>.
2800: 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c  -DSQLITE_OMIT_AL
2810: 54 45 52 54 41 42 4c 45 3d 31 3c 62 72 3e 0a 2d  TERTABLE=1<br>.-
2820: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54  DSQLITE_OMIT_ALT
2830: 45 52 54 41 42 4c 45 3d 30 0a 3c 2f 70 3e 0a 0a  ERTABLE=0.</p>..
2840: 3c 70 3e 49 66 20 61 6e 79 20 6f 66 20 74 68 65  <p>If any of the
2850: 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 64  se options are d
2860: 65 66 69 6e 65 64 2c 20 74 68 65 6e 20 74 68 65  efined, then the
2870: 20 73 61 6d 65 20 73 65 74 20 6f 66 20 53 51 4c   same set of SQL
2880: 49 54 45 5f 4f 4d 49 54 5f 58 58 58 0a 6f 70 74  ITE_OMIT_XXX.opt
2890: 69 6f 6e 73 20 6d 75 73 74 20 61 6c 73 6f 20 62  ions must also b
28a0: 65 20 64 65 66 69 6e 65 64 20 77 68 65 6e 20 75  e defined when u
28b0: 73 69 6e 67 20 74 68 65 20 27 6c 65 6d 6f 6e 27  sing the 'lemon'
28c0: 20 74 6f 6f 6c 20 74 6f 20 67 65 6e 65 72 61 74   tool to generat
28d0: 65 20 61 20 70 61 72 73 65 2e 63 0a 66 69 6c 65  e a parse.c.file
28e0: 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 69  . Because of thi
28f0: 73 2c 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73  s, these options
2900: 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
2910: 64 20 77 68 65 6e 20 74 68 65 20 6c 69 62 72 61  d when the libra
2920: 72 79 20 69 73 20 62 75 69 6c 74 0a 66 72 6f 6d  ry is built.from
2930: 20 73 6f 75 72 63 65 2c 20 6e 6f 74 20 66 72 6f   source, not fro
2940: 6d 20 74 68 65 20 5b 61 6d 61 6c 67 61 6d 61 74  m the [amalgamat
2950: 69 6f 6e 5d 20 6f 72 20 66 72 6f 6d 20 74 68 65  ion] or from the
2960: 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 70   collection of.p
2970: 72 65 2d 70 61 63 6b 61 67 65 64 20 43 20 66 69  re-packaged C fi
2980: 6c 65 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72  les provided for
2990: 20 6e 6f 6e 2d 55 4e 49 58 20 6c 69 6b 65 20 70   non-UNIX like p
29a0: 6c 61 74 66 6f 72 6d 73 20 6f 6e 20 74 68 65 20  latforms on the 
29b0: 77 65 62 73 69 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c  website..</p>..<
29c0: 70 3e 54 68 65 73 65 20 22 4f 4d 49 54 22 20 6f  p>These "OMIT" o
29d0: 70 74 69 6f 6e 73 20 61 72 65 20 63 6f 6e 73 69  ptions are consi
29e0: 64 65 72 65 64 20 75 6e 73 75 70 70 6f 72 74 65  dered unsupporte
29f0: 64 2e 20 20 41 6e 79 20 6f 66 20 74 68 65 73 65  d.  Any of these
2a00: 0a 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20  .options may be 
2a10: 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65  removed from the
2a20: 20 63 6f 64 65 20 69 6e 20 61 20 66 75 74 75 72   code in a futur
2a30: 65 20 72 65 6c 65 61 73 65 0a 61 6e 64 20 77 69  e release.and wi
2a40: 74 68 6f 75 74 20 77 61 72 6e 69 6e 67 2e 20 20  thout warning.  
2a50: 46 6f 72 20 61 6e 79 20 70 61 72 74 69 63 75 6c  For any particul
2a60: 61 72 20 72 65 6c 65 61 73 65 2c 20 73 6f 6d 65  ar release, some
2a70: 20 6f 66 20 74 68 65 73 65 0a 6f 70 74 69 6f 6e   of these.option
2a80: 73 20 6d 61 79 20 63 61 75 73 65 20 63 6f 6d 70  s may cause comp
2a90: 69 6c 65 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d  ile-time or run-
2aa0: 74 69 6d 65 20 66 61 69 6c 75 72 65 73 2e 3c 2f  time failures.</
2ab0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 43 4f 4d 50 49 4c  p>..<tcl>.COMPIL
2ac0: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
2ad0: 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45  _OMIT_ALTERTABLE
2ae0: 7d 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20  } {.  When this 
2af0: 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65  option is define
2b00: 64 2c 20 74 68 65 20 0a 20 20 5b 41 4c 54 45 52  d, the .  [ALTER
2b10: 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20   TABLE] command 
2b20: 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20  is not included 
2b30: 69 6e 20 74 68 65 20 0a 20 20 6c 69 62 72 61 72  in the .  librar
2b40: 79 2e 20 45 78 65 63 75 74 69 6e 67 20 61 6e 20  y. Executing an 
2b50: 5b 41 4c 54 45 52 20 54 41 42 4c 45 5d 20 73 74  [ALTER TABLE] st
2b60: 61 74 65 6d 65 6e 74 20 63 61 75 73 65 73 20 61  atement causes a
2b70: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a   parse error..}.
2b80: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
2b90: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41  {SQLITE_OMIT_ANA
2ba0: 4c 59 5a 45 7d 20 7b 0a 20 20 57 68 65 6e 20 74  LYZE} {.  When t
2bb0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
2bc0: 66 69 6e 65 64 2c 20 74 68 65 20 5b 41 4e 41 4c  fined, the [ANAL
2bd0: 59 5a 45 5d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  YZE] command is 
2be0: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 0a 20 20 74  omitted from.  t
2bf0: 68 65 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d  he build..}..COM
2c00: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
2c10: 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 7d  ITE_OMIT_ATTACH}
2c20: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 6f   {.  When this o
2c30: 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64  ption is defined
2c40: 2c 20 74 68 65 20 5b 41 54 54 41 43 48 5d 20 61  , the [ATTACH] a
2c50: 6e 64 20 5b 44 45 54 41 43 48 5d 20 63 6f 6d 6d  nd [DETACH] comm
2c60: 61 6e 64 73 20 61 72 65 0a 20 20 6f 6d 69 74 74  ands are.  omitt
2c70: 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
2c80: 64 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  d..}..COMPILE_OP
2c90: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
2ca0: 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 7d  T_AUTHORIZATION}
2cb0: 20 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68   {.  Defining th
2cc0: 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20  is option omits 
2cd0: 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f  the authorizatio
2ce0: 6e 20 63 61 6c 6c 62 61 63 6b 20 66 65 61 74 75  n callback featu
2cf0: 72 65 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c 69  re from the.  li
2d00: 62 72 61 72 79 2e 20 54 68 65 20 5b 73 71 6c 69  brary. The [sqli
2d10: 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
2d20: 65 72 28 29 5d 20 41 50 49 20 66 75 6e 63 74 69  er()] API functi
2d30: 6f 6e 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  on is not presen
2d40: 74 0a 20 20 69 6e 20 74 68 65 20 6c 69 62 72 61  t.  in the libra
2d50: 72 79 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  ry..}..COMPILE_O
2d60: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
2d70: 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  IT_AUTOINCREMENT
2d80: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
2d90: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 6f 6d 69  n is used to omi
2da0: 74 20 74 68 65 20 0a 20 20 5b 41 55 54 4f 49 4e  t the .  [AUTOIN
2db0: 43 52 45 4d 45 4e 54 5d 20 66 75 6e 63 74 69 6f  CREMENT] functio
2dc0: 6e 61 6c 69 74 79 2e 20 57 68 65 6e 20 74 68 69  nality. When thi
2dd0: 73 20 0a 20 20 69 73 20 6d 61 63 72 6f 20 69 73  s .  is macro is
2de0: 20 64 65 66 69 6e 65 64 2c 20 63 6f 6c 75 6d 6e   defined, column
2df0: 73 20 64 65 63 6c 61 72 65 64 20 61 73 20 0a 20  s declared as . 
2e00: 20 22 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41   "[INTEGER PRIMA
2e10: 52 59 20 4b 45 59 5d 20 41 55 54 4f 49 4e 43 52  RY KEY] AUTOINCR
2e20: 45 4d 45 4e 54 22 0a 20 20 62 65 68 61 76 65 20  EMENT".  behave 
2e30: 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20  in the same way 
2e40: 61 73 20 63 6f 6c 75 6d 6e 73 20 64 65 63 6c 61  as columns decla
2e50: 72 65 64 20 61 73 20 22 5b 49 4e 54 45 47 45 52  red as "[INTEGER
2e60: 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 22 20 77   PRIMARY KEY]" w
2e70: 68 65 6e 20 61 20 0a 20 20 4e 55 4c 4c 20 69 73  hen a .  NULL is
2e80: 20 69 6e 73 65 72 74 65 64 2e 20 54 68 65 20 73   inserted. The s
2e90: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20 73  qlite_sequence s
2ea0: 79 73 74 65 6d 20 74 61 62 6c 65 20 69 73 20 6e  ystem table is n
2eb0: 65 69 74 68 65 72 20 63 72 65 61 74 65 64 2c 20  either created, 
2ec0: 6e 6f 72 0a 20 20 72 65 73 70 65 63 74 65 64 20  nor.  respected 
2ed0: 69 66 20 69 74 20 61 6c 72 65 61 64 79 20 65 78  if it already ex
2ee0: 69 73 74 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45  ists..}..COMPILE
2ef0: 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f  _OPTION {SQLITE_
2f00: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 7d 20 7b  OMIT_AUTOINIT} {
2f10: 0a 20 20 46 6f 72 20 62 61 63 6b 77 61 72 64 73  .  For backwards
2f20: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
2f30: 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f  ith older versio
2f40: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61  ns of SQLite tha
2f50: 74 20 6c 61 63 6b 0a 20 20 74 68 65 20 5b 73 71  t lack.  the [sq
2f60: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
2f70: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74  ()] interface, t
2f80: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  he [sqlite3_init
2f90: 69 61 6c 69 7a 65 28 29 5d 20 69 6e 74 65 72 66  ialize()] interf
2fa0: 61 63 65 0a 20 20 69 73 20 63 61 6c 6c 65 64 20  ace.  is called 
2fb0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70  automatically up
2fc0: 6f 6e 20 65 6e 74 72 79 20 74 6f 20 63 65 72 74  on entry to cert
2fd0: 61 69 6e 20 6b 65 79 20 69 6e 74 65 72 66 61 63  ain key interfac
2fe0: 65 73 20 73 75 63 68 20 61 73 0a 20 20 5b 73 71  es such as.  [sq
2ff0: 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b  lite3_open()], [
3000: 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69  sqlite3_vfs_regi
3010: 73 74 65 72 28 29 5d 2c 20 61 6e 64 20 5b 73 71  ster()], and [sq
3020: 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d  lite3_mprintf()]
3030: 2e 0a 20 20 54 68 65 20 6f 76 65 72 68 65 61 64  ..  The overhead
3040: 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71   of invoking [sq
3050: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
3060: 28 29 5d 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ()] automaticall
3070: 79 20 69 6e 20 74 68 69 73 0a 20 20 77 61 79 20  y in this.  way 
3080: 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20 62  may be omitted b
3090: 79 20 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74  y building SQLit
30a0: 65 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54  e with the SQLIT
30b0: 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a  E_OMIT_AUTOINIT.
30c0: 20 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f 72    C-preprocessor
30d0: 20 6d 61 63 72 6f 2e 20 20 57 68 65 6e 20 62 75   macro.  When bu
30e0: 69 6c 74 20 75 73 69 6e 67 20 53 51 4c 49 54 45  ilt using SQLITE
30f0: 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 2c 20  _OMIT_AUTOINIT, 
3100: 53 51 4c 69 74 65 0a 20 20 77 69 6c 6c 20 6e 6f  SQLite.  will no
3110: 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  t automatically 
3120: 69 6e 69 74 69 61 6c 69 7a 65 20 69 74 73 65 6c  initialize itsel
3130: 66 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63  f and the applic
3140: 61 74 69 6f 6e 20 69 73 20 72 65 71 75 69 72 65  ation is require
3150: 64 0a 20 20 74 6f 20 69 6e 76 6f 6b 65 20 5b 73  d.  to invoke [s
3160: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
3170: 65 28 29 5d 20 64 69 72 65 63 74 6c 79 20 70 72  e()] directly pr
3180: 69 6f 72 20 74 6f 20 62 65 67 69 6e 6e 69 6e 67  ior to beginning
3190: 20 75 73 65 20 6f 66 20 74 68 65 0a 20 20 53 51   use of the.  SQ
31a0: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 7d 0a  Lite library..}.
31b0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
31c0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  {SQLITE_OMIT_AUT
31d0: 4f 56 41 43 55 55 4d 7d 20 7b 0a 20 20 49 66 20  OVACUUM} {.  If 
31e0: 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64  this option is d
31f0: 65 66 69 6e 65 64 2c 20 74 68 65 20 6c 69 62 72  efined, the libr
3200: 61 72 79 20 63 61 6e 6e 6f 74 20 63 72 65 61 74  ary cannot creat
3210: 65 20 6f 72 20 77 72 69 74 65 20 74 6f 20 0a 20  e or write to . 
3220: 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
3230: 73 75 70 70 6f 72 74 20 5b 61 75 74 6f 5f 76 61  support [auto_va
3240: 63 75 75 6d 5d 2e 0a 20 20 45 78 65 63 75 74 69  cuum]..  Executi
3250: 6e 67 20 61 20 5b 50 52 41 47 4d 41 20 61 75 74  ng a [PRAGMA aut
3260: 6f 5f 76 61 63 75 75 6d 5d 20 73 74 61 74 65 6d  o_vacuum] statem
3270: 65 6e 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72  ent is not an er
3280: 72 6f 72 0a 20 20 28 73 69 6e 63 65 20 75 6e 6b  ror.  (since unk
3290: 6e 6f 77 6e 20 50 52 41 47 4d 41 73 20 61 72 65  nown PRAGMAs are
32a0: 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65   silently ignore
32b0: 64 29 2c 20 62 75 74 20 64 6f 65 73 20 6e 6f 74  d), but does not
32c0: 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65 0a   return a value.
32d0: 20 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 65 20    or modify the 
32e0: 61 75 74 6f 2d 76 61 63 75 75 6d 20 66 6c 61 67  auto-vacuum flag
32f0: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
3300: 20 66 69 6c 65 2e 20 49 66 20 61 20 64 61 74 61   file. If a data
3310: 62 61 73 65 20 74 68 61 74 0a 20 20 73 75 70 70  base that.  supp
3320: 6f 72 74 73 20 61 75 74 6f 2d 76 61 63 75 75 6d  orts auto-vacuum
3330: 20 69 73 20 6f 70 65 6e 65 64 20 62 79 20 61 20   is opened by a 
3340: 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 64  library compiled
3350: 20 77 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f   with this optio
3360: 6e 2c 20 69 74 0a 20 20 69 73 20 61 75 74 6f 6d  n, it.  is autom
3370: 61 74 69 63 61 6c 6c 79 20 6f 70 65 6e 65 64 20  atically opened 
3380: 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64  in read-only mod
3390: 65 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  e..}..COMPILE_OP
33a0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
33b0: 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49  T_BETWEEN_OPTIMI
33c0: 5a 41 54 49 4f 4e 7d 20 7b 0a 20 20 54 68 69 73  ZATION} {.  This
33d0: 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73   option disables
33e0: 20 74 68 65 20 75 73 65 20 6f 66 20 69 6e 64 69   the use of indi
33f0: 63 65 73 20 77 69 74 68 20 57 48 45 52 45 20 63  ces with WHERE c
3400: 6c 61 75 73 65 20 74 65 72 6d 73 0a 20 20 74 68  lause terms.  th
3410: 61 74 20 65 6d 70 6c 6f 79 20 74 68 65 20 42 45  at employ the BE
3420: 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 0a  TWEEN operator..
3430: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
3440: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  N {SQLITE_OMIT_B
3450: 4c 4f 42 5f 4c 49 54 45 52 41 4c 7d 20 7b 0a 20  LOB_LITERAL} {. 
3460: 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f   When this optio
3470: 6e 20 69 73 20 64 65 66 69 6e 65 64 2c 20 69 74  n is defined, it
3480: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
3490: 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 62 6c   to specify a bl
34a0: 6f 62 20 69 6e 0a 20 20 61 6e 20 53 51 4c 20 73  ob in.  an SQL s
34b0: 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 74  tatement using t
34c0: 68 65 20 58 27 41 42 43 44 27 20 73 79 6e 74 61  he X'ABCD' synta
34d0: 78 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  x..}..COMPILE_OP
34e0: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
34f0: 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 7d 20  T_BUILTIN_TEST} 
3500: 7b 0a 20 20 41 20 73 74 61 6e 64 61 72 64 20 53  {.  A standard S
3510: 51 4c 69 74 65 20 62 75 69 6c 64 20 69 6e 63 6c  QLite build incl
3520: 75 64 65 73 20 61 20 73 6d 61 6c 6c 20 61 6d 6f  udes a small amo
3530: 75 6e 74 20 6f 66 20 6c 6f 67 69 63 20 63 6f 6e  unt of logic con
3540: 74 72 6f 6c 6c 65 64 0a 20 20 62 79 20 74 68 65  trolled.  by the
3550: 20 5b 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63   [sqlite3_test_c
3560: 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66  ontrol()] interf
3570: 61 63 65 20 74 68 61 74 20 69 73 20 75 73 65 64  ace that is used
3580: 20 74 6f 20 65 78 65 72 63 69 73 65 0a 20 20 70   to exercise.  p
3590: 61 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 69  arts of the SQLi
35a0: 74 65 20 63 6f 72 65 20 74 68 61 74 20 61 72 65  te core that are
35b0: 20 64 69 66 66 69 63 75 6c 74 20 74 6f 20 63 6f   difficult to co
35c0: 6e 74 72 6f 6c 20 61 6e 64 20 6d 65 61 73 75 72  ntrol and measur
35d0: 65 20 75 73 69 6e 67 0a 20 20 74 68 65 20 73 74  e using.  the st
35e0: 61 6e 64 61 72 64 20 41 50 49 2e 20 20 54 68 69  andard API.  Thi
35f0: 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 74  s option omits t
3600: 68 61 74 20 62 75 69 6c 74 2d 69 6e 20 74 65 73  hat built-in tes
3610: 74 20 6c 6f 67 69 63 2e 0a 7d 0a 0a 43 4f 4d 50  t logic..}..COMP
3620: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3630: 54 45 5f 4f 4d 49 54 5f 43 41 53 54 7d 20 7b 0a  TE_OMIT_CAST} {.
3640: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61    This option ca
3650: 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 6f  uses SQLite to o
3660: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
3670: 74 68 65 20 43 41 53 54 20 6f 70 65 72 61 74 6f  the CAST operato
3680: 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50  r..}..COMPILE_OP
3690: 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49  TION {SQLITE_OMI
36a0: 54 5f 43 48 45 43 4b 7d 20 7b 0a 20 20 54 68 69  T_CHECK} {.  Thi
36b0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
36c0: 53 51 4c 69 74 65 20 74 6f 20 6f 6d 69 74 20 73  SQLite to omit s
36d0: 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43 4b  upport for CHECK
36e0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 7d 0a   constraints..}.
36f0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3700: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d  {SQLITE_OMIT_COM
3710: 50 4c 45 54 45 7d 20 7b 0a 20 20 54 68 69 73 20  PLETE} {.  This 
3720: 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68  option causes th
3730: 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  e [sqlite3_compl
3740: 65 74 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  ete()] and [sqli
3750: 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29  te3_complete16()
3760: 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20 74  ].  interfaces t
3770: 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  o be omitted..}.
3780: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3790: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d  {SQLITE_OMIT_COM
37a0: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 7d 20 7b 0a  POUND_SELECT} {.
37b0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
37c0: 20 75 73 65 64 20 74 6f 20 6f 6d 69 74 20 74 68   used to omit th
37d0: 65 20 63 6f 6d 70 6f 75 6e 64 20 5b 53 45 4c 45  e compound [SELE
37e0: 43 54 5d 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  CT] functionalit
37f0: 79 2e 20 0a 20 20 5b 53 45 4c 45 43 54 5d 20 73  y. .  [SELECT] s
3800: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 75  tatements that u
3810: 73 65 20 74 68 65 20 0a 20 20 55 4e 49 4f 4e 2c  se the .  UNION,
3820: 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45   UNION ALL, INTE
3830: 52 53 45 43 54 20 6f 72 20 45 58 43 45 50 54 20  RSECT or EXCEPT 
3840: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20  compound SELECT 
3850: 6f 70 65 72 61 74 6f 72 73 20 77 69 6c 6c 20 0a  operators will .
3860: 20 20 63 61 75 73 65 20 61 20 70 61 72 73 65 20    cause a parse 
3870: 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  error..}..COMPIL
3880: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3890: 5f 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f 43  _OMIT_CONFLICT_C
38a0: 4c 41 55 53 45 7d 20 7b 0a 20 20 49 6e 20 74 68  LAUSE} {.  In th
38b0: 65 20 66 75 74 75 72 65 2c 20 74 68 69 73 20 6f  e future, this o
38c0: 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 75 73  ption will be us
38d0: 65 64 20 74 6f 20 6f 6d 69 74 20 74 68 65 20 0a  ed to omit the .
38e0: 20 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20    [ON CONFLICT] 
38f0: 63 6c 61 75 73 65 20 66 72 6f 6d 20 74 68 65 20  clause from the 
3900: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
3910: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3920: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
3930: 5f 46 55 4e 43 53 7d 20 7b 0a 20 20 49 66 20 74  _FUNCS} {.  If t
3940: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
3950: 66 69 6e 65 64 2c 20 53 51 4c 69 74 65 27 73 20  fined, SQLite's 
3960: 62 75 69 6c 74 2d 69 6e 20 64 61 74 65 20 61 6e  built-in date an
3970: 64 20 74 69 6d 65 20 6d 61 6e 69 70 75 6c 61 74  d time manipulat
3980: 69 6f 6e 0a 20 20 66 75 6e 63 74 69 6f 6e 73 20  ion.  functions 
3990: 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 53 70 65  are omitted. Spe
39a0: 63 69 66 69 63 61 6c 6c 79 2c 20 74 68 65 20 53  cifically, the S
39b0: 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 6a 75 6c  QL functions jul
39c0: 69 61 6e 64 61 79 28 29 2c 20 64 61 74 65 28 29  ianday(), date()
39d0: 2c 0a 20 20 74 69 6d 65 28 29 2c 20 64 61 74 65  ,.  time(), date
39e0: 74 69 6d 65 28 29 20 61 6e 64 20 73 74 72 66 74  time() and strft
39f0: 69 6d 65 28 29 20 61 72 65 20 6e 6f 74 20 61 76  ime() are not av
3a00: 61 69 6c 61 62 6c 65 2e 20 54 68 65 20 64 65 66  ailable. The def
3a10: 61 75 6c 74 20 63 6f 6c 75 6d 6e 0a 20 20 76 61  ault column.  va
3a20: 6c 75 65 73 20 43 55 52 52 45 4e 54 5f 54 49 4d  lues CURRENT_TIM
3a30: 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20  E, CURRENT_DATE 
3a40: 61 6e 64 20 43 55 52 52 45 4e 54 5f 44 41 54 45  and CURRENT_DATE
3a50: 54 49 4d 45 20 61 72 65 20 73 74 69 6c 6c 20 61  TIME are still a
3a60: 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 0a 43 4f 4d  vailable..}..COM
3a70: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
3a80: 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50  ITE_OMIT_DECLTYP
3a90: 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69  E} {.  This opti
3aa0: 6f 6e 20 63 61 75 73 65 73 20 53 51 4c 69 74 65  on causes SQLite
3ab0: 20 74 6f 20 6f 6d 69 74 20 73 75 70 70 6f 72 74   to omit support
3ac0: 20 66 6f 72 20 74 68 65 0a 20 20 5b 73 71 6c 69   for the.  [sqli
3ad0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
3ae0: 79 70 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  ype()] and [sqli
3af0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
3b00: 79 70 65 31 36 28 29 5d 0a 20 20 69 6e 74 65 72  ype16()].  inter
3b10: 66 61 63 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  faces..}..COMPIL
3b20: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3b30: 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 7d 20 7b 0a  _OMIT_DISKIO} {.
3b40: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
3b50: 69 74 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 20  its all support 
3b60: 66 6f 72 20 77 72 69 74 69 6e 67 20 74 6f 20 74  for writing to t
3b70: 68 65 20 64 69 73 6b 20 61 6e 64 20 66 6f 72 63  he disk and forc
3b80: 65 73 0a 20 20 64 61 74 61 62 61 73 65 73 20 74  es.  databases t
3b90: 6f 20 65 78 69 73 74 20 69 6e 20 6d 65 6d 6f 72  o exist in memor
3ba0: 79 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d 50 49  y only..}..COMPI
3bb0: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
3bc0: 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 7d 20  E_OMIT_EXPLAIN} 
3bd0: 7b 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69  {.  Defining thi
3be0: 73 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20  s option causes 
3bf0: 74 68 65 20 5b 45 58 50 4c 41 49 4e 5d 20 63 6f  the [EXPLAIN] co
3c00: 6d 6d 61 6e 64 20 74 6f 20 62 65 20 6f 6d 69 74  mmand to be omit
3c10: 74 65 64 20 66 72 6f 6d 20 74 68 65 0a 20 20 6c  ted from the.  l
3c20: 69 62 72 61 72 79 2e 20 41 74 74 65 6d 70 74 69  ibrary. Attempti
3c30: 6e 67 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  ng to execute an
3c40: 20 5b 45 58 50 4c 41 49 4e 5d 20 73 74 61 74 65   [EXPLAIN] state
3c50: 6d 65 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20  ment will cause 
3c60: 61 20 70 61 72 73 65 0a 20 20 65 72 72 6f 72 2e  a parse.  error.
3c70: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
3c80: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
3c90: 46 4c 41 47 5f 50 52 41 47 4d 41 53 7d 20 7b 0a  FLAG_PRAGMAS} {.
3ca0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
3cb0: 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  its support for 
3cc0: 61 20 73 75 62 73 65 74 20 6f 66 20 5b 50 52 41  a subset of [PRA
3cd0: 47 4d 41 5d 20 63 6f 6d 6d 61 6e 64 73 20 74 68  GMA] commands th
3ce0: 61 74 0a 20 20 71 75 65 72 79 20 61 6e 64 20 73  at.  query and s
3cf0: 65 74 20 62 6f 6f 6c 65 61 6e 20 70 72 6f 70 65  et boolean prope
3d00: 72 74 69 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rties..}..COMPIL
3d10: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
3d20: 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50  _OMIT_FLOATING_P
3d30: 4f 49 4e 54 7d 20 7b 0a 20 20 54 68 69 73 20 6f  OINT} {.  This o
3d40: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
3d50: 20 6f 6d 69 74 20 66 6c 6f 61 74 69 6e 67 2d 70   omit floating-p
3d60: 6f 69 6e 74 20 6e 75 6d 62 65 72 20 73 75 70 70  oint number supp
3d70: 6f 72 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ort from the SQL
3d80: 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 57  ite.  library. W
3d90: 68 65 6e 20 73 70 65 63 69 66 69 65 64 2c 20 73  hen specified, s
3da0: 70 65 63 69 66 79 69 6e 67 20 61 20 66 6c 6f 61  pecifying a floa
3db0: 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
3dc0: 72 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20 0a  r as a literal .
3dd0: 20 20 28 69 2e 65 2e 20 22 31 2e 30 31 22 29 20    (i.e. "1.01") 
3de0: 72 65 73 75 6c 74 73 20 69 6e 20 61 20 70 61 72  results in a par
3df0: 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 3c 70 3e  se error...  <p>
3e00: 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 74  In the future, t
3e10: 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 61  his option may a
3e20: 6c 73 6f 20 64 69 73 61 62 6c 65 20 6f 74 68 65  lso disable othe
3e30: 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  r floating point
3e40: 20 0a 20 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74   .  functionalit
3e50: 79 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74  y, for example t
3e60: 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75  he [sqlite3_resu
3e70: 6c 74 5f 64 6f 75 62 6c 65 28 29 5d 2c 20 0a 20  lt_double()], . 
3e80: 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64   [sqlite3_bind_d
3e90: 6f 75 62 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74  ouble()], [sqlit
3ea0: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
3eb0: 29 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65  )] and.  [sqlite
3ec0: 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
3ed0: 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 73  )] API functions
3ee0: 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 43 4f 4d 50  ..  </p>.}..COMP
3ef0: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
3f00: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
3f10: 4b 45 59 7d 20 7b 0a 20 20 49 66 20 74 68 69 73  KEY} {.  If this
3f20: 20 6f 70 74 69 6f 6e 20 69 73 20 64 65 66 69 6e   option is defin
3f30: 65 64 2c 20 46 4f 52 45 49 47 4e 20 4b 45 59 20  ed, FOREIGN KEY 
3f40: 63 6c 61 75 73 65 73 20 69 6e 20 63 6f 6c 75 6d  clauses in colum
3f50: 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 61  n declarations a
3f60: 72 65 0a 20 20 69 67 6e 6f 72 65 64 2e 0a 7d 0a  re.  ignored..}.
3f70: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
3f80: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54  {SQLITE_OMIT_GET
3f90: 5f 54 41 42 4c 45 7d 20 7b 0a 20 20 54 68 69 73  _TABLE} {.  This
3fa0: 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
3fb0: 75 70 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69  upport for [sqli
3fc0: 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d  te3_get_table()]
3fd0: 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f   and.  [sqlite3_
3fe0: 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20 74 6f  free_table()] to
3ff0: 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   be omitted..}..
4000: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4010: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52  SQLITE_OMIT_INCR
4020: 42 4c 4f 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f  BLOB} {.  This o
4030: 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 75 70  ption causes sup
4040: 70 6f 72 74 20 66 6f 72 20 5b 73 71 6c 69 74 65  port for [sqlite
4050: 33 5f 62 6c 6f 62 20 7c 20 69 6e 63 72 65 6d 65  3_blob | increme
4060: 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 0a 20  ntal BLOB I/O]. 
4070: 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 0a   to be omitted..
4080: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4090: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49  N {SQLITE_OMIT_I
40a0: 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b 7d 20  NTEGRITY_CHECK} 
40b0: 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  {.  This option 
40c0: 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66 6f  omits support fo
40d0: 72 20 74 68 65 20 5b 69 6e 74 65 67 72 69 74 79  r the [integrity
40e0: 5f 63 68 65 63 6b 20 70 72 61 67 6d 61 5d 2e 0a  _check pragma]..
40f0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
4100: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
4110: 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  IKE_OPTIMIZATION
4120: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
4130: 6e 20 64 69 73 61 62 6c 65 20 74 68 65 20 61 62  n disable the ab
4140: 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20  ility of SQLite 
4150: 74 6f 20 75 73 65 20 69 6e 64 69 63 65 73 20 74  to use indices t
4160: 6f 20 68 65 6c 70 0a 20 20 72 65 73 6f 6c 76 65  o help.  resolve
4170: 20 5b 4c 49 4b 45 5d 20 61 6e 64 20 5b 47 4c 4f   [LIKE] and [GLO
4180: 42 5d 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20  B] operators in 
4190: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2e 0a  a WHERE clause..
41a0: 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f  }..COMPILE_OPTIO
41b0: 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  N {SQLITE_OMIT_L
41c0: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 7d 20 7b  OAD_EXTENSION} {
41d0: 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f  .  This option o
41e0: 6d 69 74 73 20 74 68 65 20 65 6e 74 69 72 65 20  mits the entire 
41f0: 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e  extension loadin
4200: 67 20 6d 65 63 68 61 6e 69 73 6d 20 66 72 6f 6d  g mechanism from
4210: 0a 20 20 53 51 4c 69 74 65 2c 20 69 6e 63 6c 75  .  SQLite, inclu
4220: 64 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e  ding [sqlite3_en
4230: 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  able_load_extens
4240: 69 6f 6e 28 29 5d 20 61 6e 64 0a 20 20 5b 73 71  ion()] and.  [sq
4250: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
4260: 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63  sion()] interfac
4270: 65 73 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f  es..}..COMPILE_O
4280: 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d  PTION {SQLITE_OM
4290: 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 7d 20 7b 0a  IT_LOCALTIME} {.
42a0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d    This option om
42b0: 69 74 73 20 74 68 65 20 22 6c 6f 63 61 6c 74 69  its the "localti
42c0: 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f  me" modifier fro
42d0: 6d 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74  m the date and t
42e0: 69 6d 65 0a 20 20 66 75 6e 63 74 69 6f 6e 73 2e  ime.  functions.
42f0: 20 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73    This option is
4300: 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75   sometimes usefu
4310: 6c 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f  l when trying to
4320: 20 63 6f 6d 70 69 6c 65 0a 20 20 74 68 65 20 64   compile.  the d
4330: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e  ate and time fun
4340: 63 74 69 6f 6e 73 20 6f 6e 20 61 20 70 6c 61 74  ctions on a plat
4350: 66 6f 72 6d 20 74 68 61 74 20 64 6f 65 73 20 6e  form that does n
4360: 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65 0a 20  ot support the. 
4370: 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 63 61   concept of loca
4380: 6c 20 74 69 6d 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  l time..}..COMPI
4390: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
43a0: 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 7d  E_OMIT_MEMORYDB}
43b0: 20 7b 0a 20 20 57 68 65 6e 20 74 68 69 73 20 69   {.  When this i
43c0: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 6c  s defined, the l
43d0: 69 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20  ibrary does not 
43e0: 72 65 73 70 65 63 74 20 74 68 65 20 73 70 65 63  respect the spec
43f0: 69 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 6e  ial database.  n
4400: 61 6d 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 28  ame ":memory:" (
4410: 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 74 6f  normally used to
4420: 20 63 72 65 61 74 65 20 61 6e 20 69 6e 2d 6d 65   create an in-me
4430: 6d 6f 72 79 20 64 61 74 61 62 61 73 65 29 2e 20  mory database). 
4440: 49 66 20 0a 20 20 22 3a 6d 65 6d 6f 72 79 3a 22  If .  ":memory:"
4450: 20 69 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73   is passed to [s
4460: 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
4470: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28  [sqlite3_open16(
4480: 29 5d 2c 20 6f 72 0a 20 20 5b 73 71 6c 69 74 65  )], or.  [sqlite
4490: 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 20  3_open_v2()], a 
44a0: 66 69 6c 65 20 77 69 74 68 20 74 68 69 73 20 6e  file with this n
44b0: 61 6d 65 20 77 69 6c 6c 20 62 65 20 0a 20 20 6f  ame will be .  o
44c0: 70 65 6e 65 64 20 6f 72 20 63 72 65 61 74 65 64  pened or created
44d0: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
44e0: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
44f0: 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  _OR_OPTIMIZATION
4500: 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f  } {.  This optio
4510: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 61  n disables the a
4520: 62 69 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65  bility of SQLite
4530: 20 74 6f 20 75 73 65 20 61 6e 20 69 6e 64 65 78   to use an index
4540: 20 74 6f 67 65 74 68 65 72 0a 20 20 77 69 74 68   together.  with
4550: 20 74 65 72 6d 73 20 6f 66 20 61 20 57 48 45 52   terms of a WHER
4560: 45 20 63 6c 61 75 73 65 20 63 6f 6e 6e 65 63 74  E clause connect
4570: 65 64 20 62 79 20 74 68 65 20 4f 52 20 6f 70 65  ed by the OR ope
4580: 72 61 74 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c  rator..}..COMPIL
4590: 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54 45  E_OPTION {SQLITE
45a0: 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47  _OMIT_PAGER_PRAG
45b0: 4d 41 53 7d 20 7b 0a 20 20 44 65 66 69 6e 69 6e  MAS} {.  Definin
45c0: 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d  g this option om
45d0: 69 74 73 20 70 72 61 67 6d 61 73 20 72 65 6c 61  its pragmas rela
45e0: 74 65 64 20 74 6f 20 74 68 65 20 70 61 67 65 72  ted to the pager
45f0: 20 73 75 62 73 79 73 74 65 6d 20 66 72 6f 6d 20   subsystem from 
4600: 0a 20 20 74 68 65 20 62 75 69 6c 64 2e 0a 7d 0a  .  the build..}.
4610: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
4620: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41  {SQLITE_OMIT_PRA
4630: 47 4d 41 7d 20 7b 0a 20 20 54 68 69 73 20 6f 70  GMA} {.  This op
4640: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
4650: 6f 6d 69 74 20 74 68 65 20 5b 50 52 41 47 4d 41  omit the [PRAGMA
4660: 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 66 72 6f 6d  ] command.  from
4670: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f   the library. No
4680: 74 65 20 74 68 61 74 20 69 74 20 69 73 20 75 73  te that it is us
4690: 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 74  eful to define t
46a0: 68 65 20 6d 61 63 72 6f 73 20 74 68 61 74 20 6f  he macros that o
46b0: 6d 69 74 0a 20 20 73 70 65 63 69 66 69 63 20 70  mit.  specific p
46c0: 72 61 67 6d 61 73 20 69 6e 20 61 64 64 69 74 69  ragmas in additi
46d0: 6f 6e 20 74 6f 20 74 68 69 73 2c 20 61 73 20 74  on to this, as t
46e0: 68 65 79 20 6d 61 79 20 61 6c 73 6f 20 72 65 6d  hey may also rem
46f0: 6f 76 65 20 73 75 70 70 6f 72 74 69 6e 67 20 63  ove supporting c
4700: 6f 64 65 0a 20 20 69 6e 20 6f 74 68 65 72 20 73  ode.  in other s
4710: 75 62 2d 73 79 73 74 65 6d 73 2e 20 54 68 69 73  ub-systems. This
4720: 20 6d 61 63 72 6f 20 72 65 6d 6f 76 65 73 20 74   macro removes t
4730: 68 65 20 5b 50 52 41 47 4d 41 5d 20 63 6f 6d 6d  he [PRAGMA] comm
4740: 61 6e 64 20 6f 6e 6c 79 2e 0a 7d 0a 0a 43 4f 4d  and only..}..COM
4750: 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c  PILE_OPTION {SQL
4760: 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53  ITE_OMIT_PROGRES
4770: 53 5f 43 41 4c 4c 42 41 43 4b 7d 20 7b 0a 20 20  S_CALLBACK} {.  
4780: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20  This option may 
4790: 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 6d  be defined to om
47a0: 69 74 20 74 68 65 20 63 61 70 61 62 69 6c 69 74  it the capabilit
47b0: 79 20 74 6f 20 69 73 73 75 65 20 22 70 72 6f 67  y to issue "prog
47c0: 72 65 73 73 22 20 0a 20 20 63 61 6c 6c 62 61 63  ress" .  callbac
47d0: 6b 73 20 64 75 72 69 6e 67 20 6c 6f 6e 67 2d 72  ks during long-r
47e0: 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65  unning SQL state
47f0: 6d 65 6e 74 73 2e 20 54 68 65 20 0a 20 20 5b 73  ments. The .  [s
4800: 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
4810: 68 61 6e 64 6c 65 72 28 29 5d 0a 20 20 41 50 49  handler()].  API
4820: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74   function is not
4830: 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20   present in the 
4840: 6c 69 62 72 61 72 79 2e 0a 7d 0a 0a 43 4f 4d 50  library..}..COMP
4850: 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49  ILE_OPTION {SQLI
4860: 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c  TE_OMIT_QUICKBAL
4870: 41 4e 43 45 7d 20 7b 0a 20 20 54 68 69 73 20 6f  ANCE} {.  This o
4880: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 61 6e 20 61  ption omits an a
4890: 6c 74 65 72 6e 61 74 69 76 65 2c 20 66 61 73 74  lternative, fast
48a0: 65 72 20 42 2d 54 72 65 65 20 62 61 6c 61 6e 63  er B-Tree balanc
48b0: 69 6e 67 20 72 6f 75 74 69 6e 65 2e 0a 20 20 55  ing routine..  U
48c0: 73 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e  sing this option
48d0: 20 6d 61 6b 65 73 20 53 51 4c 69 74 65 20 73 6c   makes SQLite sl
48e0: 69 67 68 74 6c 79 20 73 6d 61 6c 6c 65 72 20 61  ightly smaller a
48f0: 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
4900: 0a 20 20 6d 61 6b 69 6e 67 20 69 74 20 72 75 6e  .  making it run
4910: 20 73 6c 69 67 68 74 6c 79 20 73 6c 6f 77 65 72   slightly slower
4920: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
4930: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
4940: 5f 52 45 49 4e 44 45 58 7d 20 7b 0a 20 20 57 68  _REINDEX} {.  Wh
4950: 65 6e 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  en this option i
4960: 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 5b  s defined, the [
4970: 52 45 49 4e 44 45 58 5d 0a 20 20 63 6f 6d 6d 61  REINDEX].  comma
4980: 6e 64 20 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64  nd is not includ
4990: 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72  ed in the librar
49a0: 79 2e 0a 20 20 45 78 65 63 75 74 69 6e 67 20 61  y..  Executing a
49b0: 20 5b 52 45 49 4e 44 45 58 5d 20 73 74 61 74 65   [REINDEX] state
49c0: 6d 65 6e 74 20 63 61 75 73 65 73 20 0a 20 20 61  ment causes .  a
49d0: 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 7d 0a   parse error..}.
49e0: 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20  .COMPILE_OPTION 
49f0: 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  {SQLITE_OMIT_SCH
4a00: 45 4d 41 5f 50 52 41 47 4d 41 53 7d 20 7b 0a 20  EMA_PRAGMAS} {. 
4a10: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
4a20: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72 61 67  ption omits prag
4a30: 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69 6e 67  mas for querying
4a40: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
4a50: 68 65 6d 61 20 66 72 6f 6d 20 0a 20 20 74 68 65  hema from .  the
4a60: 20 62 75 69 6c 64 2e 0a 7d 0a 0a 43 4f 4d 50 49   build..}..COMPI
4a70: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
4a80: 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45  E_OMIT_SCHEMA_VE
4a90: 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 7d 20 7b  RSION_PRAGMAS} {
4aa0: 0a 20 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73  .  Defining this
4ab0: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 70 72   option omits pr
4ac0: 61 67 6d 61 73 20 66 6f 72 20 71 75 65 72 79 69  agmas for queryi
4ad0: 6e 67 20 61 6e 64 20 6d 6f 64 69 66 79 69 6e 67  ng and modifying
4ae0: 20 74 68 65 20 0a 20 20 64 61 74 61 62 61 73 65   the .  database
4af0: 20 73 63 68 65 6d 61 20 76 65 72 73 69 6f 6e 20   schema version 
4b00: 61 6e 64 20 75 73 65 72 20 76 65 72 73 69 6f 6e  and user version
4b10: 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 2e   from the build.
4b20: 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 74   Specifically, t
4b30: 68 65 20 0a 20 20 5b 73 63 68 65 6d 61 5f 76 65  he .  [schema_ve
4b40: 72 73 69 6f 6e 5d 20 61 6e 64 20 5b 75 73 65 72  rsion] and [user
4b50: 5f 76 65 72 73 69 6f 6e 5d 20 50 52 41 47 4d 41  _version] PRAGMA
4b60: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  s are omitted..}
4b70: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4b80: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48   {SQLITE_OMIT_SH
4b90: 41 52 45 44 5f 43 41 43 48 45 7d 20 7b 0a 20 20  ARED_CACHE} {.  
4ba0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 62 75 69 6c  This option buil
4bb0: 64 73 20 53 51 4c 69 74 65 20 77 69 74 68 6f 75  ds SQLite withou
4bc0: 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 68  t support for sh
4bd0: 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 2e  ared-cache mode.
4be0: 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  .  The [sqlite3_
4bf0: 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61  enable_shared_ca
4c00: 63 68 65 28 29 5d 20 69 73 20 6f 6d 69 74 74 65  che()] is omitte
4c10: 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 66  d along with a f
4c20: 61 69 72 0a 20 20 61 6d 6f 75 6e 74 20 6f 66 20  air.  amount of 
4c30: 6c 6f 67 69 63 20 77 69 74 68 69 6e 20 74 68 65  logic within the
4c40: 20 42 2d 54 72 65 65 20 73 75 62 73 79 73 74 65   B-Tree subsyste
4c50: 6d 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  m associated wit
4c60: 68 20 73 68 61 72 65 64 0a 20 20 63 61 63 68 65  h shared.  cache
4c70: 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 7d 0a 0a   management..}..
4c80: 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e 20 7b  COMPILE_OPTION {
4c90: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51  SQLITE_OMIT_SUBQ
4ca0: 55 45 52 59 7d 20 7b 0a 20 20 49 66 20 64 65 66  UERY} {.  If def
4cb0: 69 6e 65 64 2c 20 73 75 70 70 6f 72 74 20 66 6f  ined, support fo
4cc0: 72 20 73 75 62 2d 73 65 6c 65 63 74 73 20 61 6e  r sub-selects an
4cd0: 64 20 74 68 65 20 49 4e 28 29 20 6f 70 65 72 61  d the IN() opera
4ce0: 74 6f 72 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  tor are omitted.
4cf0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
4d00: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
4d10: 54 43 4c 5f 56 41 52 49 41 42 4c 45 7d 20 7b 0a  TCL_VARIABLE} {.
4d20: 20 20 49 66 20 74 68 69 73 20 6d 61 63 72 6f 20    If this macro 
4d30: 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 6e  is defined, then
4d40: 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 24 3c   the special "$<
4d50: 76 61 72 69 61 62 6c 65 2d 6e 61 6d 65 3e 22 20  variable-name>" 
4d60: 73 79 6e 74 61 78 0a 20 20 75 73 65 64 20 74 6f  syntax.  used to
4d70: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
4d80: 69 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c 65  ind SQL variable
4d90: 73 20 74 6f 20 54 43 4c 20 76 61 72 69 61 62 6c  s to TCL variabl
4da0: 65 73 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d  es is omitted..}
4db0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
4dc0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45   {SQLITE_OMIT_TE
4dd0: 4d 50 44 42 7d 20 7b 0a 20 20 54 68 69 73 20 6f  MPDB} {.  This o
4de0: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
4df0: 6f 72 74 20 66 6f 72 20 54 45 4d 50 20 6f 72 20  ort for TEMP or 
4e00: 54 45 4d 50 4f 52 41 52 59 20 74 61 62 6c 65 73  TEMPORARY tables
4e10: 2e 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54  ..}..COMPILE_OPT
4e20: 49 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54  ION {SQLITE_OMIT
4e30: 5f 54 52 41 43 45 7d 20 7b 0a 20 20 54 68 69 73  _TRACE} {.  This
4e40: 20 6f 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75   option omits su
4e50: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 73  pport for the [s
4e60: 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
4e70: 5d 20 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33  ] and.  [sqlite3
4e80: 5f 74 72 61 63 65 28 29 5d 20 69 6e 74 65 72 66  _trace()] interf
4e90: 61 63 65 73 20 61 6e 64 20 74 68 65 69 72 20 61  aces and their a
4ea0: 73 73 6f 63 69 61 74 65 64 20 6c 6f 67 69 63 2e  ssociated logic.
4eb0: 0a 7d 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49  .}..COMPILE_OPTI
4ec0: 4f 4e 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ON {SQLITE_OMIT_
4ed0: 54 52 49 47 47 45 52 7d 20 7b 0a 20 20 44 65 66  TRIGGER} {.  Def
4ee0: 69 6e 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f  ining this optio
4ef0: 6e 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20  n omits support 
4f00: 66 6f 72 20 56 49 45 57 20 6f 62 6a 65 63 74 73  for VIEW objects
4f10: 2e 20 4e 65 69 74 68 65 72 20 74 68 65 20 0a 20  . Neither the . 
4f20: 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52   [CREATE TRIGGER
4f30: 5d 20 6f 72 20 5b 44 52 4f 50 20 54 52 49 47 47  ] or [DROP TRIGG
4f40: 45 52 5d 0a 20 20 63 6f 6d 6d 61 6e 64 73 20 61  ER].  commands a
4f50: 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20  re available in 
4f60: 74 68 69 73 20 63 61 73 65 2c 20 61 6e 64 20 61  this case, and a
4f70: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 65 78 65  ttempting to exe
4f80: 63 75 74 65 0a 20 20 65 69 74 68 65 72 20 77 69  cute.  either wi
4f90: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 70  ll result in a p
4fa0: 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a 20 20 57  arse error...  W
4fb0: 41 52 4e 49 4e 47 3a 20 49 66 20 74 68 69 73 20  ARNING: If this 
4fc0: 6d 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64  macro is defined
4fd0: 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65  , it will not be
4fe0: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6f 70 65   possible to ope
4ff0: 6e 20 61 20 64 61 74 61 62 61 73 65 0a 20 20 66  n a database.  f
5000: 6f 72 20 77 68 69 63 68 20 74 68 65 20 73 63 68  or which the sch
5010: 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20 54 52 49  ema contains TRI
5020: 47 47 45 52 20 6f 62 6a 65 63 74 73 2e 20 0a 7d  GGER objects. .}
5030: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
5040: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54   {SQLITE_OMIT_UT
5050: 46 31 36 7d 20 7b 0a 20 20 54 68 69 73 20 6d 61  F16} {.  This ma
5060: 63 72 6f 20 69 73 20 75 73 65 64 20 74 6f 20 6f  cro is used to o
5070: 6d 69 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20  mit support for 
5080: 55 54 46 31 36 20 74 65 78 74 20 65 6e 63 6f 64  UTF16 text encod
5090: 69 6e 67 2e 20 57 68 65 6e 20 74 68 69 73 20 69  ing. When this i
50a0: 73 0a 20 20 64 65 66 69 6e 65 64 20 61 6c 6c 20  s.  defined all 
50b0: 41 50 49 20 66 75 6e 63 74 69 6f 6e 73 20 74 68  API functions th
50c0: 61 74 20 72 65 74 75 72 6e 20 6f 72 20 61 63 63  at return or acc
50d0: 65 70 74 20 55 54 46 31 36 20 65 6e 63 6f 64 65  ept UTF16 encode
50e0: 64 20 74 65 78 74 20 61 72 65 0a 20 20 75 6e 61  d text are.  una
50f0: 76 61 69 6c 61 62 6c 65 2e 20 54 68 65 73 65 20  vailable. These 
5100: 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65  functions can be
5110: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 74   identified by t
5120: 68 65 20 66 61 63 74 20 74 68 61 74 20 74 68 65  he fact that the
5130: 79 20 65 6e 64 0a 20 20 77 69 74 68 20 27 31 36  y end.  with '16
5140: 27 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 5b  ', for example [
5150: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
5160: 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63  6()], [sqlite3_c
5170: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 5d 20  olumn_text16()] 
5180: 61 6e 64 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62  and.  [sqlite3_b
5190: 69 6e 64 5f 74 65 78 74 31 36 28 29 5d 2e 0a 7d  ind_text16()]..}
51a0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
51b0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41   {SQLITE_OMIT_VA
51c0: 43 55 55 4d 7d 20 7b 0a 20 20 57 68 65 6e 20 74  CUUM} {.  When t
51d0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 64 65  his option is de
51e0: 66 69 6e 65 64 2c 20 74 68 65 20 5b 56 41 43 55  fined, the [VACU
51f0: 55 4d 5d 0a 20 20 63 6f 6d 6d 61 6e 64 20 69 73  UM].  command is
5200: 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e   not included in
5210: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 20 20   the library..  
5220: 45 78 65 63 75 74 69 6e 67 20 61 20 5b 56 41 43  Executing a [VAC
5230: 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74 20 63  UUM] statement c
5240: 61 75 73 65 73 20 0a 20 20 61 20 70 61 72 73 65  auses .  a parse
5250: 20 65 72 72 6f 72 2e 0a 7d 0a 0a 43 4f 4d 50 49   error..}..COMPI
5260: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5270: 45 5f 4f 4d 49 54 5f 56 49 45 57 7d 20 7b 0a 20  E_OMIT_VIEW} {. 
5280: 20 44 65 66 69 6e 69 6e 67 20 74 68 69 73 20 6f   Defining this o
5290: 70 74 69 6f 6e 20 6f 6d 69 74 73 20 73 75 70 70  ption omits supp
52a0: 6f 72 74 20 66 6f 72 20 56 49 45 57 20 6f 62 6a  ort for VIEW obj
52b0: 65 63 74 73 2e 20 4e 65 69 74 68 65 72 20 74 68  ects. Neither th
52c0: 65 20 0a 20 20 5b 43 52 45 41 54 45 20 56 49 45  e .  [CREATE VIE
52d0: 57 5d 20 6e 6f 72 20 74 68 65 20 5b 44 52 4f 50  W] nor the [DROP
52e0: 20 56 49 45 57 5d 0a 20 20 63 6f 6d 6d 61 6e 64   VIEW].  command
52f0: 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20  s are available 
5300: 69 6e 20 74 68 69 73 20 63 61 73 65 2c 20 61 6e  in this case, an
5310: 64 0a 20 20 61 74 74 65 6d 70 74 69 6e 67 20 74  d.  attempting t
5320: 6f 20 65 78 65 63 75 74 65 20 65 69 74 68 65 72  o execute either
5330: 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20   will result in 
5340: 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a 0a  a parse error...
5350: 20 20 57 41 52 4e 49 4e 47 3a 20 49 66 20 74 68    WARNING: If th
5360: 69 73 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  is macro is defi
5370: 6e 65 64 2c 20 69 74 20 77 69 6c 6c 20 6e 6f 74  ned, it will not
5380: 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20   be possible to 
5390: 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a  open a database.
53a0: 20 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20    for which the 
53b0: 73 63 68 65 6d 61 20 63 6f 6e 74 61 69 6e 73 20  schema contains 
53c0: 56 49 45 57 20 6f 62 6a 65 63 74 73 2e 20 0a 7d  VIEW objects. .}
53d0: 0a 0a 43 4f 4d 50 49 4c 45 5f 4f 50 54 49 4f 4e  ..COMPILE_OPTION
53e0: 20 7b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49   {SQLITE_OMIT_VI
53f0: 52 54 55 41 4c 54 41 42 4c 45 7d 20 7b 0a 20 20  RTUALTABLE} {.  
5400: 54 68 69 73 20 6f 70 74 69 6f 6e 20 6f 6d 69 74  This option omit
5410: 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68  s support for th
5420: 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 20  e [sqlite3_vtab 
5430: 7c 20 56 69 72 74 75 61 6c 20 54 61 62 6c 65 5d  | Virtual Table]
5440: 0a 20 20 6d 65 63 68 61 6e 69 73 6d 20 69 6e 20  .  mechanism in 
5450: 53 51 4c 69 74 65 2e 0a 7d 0a 0a 43 4f 4d 50 49  SQLite..}..COMPI
5460: 4c 45 5f 4f 50 54 49 4f 4e 20 7b 53 51 4c 49 54  LE_OPTION {SQLIT
5470: 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 7d  E_OMIT_XFER_OPT}
5480: 20 7b 0a 20 20 54 68 69 73 20 6f 70 74 69 6f 6e   {.  This option
5490: 20 6f 6d 69 74 73 20 73 75 70 70 6f 72 74 20 66   omits support f
54a0: 6f 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73  or optimizations
54b0: 20 74 68 61 74 20 68 65 6c 70 20 73 74 61 74 65   that help state
54c0: 6d 65 6e 74 73 0a 20 20 6f 66 20 74 68 65 20 66  ments.  of the f
54d0: 6f 72 6d 20 22 49 4e 53 45 52 54 20 49 4e 54 4f  orm "INSERT INTO
54e0: 20 2e 2e 2e 20 53 45 4c 45 43 54 20 2e 2e 2e 22   ... SELECT ..."
54f0: 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 7d 0a 3c   run faster..}.<
5500: 2f 74 63 6c 3e 0a                                /tcl>.