Documentation Source Text

Hex Artifact Content
Login

Artifact 3febbfbcd4951b83bafa9ac124c30ab4707447c455e5db9896bdf36b40b2ccca:


0000: 3c 74 69 74 6c 65 3e 50 72 61 67 6d 61 20 73 74  <title>Pragma st
0010: 61 74 65 6d 65 6e 74 73 20 73 75 70 70 6f 72 74  atements support
0020: 65 64 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69  ed by SQLite</ti
0030: 74 6c 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 22  tle>.<h1 align="
0040: 63 65 6e 74 65 72 22 3e 50 52 41 47 4d 41 20 53  center">PRAGMA S
0050: 74 61 74 65 6d 65 6e 74 73 3c 2f 68 31 3e 0a 0a  tatements</h1>..
0060: 3c 74 63 6c 3e 0a 70 72 6f 63 20 53 65 63 74 69  <tcl>.proc Secti
0070: 6f 6e 20 7b 6e 61 6d 65 20 7b 6c 61 62 65 6c 20  on {name {label 
0080: 7b 7d 7d 20 7b 6b 65 79 77 6f 72 64 73 20 7b 7d  {}} {keywords {}
0090: 7d 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73 20 22  }} {.  hd_puts "
00a0: 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66 20 7b  \n<hr />".  if {
00b0: 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a 20 20  $label!=""} {.  
00c0: 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 6c    hd_fragment $l
00d0: 61 62 65 6c 0a 20 20 20 20 69 66 20 7b 24 6b 65  abel.    if {$ke
00e0: 79 77 6f 72 64 73 21 3d 22 22 7d 20 7b 0a 20 20  ywords!=""} {.  
00f0: 20 20 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77      eval hd_keyw
0100: 6f 72 64 73 20 24 6b 65 79 77 6f 72 64 73 0a 20  ords $keywords. 
0110: 20 20 20 7d 0a 20 20 7d 0a 20 20 68 64 5f 70 75     }.  }.  hd_pu
0120: 74 73 20 22 3c 68 32 3e 24 6e 61 6d 65 3c 2f 68  ts "<h2>$name</h
0130: 32 3e 5c 6e 22 0a 7d 0a 75 6e 73 65 74 20 2d 6e  2>\n".}.unset -n
0140: 6f 63 6f 6d 70 6c 61 69 6e 20 50 72 61 67 6d 61  ocomplain Pragma
0150: 42 6f 64 79 20 50 72 61 67 6d 61 52 65 66 20 50  Body PragmaRef P
0160: 72 61 67 6d 61 44 75 64 20 50 72 61 67 6d 61 4b  ragmaDud PragmaK
0170: 65 79 73 0a 0a 23 20 45 61 63 68 20 70 72 61 67  eys..# Each prag
0180: 6d 61 20 69 73 20 72 65 63 6f 72 64 65 64 20 62  ma is recorded b
0190: 79 20 69 6e 76 6f 6b 69 6e 67 20 74 68 69 73 20  y invoking this 
01a0: 70 72 6f 63 65 64 75 72 65 2e 0a 70 72 6f 63 20  procedure..proc 
01b0: 50 72 61 67 6d 61 20 7b 6e 61 6d 65 6c 69 73 74  Pragma {namelist
01c0: 20 63 6f 6e 74 65 6e 74 7d 20 7b 0a 20 20 67 6c   content} {.  gl
01d0: 6f 62 61 6c 20 50 72 61 67 6d 61 42 6f 64 79 20  obal PragmaBody 
01e0: 50 72 61 67 6d 61 52 65 66 20 50 72 61 67 6d 61  PragmaRef Pragma
01f0: 4b 65 79 73 0a 20 20 73 65 74 20 6d 61 69 6e 5f  Keys.  set main_
0200: 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20 24 6e 61  name [lindex $na
0210: 6d 65 6c 69 73 74 20 30 5d 0a 20 20 72 65 67 73  melist 0].  regs
0220: 75 62 20 2d 61 6c 6c 20 7b 50 52 41 47 4d 41 20  ub -all {PRAGMA 
0230: 44 42 5c 2e 7d 20 24 63 6f 6e 74 65 6e 74 20 7b  DB\.} $content {
0240: 50 52 41 47 4d 41 20 3c 2f 62 3e 3c 69 3e 73 63  PRAGMA </b><i>sc
0250: 68 65 6d 61 2e 3c 2f 69 3e 3c 62 3e 7d 20 63 6f  hema.</i><b>} co
0260: 6e 74 65 6e 74 0a 20 20 72 65 67 73 75 62 20 2d  ntent.  regsub -
0270: 61 6c 6c 20 7b 3c 77 61 72 6e 69 6e 67 3e 7d 20  all {<warning>} 
0280: 24 63 6f 6e 74 65 6e 74 20 5c 0a 20 20 20 20 20  $content \.     
0290: 20 7b 3c 73 70 61 6e 20 73 74 79 6c 65 3d 27 62   {<span style='b
02a0: 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a  ackground-color:
02b0: 20 23 66 66 66 66 36 30 3b 27 3e 7d 20 63 6f 6e   #ffff60;'>} con
02c0: 74 65 6e 74 0a 20 20 72 65 67 73 75 62 20 2d 61  tent.  regsub -a
02d0: 6c 6c 20 7b 3c 2f 77 61 72 6e 69 6e 67 3e 7d 20  ll {</warning>} 
02e0: 24 63 6f 6e 74 65 6e 74 20 3c 2f 73 70 61 6e 3e  $content </span>
02f0: 20 63 6f 6e 74 65 6e 74 0a 20 20 73 65 74 20 50   content.  set P
0300: 72 61 67 6d 61 42 6f 64 79 28 24 6d 61 69 6e 5f  ragmaBody($main_
0310: 6e 61 6d 65 29 20 24 63 6f 6e 74 65 6e 74 0a 20  name) $content. 
0320: 20 73 65 74 20 50 72 61 67 6d 61 4b 65 79 73 28   set PragmaKeys(
0330: 24 6d 61 69 6e 5f 6e 61 6d 65 29 20 24 6e 61 6d  $main_name) $nam
0340: 65 6c 69 73 74 0a 20 20 66 6f 72 65 61 63 68 20  elist.  foreach 
0350: 78 20 24 6e 61 6d 65 6c 69 73 74 20 7b 0a 20 20  x $namelist {.  
0360: 20 20 73 65 74 20 50 72 61 67 6d 61 52 65 66 28    set PragmaRef(
0370: 24 78 29 20 24 6d 61 69 6e 5f 6e 61 6d 65 0a 20  $x) $main_name. 
0380: 20 7d 0a 7d 0a 70 72 6f 63 20 4c 65 67 61 63 79   }.}.proc Legacy
0390: 44 69 73 63 6c 61 69 6d 65 72 20 7b 7d 20 7b 0a  Disclaimer {} {.
03a0: 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 3c    return {.    <
03b0: 70 20 73 74 79 6c 65 3d 27 62 61 63 6b 67 72 6f  p style='backgro
03c0: 75 6e 64 2d 63 6f 6c 6f 72 3a 20 23 66 66 64 30  und-color: #ffd0
03d0: 64 30 3b 27 3e 0a 20 20 20 20 3c 62 3e 54 68 69  d0;'>.    <b>Thi
03e0: 73 20 70 72 61 67 6d 61 20 69 73 20 64 65 70 72  s pragma is depr
03f0: 65 63 61 74 65 64 3c 2f 62 3e 20 61 6e 64 20 65  ecated</b> and e
0400: 78 69 73 74 73 0a 20 20 20 20 66 6f 72 20 62 61  xists.    for ba
0410: 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62  ckwards compatib
0420: 69 6c 69 74 79 20 6f 6e 6c 79 2e 20 20 4e 65 77  ility only.  New
0430: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20   applications.  
0440: 20 20 73 68 6f 75 6c 64 20 61 76 6f 69 64 20 75    should avoid u
0450: 73 69 6e 67 20 74 68 69 73 20 70 72 61 67 6d 61  sing this pragma
0460: 2e 20 20 4f 6c 64 65 72 20 61 70 70 6c 69 63 61  .  Older applica
0470: 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 64 69 73  tions should dis
0480: 63 6f 6e 74 69 6e 75 65 0a 20 20 20 20 75 73 65  continue.    use
0490: 20 6f 66 20 74 68 69 73 20 70 72 61 67 6d 61 20   of this pragma 
04a0: 61 74 20 74 68 65 20 65 61 72 6c 69 65 73 74 20  at the earliest 
04b0: 6f 70 70 6f 72 74 75 6e 69 74 79 2e 20 20 54 68  opportunity.  Th
04c0: 69 73 20 70 72 61 67 6d 61 20 6d 61 79 20 62 65  is pragma may be
04d0: 20 6f 6d 69 74 74 65 64 0a 20 20 20 20 66 72 6f   omitted.    fro
04e0: 6d 20 74 68 65 20 62 75 69 6c 64 20 77 68 65 6e  m the build when
04f0: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
0500: 6c 65 64 20 75 73 69 6e 67 20 5b 53 51 4c 49 54  led using [SQLIT
0510: 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45  E_OMIT_DEPRECATE
0520: 44 5d 2e 0a 20 20 20 20 3c 2f 70 3e 0a 20 20 7d  D]..    </p>.  }
0530: 0a 7d 0a 70 72 6f 63 20 44 65 62 75 67 44 69 73  .}.proc DebugDis
0540: 63 6c 61 69 6d 65 72 20 7b 7d 20 7b 0a 20 20 72  claimer {} {.  r
0550: 65 74 75 72 6e 20 7b 0a 20 20 20 20 3c 70 20 73  eturn {.    <p s
0560: 74 79 6c 65 3d 27 62 61 63 6b 67 72 6f 75 6e 64  tyle='background
0570: 2d 63 6f 6c 6f 72 3a 20 23 66 30 65 30 66 66 3b  -color: #f0e0ff;
0580: 27 3e 0a 20 20 20 20 54 68 69 73 20 70 72 61 67  '>.    This prag
0590: 6d 61 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66  ma is intended f
05a0: 6f 72 20 75 73 65 20 77 68 65 6e 20 64 65 62 75  or use when debu
05b0: 67 67 69 6e 67 20 53 51 4c 69 74 65 20 69 74 73  gging SQLite its
05c0: 65 6c 66 2e 20 20 49 74 0a 20 20 20 20 69 73 20  elf.  It.    is 
05d0: 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77  only available w
05e0: 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  hen the [SQLITE_
05f0: 44 45 42 55 47 5d 20 63 6f 6d 70 69 6c 65 2d 74  DEBUG] compile-t
0600: 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 20 20 69  ime option.    i
0610: 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 20 20 7d 0a  s used.</p>.  }.
0620: 7d 0a 70 72 6f 63 20 44 61 6e 67 65 72 44 69 73  }.proc DangerDis
0630: 63 6c 61 69 6d 65 72 20 7b 7d 20 7b 0a 20 20 72  claimer {} {.  r
0640: 65 74 75 72 6e 20 7b 0a 20 20 20 20 3c 70 3e 3c  eturn {.    <p><
0650: 73 70 61 6e 20 73 74 79 6c 65 3d 27 62 61 63 6b  span style='back
0660: 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 23 66  ground-color: #f
0670: 66 66 66 36 30 3b 27 3e 0a 20 20 20 20 3c 62 3e  fff60;'>.    <b>
0680: 57 61 72 6e 69 6e 67 3a 3c 2f 62 3e 0a 20 20 20  Warning:</b>.   
0690: 20 4d 69 73 75 73 65 20 6f 66 20 74 68 69 73 20   Misuse of this 
06a0: 70 72 61 67 6d 61 20 63 61 6e 20 72 65 73 75 6c  pragma can resul
06b0: 74 20 69 6e 20 5b 63 66 67 65 72 72 6f 72 73 7c  t in [cfgerrors|
06c0: 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  database corrupt
06d0: 69 6f 6e 5d 2e 0a 20 20 20 20 3c 2f 73 70 61 6e  ion]..    </span
06e0: 3e 3c 2f 70 3e 0a 20 20 7d 0a 7d 0a 70 72 6f 63  ></p>.  }.}.proc
06f0: 20 54 65 73 74 44 69 73 63 6c 61 69 6d 65 72 20   TestDisclaimer 
0700: 7b 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 7b 0a  {} {.  return {.
0710: 20 20 20 20 3c 70 20 73 74 79 6c 65 3d 27 62 61      <p style='ba
0720: 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20  ckground-color: 
0730: 23 66 30 65 30 66 66 3b 27 3e 0a 20 20 20 20 54  #f0e0ff;'>.    T
0740: 68 65 20 69 6e 74 65 6e 64 65 64 20 75 73 65 20  he intended use 
0750: 6f 66 20 74 68 69 73 20 70 72 61 67 6d 61 20 69  of this pragma i
0760: 73 20 6f 6e 6c 79 20 66 6f 72 20 74 65 73 74 69  s only for testi
0770: 6e 67 20 61 6e 64 20 76 61 6c 69 64 61 74 69 6f  ng and validatio
0780: 6e 20 6f 66 0a 20 20 20 20 53 51 4c 69 74 65 2e  n of.    SQLite.
0790: 20 20 54 68 69 73 20 70 72 61 67 6d 61 20 69 73    This pragma is
07a0: 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e   subject to chan
07b0: 67 65 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63  ge without notic
07c0: 65 20 61 6e 64 20 69 73 20 6e 6f 74 0a 20 20 20  e and is not.   
07d0: 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72   recommended for
07e0: 20 75 73 65 20 62 79 20 61 70 70 6c 69 63 61 74   use by applicat
07f0: 69 6f 6e 20 70 72 6f 67 72 61 6d 73 2e 3c 2f 70  ion programs.</p
0800: 3e 0a 20 20 7d 0a 7d 0a 70 72 6f 63 20 45 6e 61  >.  }.}.proc Ena
0810: 62 6c 65 44 69 73 63 6c 61 69 6d 65 72 20 7b 63  bleDisclaimer {c
0820: 6f 70 74 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  opt} {.  return 
0830: 22 5c 0a 20 20 20 20 3c 70 20 73 74 79 6c 65 3d  "\.    <p style=
0840: 27 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f  'background-colo
0850: 72 3a 20 23 66 30 65 30 66 66 3b 27 3e 0a 20 20  r: #f0e0ff;'>.  
0860: 20 20 54 68 69 73 20 70 72 61 67 6d 61 20 69 73    This pragma is
0870: 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
0880: 69 66 20 53 51 4c 69 74 65 20 69 73 20 62 75 69  if SQLite is bui
0890: 6c 74 20 75 73 69 6e 67 20 74 68 65 0a 20 20 20  lt using the.   
08a0: 20 5c 5b 2d 44 24 63 6f 70 74 5c 5d 20 63 6f 6d   \[-D$copt\] com
08b0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
08c0: 2e 0a 20 20 22 0a 7d 0a 23 20 4c 65 67 61 63 79  ..  ".}.# Legacy
08d0: 20 70 72 61 67 6d 61 20 2d 20 64 6f 20 6e 6f 74   pragma - do not
08e0: 20 75 73 65 20 74 68 65 73 65 0a 70 72 6f 63 20   use these.proc 
08f0: 4c 65 67 61 63 79 50 72 61 67 6d 61 20 7b 6e 61  LegacyPragma {na
0900: 6d 65 6c 69 73 74 20 63 6f 6e 74 65 6e 74 7d 20  melist content} 
0910: 7b 0a 20 20 50 72 61 67 6d 61 20 24 6e 61 6d 65  {.  Pragma $name
0920: 6c 69 73 74 20 5b 73 74 72 69 6e 67 20 6d 61 70  list [string map
0930: 20 5b 6c 69 73 74 20 44 49 53 43 4c 41 49 4d 45   [list DISCLAIME
0940: 52 20 5b 4c 65 67 61 63 79 44 69 73 63 6c 61 69  R [LegacyDisclai
0950: 6d 65 72 5d 5d 20 24 63 6f 6e 74 65 6e 74 5d 0a  mer]] $content].
0960: 20 20 67 6c 6f 62 61 6c 20 50 72 61 67 6d 61 4c    global PragmaL
0970: 65 67 61 63 79 0a 20 20 66 6f 72 65 61 63 68 20  egacy.  foreach 
0980: 78 20 24 6e 61 6d 65 6c 69 73 74 20 7b 73 65 74  x $namelist {set
0990: 20 50 72 61 67 6d 61 4c 65 67 61 63 79 28 24 78   PragmaLegacy($x
09a0: 29 20 31 7d 0a 7d 0a 23 20 44 65 62 75 67 67 69  ) 1}.}.# Debuggi
09b0: 6e 67 20 70 72 61 67 6d 61 73 0a 70 72 6f 63 20  ng pragmas.proc 
09c0: 44 65 62 75 67 50 72 61 67 6d 61 20 7b 6e 61 6d  DebugPragma {nam
09d0: 65 6c 69 73 74 20 63 6f 6e 74 65 6e 74 7d 20 7b  elist content} {
09e0: 0a 20 20 50 72 61 67 6d 61 20 24 6e 61 6d 65 6c  .  Pragma $namel
09f0: 69 73 74 20 5b 73 74 72 69 6e 67 20 6d 61 70 20  ist [string map 
0a00: 5b 6c 69 73 74 20 44 49 53 43 4c 41 49 4d 45 52  [list DISCLAIMER
0a10: 20 5b 44 65 62 75 67 44 69 73 63 6c 61 69 6d 65   [DebugDisclaime
0a20: 72 5d 5d 20 24 63 6f 6e 74 65 6e 74 5d 0a 20 20  r]] $content].  
0a30: 67 6c 6f 62 61 6c 20 50 72 61 67 6d 61 44 65 62  global PragmaDeb
0a40: 75 67 0a 20 20 66 6f 72 65 61 63 68 20 78 20 24  ug.  foreach x $
0a50: 6e 61 6d 65 6c 69 73 74 20 7b 73 65 74 20 50 72  namelist {set Pr
0a60: 61 67 6d 61 44 65 62 75 67 28 24 78 29 20 31 7d  agmaDebug($x) 1}
0a70: 0a 7d 0a 23 20 54 65 73 74 69 6e 67 20 70 72 61  .}.# Testing pra
0a80: 67 6d 61 73 0a 70 72 6f 63 20 54 65 73 74 50 72  gmas.proc TestPr
0a90: 61 67 6d 61 20 7b 6e 61 6d 65 6c 69 73 74 20 63  agma {namelist c
0aa0: 6f 6e 74 65 6e 74 7d 20 7b 0a 20 20 50 72 61 67  ontent} {.  Prag
0ab0: 6d 61 20 24 6e 61 6d 65 6c 69 73 74 20 5b 73 74  ma $namelist [st
0ac0: 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 44  ring map [list D
0ad0: 49 53 43 4c 41 49 4d 45 52 20 5b 54 65 73 74 44  ISCLAIMER [TestD
0ae0: 69 73 63 6c 61 69 6d 65 72 5d 5d 20 24 63 6f 6e  isclaimer]] $con
0af0: 74 65 6e 74 5d 0a 20 20 67 6c 6f 62 61 6c 20 50  tent].  global P
0b00: 72 61 67 6d 61 54 65 73 74 0a 20 20 66 6f 72 65  ragmaTest.  fore
0b10: 61 63 68 20 78 20 24 6e 61 6d 65 6c 69 73 74 20  ach x $namelist 
0b20: 7b 73 65 74 20 50 72 61 67 6d 61 54 65 73 74 28  {set PragmaTest(
0b30: 24 78 29 20 31 7d 0a 7d 0a 70 72 6f 63 20 44 61  $x) 1}.}.proc Da
0b40: 6e 67 65 72 6f 75 73 50 72 61 67 6d 61 20 7b 6e  ngerousPragma {n
0b50: 61 6d 65 6c 69 73 74 20 63 6f 6e 74 65 6e 74 7d  amelist content}
0b60: 20 7b 0a 20 20 50 72 61 67 6d 61 20 24 6e 61 6d   {.  Pragma $nam
0b70: 65 6c 69 73 74 20 5b 73 74 72 69 6e 67 20 6d 61  elist [string ma
0b80: 70 20 5b 6c 69 73 74 20 44 49 53 43 4c 41 49 4d  p [list DISCLAIM
0b90: 45 52 20 5b 44 61 6e 67 65 72 44 69 73 63 6c 61  ER [DangerDiscla
0ba0: 69 6d 65 72 5d 5d 20 24 63 6f 6e 74 65 6e 74 5d  imer]] $content]
0bb0: 0a 20 20 67 6c 6f 62 61 6c 20 50 72 61 67 6d 61  .  global Pragma
0bc0: 54 65 73 74 0a 20 20 66 6f 72 65 61 63 68 20 78  Test.  foreach x
0bd0: 20 24 6e 61 6d 65 6c 69 73 74 20 7b 73 65 74 20   $namelist {set 
0be0: 50 72 61 67 6d 61 54 65 73 74 28 24 78 29 20 31  PragmaTest($x) 1
0bf0: 7d 0a 7d 0a 70 72 6f 63 20 45 6e 61 62 6c 65 50  }.}.proc EnableP
0c00: 72 61 67 6d 61 20 7b 6e 61 6d 65 6c 69 73 74 20  ragma {namelist 
0c10: 63 6f 6e 74 65 6e 74 20 63 6f 70 74 7d 20 7b 0a  content copt} {.
0c20: 20 20 50 72 61 67 6d 61 20 24 6e 61 6d 65 6c 69    Pragma $nameli
0c30: 73 74 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b  st [string map [
0c40: 6c 69 73 74 20 44 49 53 43 4c 41 49 4d 45 52 20  list DISCLAIMER 
0c50: 5b 45 6e 61 62 6c 65 44 69 73 63 6c 61 69 6d 65  [EnableDisclaime
0c60: 72 20 24 63 6f 70 74 5d 5d 20 24 63 6f 6e 74 65  r $copt]] $conte
0c70: 6e 74 5d 0a 20 20 67 6c 6f 62 61 6c 20 50 72 61  nt].  global Pra
0c80: 67 6d 61 45 6e 61 62 6c 65 0a 20 20 66 6f 72 65  gmaEnable.  fore
0c90: 61 63 68 20 78 20 24 6e 61 6d 65 6c 69 73 74 20  ach x $namelist 
0ca0: 7b 73 65 74 20 50 72 61 67 6d 61 45 6e 61 62 6c  {set PragmaEnabl
0cb0: 65 28 24 78 29 20 31 7d 0a 7d 0a 0a 3c 2f 74 63  e($x) 1}.}..</tc
0cc0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 50 52 41 47 4d  l>..<p>The PRAGM
0cd0: 41 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 61  A statement is a
0ce0: 6e 20 53 51 4c 20 65 78 74 65 6e 73 69 6f 6e 20  n SQL extension 
0cf0: 73 70 65 63 69 66 69 63 20 74 6f 20 53 51 4c 69  specific to SQLi
0d00: 74 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 0a  te and used to .
0d10: 6d 6f 64 69 66 79 20 74 68 65 20 6f 70 65 72 61  modify the opera
0d20: 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  tion of the SQLi
0d30: 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74 6f  te library or to
0d40: 20 71 75 65 72 79 20 74 68 65 20 53 51 4c 69 74   query the SQLit
0d50: 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 0a 69  e library for .i
0d60: 6e 74 65 72 6e 61 6c 20 28 6e 6f 6e 2d 74 61 62  nternal (non-tab
0d70: 6c 65 29 20 64 61 74 61 2e 20 54 68 65 20 50 52  le) data. The PR
0d80: 41 47 4d 41 20 73 74 61 74 65 6d 65 6e 74 20 69  AGMA statement i
0d90: 73 20 69 73 73 75 65 64 20 75 73 69 6e 67 20 74  s issued using t
0da0: 68 65 20 73 61 6d 65 0a 69 6e 74 65 72 66 61 63  he same.interfac
0db0: 65 20 61 73 20 6f 74 68 65 72 20 53 51 4c 69 74  e as other SQLit
0dc0: 65 20 63 6f 6d 6d 61 6e 64 73 20 28 65 2e 67 2e  e commands (e.g.
0dd0: 20 5b 53 45 4c 45 43 54 5d 2c 20 5b 49 4e 53 45   [SELECT], [INSE
0de0: 52 54 5d 29 20 62 75 74 20 69 73 0a 64 69 66 66  RT]) but is.diff
0df0: 65 72 65 6e 74 20 69 6e 20 74 68 65 20 66 6f 6c  erent in the fol
0e00: 6c 6f 77 69 6e 67 20 69 6d 70 6f 72 74 61 6e 74  lowing important
0e10: 20 72 65 73 70 65 63 74 73 3a 0a 3c 2f 70 3e 0a   respects:.</p>.
0e20: 3c 75 6c 3e 0a 3c 6c 69 3e 53 70 65 63 69 66 69  <ul>.<li>Specifi
0e30: 63 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d 65  c pragma stateme
0e40: 6e 74 73 20 6d 61 79 20 62 65 20 72 65 6d 6f 76  nts may be remov
0e50: 65 64 20 61 6e 64 20 6f 74 68 65 72 73 20 61 64  ed and others ad
0e60: 64 65 64 20 69 6e 20 66 75 74 75 72 65 0a 20 20  ded in future.  
0e70: 20 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51    releases of SQ
0e80: 4c 69 74 65 2e 20 54 68 65 72 65 20 69 73 20 6e  Lite. There is n
0e90: 6f 20 67 75 61 72 61 6e 74 65 65 20 6f 66 20 62  o guarantee of b
0ea0: 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
0eb0: 62 69 6c 69 74 79 2e 0a 3c 6c 69 3e 5e 4e 6f 20  bility..<li>^No 
0ec0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 20 61  error messages a
0ed0: 72 65 20 67 65 6e 65 72 61 74 65 64 20 69 66 20  re generated if 
0ee0: 61 6e 20 75 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d  an unknown pragm
0ef0: 61 20 69 73 20 69 73 73 75 65 64 2e 0a 20 20 20  a is issued..   
0f00: 20 55 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 73   Unknown pragmas
0f10: 20 61 72 65 20 73 69 6d 70 6c 79 20 69 67 6e 6f   are simply igno
0f20: 72 65 64 2e 20 54 68 69 73 20 6d 65 61 6e 73 20  red. This means 
0f30: 69 66 20 74 68 65 72 65 20 69 73 20 61 20 74 79  if there is a ty
0f40: 70 6f 20 69 6e 20 0a 20 20 20 20 61 20 70 72 61  po in .    a pra
0f50: 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 20 74 68  gma statement th
0f60: 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e  e library does n
0f70: 6f 74 20 69 6e 66 6f 72 6d 20 74 68 65 20 75 73  ot inform the us
0f80: 65 72 20 6f 66 20 74 68 65 20 66 61 63 74 2e 0a  er of the fact..
0f90: 3c 6c 69 3e 5e 53 6f 6d 65 20 70 72 61 67 6d 61  <li>^Some pragma
0fa0: 73 20 74 61 6b 65 20 65 66 66 65 63 74 20 64 75  s take effect du
0fb0: 72 69 6e 67 20 74 68 65 20 53 51 4c 20 63 6f 6d  ring the SQL com
0fc0: 70 69 6c 61 74 69 6f 6e 20 73 74 61 67 65 2c 20  pilation stage, 
0fd0: 6e 6f 74 20 74 68 65 0a 20 20 20 20 65 78 65 63  not the.    exec
0fe0: 75 74 69 6f 6e 20 73 74 61 67 65 2e 20 54 68 69  ution stage. Thi
0ff0: 73 20 6d 65 61 6e 73 20 69 66 20 75 73 69 6e 67  s means if using
1000: 20 74 68 65 20 43 2d 6c 61 6e 67 75 61 67 65 20   the C-language 
1010: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
1020: 28 29 5d 2c 20 0a 20 20 20 20 5b 73 71 6c 69 74  ()], .    [sqlit
1030: 65 33 5f 73 74 65 70 28 29 5d 2c 20 5b 73 71 6c  e3_step()], [sql
1040: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d  ite3_finalize()]
1050: 20 41 50 49 20 28 6f 72 20 73 69 6d 69 6c 61 72   API (or similar
1060: 20 69 6e 20 61 20 77 72 61 70 70 65 72 20 0a 20   in a wrapper . 
1070: 20 20 20 69 6e 74 65 72 66 61 63 65 29 2c 20 74     interface), t
1080: 68 65 20 70 72 61 67 6d 61 20 6d 61 79 20 72 75  he pragma may ru
1090: 6e 20 64 75 72 69 6e 67 20 74 68 65 20 5b 73 71  n during the [sq
10a0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d  lite3_prepare()]
10b0: 20 63 61 6c 6c 2c 0a 20 20 20 20 6e 6f 74 20 64   call,.    not d
10c0: 75 72 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  uring the [sqlit
10d0: 65 33 5f 73 74 65 70 28 29 5d 20 63 61 6c 6c 20  e3_step()] call 
10e0: 61 73 20 6e 6f 72 6d 61 6c 20 53 51 4c 20 73 74  as normal SQL st
10f0: 61 74 65 6d 65 6e 74 73 20 64 6f 2e 0a 20 20 20  atements do..   
1100: 20 5e 4f 72 20 74 68 65 20 70 72 61 67 6d 61 20   ^Or the pragma 
1110: 6d 69 67 68 74 20 72 75 6e 20 64 75 72 69 6e 67  might run during
1120: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
1130: 6a 75 73 74 20 6c 69 6b 65 20 6e 6f 72 6d 61 6c  just like normal
1140: 0a 20 20 20 20 53 51 4c 20 73 74 61 74 65 6d 65  .    SQL stateme
1150: 6e 74 73 2e 20 20 57 68 65 74 68 65 72 20 6f 72  nts.  Whether or
1160: 20 6e 6f 74 20 74 68 65 20 70 72 61 67 6d 61 20   not the pragma 
1170: 72 75 6e 73 20 64 75 72 69 6e 67 20 73 71 6c 69  runs during sqli
1180: 74 65 33 5f 70 72 65 70 61 72 65 28 29 0a 20 20  te3_prepare().  
1190: 20 20 6f 72 20 73 71 6c 69 74 65 33 5f 73 74 65    or sqlite3_ste
11a0: 70 28 29 20 64 65 70 65 6e 64 73 20 6f 6e 20 74  p() depends on t
11b0: 68 65 20 70 72 61 67 6d 61 20 61 6e 64 20 6f 6e  he pragma and on
11c0: 20 74 68 65 20 73 70 65 63 69 66 69 63 20 72 65   the specific re
11d0: 6c 65 61 73 65 0a 20 20 20 20 6f 66 20 53 51 4c  lease.    of SQL
11e0: 69 74 65 2e 0a 3c 6c 69 3e 54 68 65 20 70 72 61  ite..<li>The pra
11f0: 67 6d 61 20 63 6f 6d 6d 61 6e 64 20 69 73 20 73  gma command is s
1200: 70 65 63 69 66 69 63 20 74 6f 20 53 51 4c 69 74  pecific to SQLit
1210: 65 20 61 6e 64 20 69 73 0a 20 20 20 20 6e 6f 74  e and is.    not
1220: 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68   compatible with
1230: 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 64   any other SQL d
1240: 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 2e 0a  atabase engine..
1250: 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 2d  </ul>..<p>The C-
1260: 6c 61 6e 67 75 61 67 65 20 41 50 49 20 66 6f 72  language API for
1270: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 73   SQLite provides
1280: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   the [SQLITE_FCN
1290: 54 4c 5f 50 52 41 47 4d 41 5d 0a 5b 73 71 6c 69  TL_PRAGMA].[sqli
12a0: 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
12b0: 20 7c 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 5d   | file control]
12c0: 20 77 68 69 63 68 20 67 69 76 65 73 20 5b 56 46   which gives [VF
12d0: 53 5d 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  S] implementatio
12e0: 6e 73 20 74 68 65 0a 6f 70 70 6f 72 74 75 6e 69  ns the.opportuni
12f0: 74 79 20 74 6f 20 61 64 64 20 6e 65 77 20 50 52  ty to add new PR
1300: 41 47 4d 41 20 73 74 61 74 65 6d 65 6e 74 73 20  AGMA statements 
1310: 6f 72 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74  or to override t
1320: 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 0a 62 75  he meaning of.bu
1330: 69 6c 74 2d 69 6e 20 50 52 41 47 4d 41 20 73 74  ilt-in PRAGMA st
1340: 61 74 65 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c  atements.</p>..<
1350: 74 63 6c 3e 0a 53 65 63 74 69 6f 6e 20 7b 50 52  tcl>.Section {PR
1360: 41 47 4d 41 20 63 6f 6d 6d 61 6e 64 20 73 79 6e  AGMA command syn
1370: 74 61 78 7d 20 73 79 6e 74 61 78 20 7b 50 52 41  tax} syntax {PRA
1380: 47 4d 41 7d 0a 0a 52 65 63 75 72 73 69 76 65 42  GMA}..RecursiveB
1390: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 70 72 61  ubbleDiagram pra
13a0: 67 6d 61 2d 73 74 6d 74 20 70 72 61 67 6d 61 2d  gma-stmt pragma-
13b0: 76 61 6c 75 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  value.</tcl>..<p
13c0: 3e 0a 5e 41 20 70 72 61 67 6d 61 20 63 61 6e 20  >.^A pragma can 
13d0: 74 61 6b 65 20 65 69 74 68 65 72 20 7a 65 72 6f  take either zero
13e0: 20 6f 72 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74   or one argument
13f0: 2e 20 20 5e 54 68 65 20 61 72 67 75 6d 65 6e 74  .  ^The argument
1400: 20 69 73 20 6d 61 79 20 62 65 20 65 69 74 68 65   is may be eithe
1410: 72 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73  r.in parentheses
1420: 20 6f 72 20 69 74 20 6d 61 79 20 62 65 20 73 65   or it may be se
1430: 70 61 72 61 74 65 64 20 66 72 6f 6d 20 74 68 65  parated from the
1440: 20 70 72 61 67 6d 61 20 6e 61 6d 65 20 62 79 20   pragma name by 
1450: 61 6e 20 65 71 75 61 6c 20 73 69 67 6e 2e 0a 5e  an equal sign..^
1460: 54 68 65 20 74 77 6f 20 73 79 6e 74 61 78 65 73  The two syntaxes
1470: 20 79 69 65 6c 64 20 69 64 65 6e 74 69 63 61 6c   yield identical
1480: 20 72 65 73 75 6c 74 73 2e 0a 5e 28 49 6e 20 6d   results..^(In m
1490: 61 6e 79 20 70 72 61 67 6d 61 73 2c 20 74 68 65  any pragmas, the
14a0: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 62   argument is a b
14b0: 6f 6f 6c 65 61 6e 2e 20 20 54 68 65 20 62 6f 6f  oolean.  The boo
14c0: 6c 65 61 6e 20 63 61 6e 20 62 65 20 6f 6e 65 20  lean can be one 
14d0: 6f 66 3a 0a 3c 2f 70 3e 0a 0a 3c 63 65 6e 74 65  of:.</p>..<cente
14e0: 72 3e 0a 3c 62 3e 31 20 79 65 73 20 74 72 75 65  r>.<b>1 yes true
14f0: 20 6f 6e 3c 62 72 3e 30 20 6e 6f 20 66 61 6c 73   on<br>0 no fals
1500: 65 20 6f 66 66 3c 2f 62 3e 0a 3c 2f 63 65 6e 74  e off</b>.</cent
1510: 65 72 3e 29 5e 0a 0a 3c 70 3e 5e 4b 65 79 77 6f  er>)^..<p>^Keywo
1520: 72 64 20 61 72 67 75 6d 65 6e 74 73 20 63 61 6e  rd arguments can
1530: 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 61 70 70 65   optionally appe
1540: 61 72 20 69 6e 20 71 75 6f 74 65 73 2e 20 20 0a  ar in quotes.  .
1550: 28 45 78 61 6d 70 6c 65 3a 20 20 3c 74 74 3e 27  (Example:  <tt>'
1560: 79 65 73 27 20 26 23 39 31 3b 46 41 4c 53 45 26  yes' &#91;FALSE&
1570: 23 39 33 3b 3c 2f 74 74 3e 2e 29 20 53 6f 6d 65  #93;</tt>.) Some
1580: 20 70 72 61 67 6d 61 73 0a 74 61 6b 65 73 20 61   pragmas.takes a
1590: 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20   string literal 
15a0: 61 73 20 74 68 65 69 72 20 61 72 67 75 6d 65 6e  as their argumen
15b0: 74 2e 20 20 57 68 65 6e 20 70 72 61 67 6d 61 20  t.  When pragma 
15c0: 74 61 6b 65 73 20 61 20 6b 65 79 77 6f 72 64 0a  takes a keyword.
15d0: 61 72 67 75 6d 65 6e 74 2c 20 69 74 20 77 69 6c  argument, it wil
15e0: 6c 20 75 73 75 61 6c 6c 79 20 61 6c 73 6f 20 74  l usually also t
15f0: 61 6b 65 20 61 20 6e 75 6d 65 72 69 63 20 65 71  ake a numeric eq
1600: 75 69 76 61 6c 65 6e 74 20 61 73 20 77 65 6c 6c  uivalent as well
1610: 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 22  ..For example, "
1620: 30 22 20 61 6e 64 20 22 6e 6f 22 20 6d 65 61 6e  0" and "no" mean
1630: 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 2c   the same thing,
1640: 20 61 73 20 64 6f 65 73 20 22 31 22 20 61 6e 64   as does "1" and
1650: 20 22 79 65 73 22 2e 0a 57 68 65 6e 20 71 75 65   "yes"..When que
1660: 72 79 69 6e 67 20 74 68 65 20 76 61 6c 75 65 20  rying the value 
1670: 6f 66 20 61 20 73 65 74 74 69 6e 67 2c 20 6d 61  of a setting, ma
1680: 6e 79 20 70 72 61 67 6d 61 73 20 72 65 74 75 72  ny pragmas retur
1690: 6e 20 74 68 65 20 6e 75 6d 62 65 72 0a 72 61 74  n the number.rat
16a0: 68 65 72 20 74 68 61 6e 20 74 68 65 20 6b 65 79  her than the key
16b0: 77 6f 72 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41  word.</p>..<p>^A
16c0: 20 70 72 61 67 6d 61 20 6d 61 79 20 68 61 76 65   pragma may have
16d0: 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 3c 79 79   an optional <yy
16e0: 74 65 72 6d 3e 73 63 68 65 6d 61 2d 6e 61 6d 65  term>schema-name
16f0: 3c 2f 79 79 74 65 72 6d 3e 0a 62 65 66 6f 72 65  </yyterm>.before
1700: 20 74 68 65 20 70 72 61 67 6d 61 20 6e 61 6d 65   the pragma name
1710: 2e 0a 5e 54 68 65 20 3c 79 79 74 65 72 6d 3e 73  ..^The <yyterm>s
1720: 63 68 65 6d 61 2d 6e 61 6d 65 3c 2f 79 79 74 65  chema-name</yyte
1730: 72 6d 3e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  rm> is the name 
1740: 6f 66 20 61 6e 20 5b 41 54 54 41 43 48 5d 2d 65  of an [ATTACH]-e
1750: 64 20 64 61 74 61 62 61 73 65 20 0a 6f 72 20 22  d database .or "
1760: 6d 61 69 6e 22 20 6f 72 20 22 74 65 6d 70 22 20  main" or "temp" 
1770: 66 6f 72 20 74 68 65 20 6d 61 69 6e 20 61 6e 64  for the main and
1780: 20 74 68 65 20 54 45 4d 50 20 64 61 74 61 62 61   the TEMP databa
1790: 73 65 73 2e 20 20 5e 49 66 20 74 68 65 20 6f 70  ses.  ^If the op
17a0: 74 69 6f 6e 61 6c 0a 73 63 68 65 6d 61 20 6e 61  tional.schema na
17b0: 6d 65 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 22  me is omitted, "
17c0: 6d 61 69 6e 22 20 69 73 20 61 73 73 75 6d 65 64  main" is assumed
17d0: 2e 20 20 5e 49 6e 20 73 6f 6d 65 20 70 72 61 67  .  ^In some prag
17e0: 6d 61 73 2c 20 74 68 65 20 73 63 68 65 6d 61 0a  mas, the schema.
17f0: 6e 61 6d 65 20 69 73 20 6d 65 61 6e 69 6e 67 6c  name is meaningl
1800: 65 73 73 20 61 6e 64 20 69 73 20 73 69 6d 70 6c  ess and is simpl
1810: 79 20 69 67 6e 6f 72 65 64 2e 20 20 49 6e 20 74  y ignored.  In t
1820: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
1830: 20 62 65 6c 6f 77 2c 0a 70 72 61 67 6d 61 73 20   below,.pragmas 
1840: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 73 63  for which the sc
1850: 68 65 6d 61 20 6e 61 6d 65 20 69 73 20 6d 65 61  hema name is mea
1860: 6e 69 6e 67 66 75 6c 20 61 72 65 20 73 68 6f 77  ningful are show
1870: 6e 20 77 69 74 68 20 61 0a 22 3c 69 3e 73 63 68  n with a."<i>sch
1880: 65 6d 61 2e 3c 2f 69 3e 22 20 70 72 65 66 69 78  ema.</i>" prefix
1890: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 53 65 63  .</p>..<tcl>.Sec
18a0: 74 69 6f 6e 20 7b 50 52 41 47 4d 41 20 66 75 6e  tion {PRAGMA fun
18b0: 63 74 69 6f 6e 73 7d 20 70 72 61 67 66 75 6e 63  ctions} pragfunc
18c0: 20 7b 7b 50 52 41 47 4d 41 20 66 75 6e 63 74 69   {{PRAGMA functi
18d0: 6f 6e 73 7d 20 7b 50 52 41 47 4d 41 20 66 75 6e  ons} {PRAGMA fun
18e0: 63 74 69 6f 6e 7d 7d 0a 3c 2f 74 63 6c 3e 0a 0a  ction}}.</tcl>..
18f0: 3c 70 3e 0a 50 52 41 47 4d 41 73 20 74 68 61 74  <p>.PRAGMAs that
1900: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 73 20   return results 
1910: 61 6e 64 20 74 68 61 74 20 68 61 76 65 20 6e 6f  and that have no
1920: 20 73 69 64 65 2d 65 66 66 65 63 74 73 20 63 61   side-effects ca
1930: 6e 20 62 65 20 0a 61 63 63 65 73 73 65 64 20 66  n be .accessed f
1940: 72 6f 6d 20 6f 72 64 69 6e 61 72 79 20 5b 53 45  rom ordinary [SE
1950: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
1960: 20 61 73 20 5b 74 61 62 6c 65 2d 76 61 6c 75 65   as [table-value
1970: 64 20 66 75 6e 63 74 69 6f 6e 73 5d 2e 0a 46 6f  d functions]..Fo
1980: 72 20 65 61 63 68 20 70 61 72 74 69 63 69 70 61  r each participa
1990: 74 69 6e 67 20 50 52 41 47 4d 41 2c 20 74 68 65  ting PRAGMA, the
19a0: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74   corresponding t
19b0: 61 62 6c 65 2d 76 61 6c 75 65 64 20 66 75 6e 63  able-valued func
19c0: 74 69 6f 6e 0a 68 61 73 20 74 68 65 20 73 61 6d  tion.has the sam
19d0: 65 20 6e 61 6d 65 20 61 73 20 74 68 65 20 50 52  e name as the PR
19e0: 41 47 4d 41 20 77 69 74 68 20 61 20 37 2d 63 68  AGMA with a 7-ch
19f0: 61 72 61 63 74 65 72 20 22 70 72 61 67 6d 61 5f  aracter "pragma_
1a00: 22 20 70 72 65 66 69 78 2e 0a 54 68 65 20 50 52  " prefix..The PR
1a10: 41 47 4d 41 20 61 72 67 75 6d 65 6e 74 20 61 6e  AGMA argument an
1a20: 64 20 73 63 68 65 6d 61 2c 20 69 66 20 61 6e 79  d schema, if any
1a30: 2c 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  , are passed as 
1a40: 61 72 67 75 6d 65 6e 74 73 20 74 6f 0a 74 68 65  arguments to.the
1a50: 20 74 61 62 6c 65 2d 76 61 6c 75 65 64 20 66 75   table-valued fu
1a60: 6e 63 74 69 6f 6e 2e 0a 0a 3c 70 3e 46 6f 72 20  nction...<p>For 
1a70: 65 78 61 6d 70 6c 65 2c 20 69 6e 66 6f 72 6d 61  example, informa
1a80: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63  tion about the c
1a90: 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64  olumns in an ind
1aa0: 65 78 20 63 61 6e 20 62 65 0a 72 65 61 64 20 75  ex can be.read u
1ab0: 73 69 6e 67 20 74 68 65 20 5b 69 6e 64 65 78 5f  sing the [index_
1ac0: 69 6e 66 6f 20 70 72 61 67 6d 61 5d 20 61 73 20  info pragma] as 
1ad0: 66 6f 6c 6c 6f 77 73 3a 0a 0a 3c 62 6c 6f 63 6b  follows:..<block
1ae0: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 50 52 41 47  quote><pre>.PRAG
1af0: 4d 41 20 69 6e 64 65 78 5f 69 6e 66 6f 28 27 69  MA index_info('i
1b00: 64 78 35 32 27 29 3b 0a 3c 2f 70 72 65 3e 3c 2f  dx52');.</pre></
1b10: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
1b20: 4f 72 2c 20 74 68 65 20 73 61 6d 65 20 63 6f 6e  Or, the same con
1b30: 74 65 6e 74 20 63 61 6e 20 62 65 20 72 65 61 64  tent can be read
1b40: 20 75 73 69 6e 67 3a 0a 0a 3c 62 6c 6f 63 6b 71   using:..<blockq
1b50: 75 6f 74 65 3e 3c 70 72 65 3e 0a 53 45 4c 45 43  uote><pre>.SELEC
1b60: 54 20 2a 20 46 52 4f 4d 20 70 72 61 67 6d 61 5f  T * FROM pragma_
1b70: 69 6e 64 65 78 5f 69 6e 66 6f 28 27 69 64 78 35  index_info('idx5
1b80: 32 27 29 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  2');.</pre></blo
1b90: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65  ckquote>..<p>The
1ba0: 20 61 64 76 61 6e 74 61 67 65 20 6f 66 20 74 68   advantage of th
1bb0: 65 20 74 61 62 6c 65 2d 76 61 6c 75 65 64 20 66  e table-valued f
1bc0: 75 6e 63 74 69 6f 6e 20 66 6f 72 6d 61 74 20 69  unction format i
1bd0: 73 20 74 68 61 74 20 74 68 65 20 71 75 65 72 79  s that the query
1be0: 0a 63 61 6e 20 72 65 74 75 72 6e 20 6a 75 73 74  .can return just
1bf0: 20 61 20 73 75 62 73 65 74 20 6f 66 20 74 68 65   a subset of the
1c00: 20 50 52 41 47 4d 41 20 63 6f 6c 75 6d 6e 73 2c   PRAGMA columns,
1c10: 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 61 20 57   can include a W
1c20: 48 45 52 45 20 63 6c 61 75 73 65 2c 0a 63 61 6e  HERE clause,.can
1c30: 20 75 73 65 20 61 67 67 72 65 67 61 74 65 20 66   use aggregate f
1c40: 75 6e 63 74 69 6f 6e 73 2c 20 61 6e 64 20 74 68  unctions, and th
1c50: 65 20 74 61 62 6c 65 2d 76 61 6c 75 65 64 20 66  e table-valued f
1c60: 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 6a  unction can be j
1c70: 75 73 74 0a 6f 6e 65 20 6f 66 20 73 65 76 65 72  ust.one of sever
1c80: 61 6c 20 64 61 74 61 20 73 6f 75 72 63 65 73 20  al data sources 
1c90: 69 6e 20 61 20 6a 6f 69 6e 2e 0a 46 6f 72 20 65  in a join..For e
1ca0: 78 61 6d 70 6c 65 2c 20 74 6f 20 67 65 74 20 61  xample, to get a
1cb0: 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 69 6e 64   list of all ind
1cc0: 65 78 65 64 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  exed columns in 
1cd0: 61 20 73 63 68 65 6d 61 2c 20 6f 6e 65 0a 63 6f  a schema, one.co
1ce0: 75 6c 64 20 71 75 65 72 79 3a 0a 0a 3c 62 6c 6f  uld query:..<blo
1cf0: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 53 45  ckquote><pre>.SE
1d00: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 6d 2e  LECT DISTINCT m.
1d10: 6e 61 6d 65 20 7c 7c 20 27 2e 27 20 7c 7c 20 69  name || '.' || i
1d20: 69 2e 6e 61 6d 65 20 41 53 20 27 69 6e 64 65 78  i.name AS 'index
1d30: 65 64 2d 63 6f 6c 75 6d 6e 73 27 0a 20 20 46 52  ed-columns'.  FR
1d40: 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  OM sqlite_master
1d50: 20 41 53 20 6d 2c 0a 20 20 20 20 20 20 20 70 72   AS m,.       pr
1d60: 61 67 6d 61 5f 69 6e 64 65 78 5f 6c 69 73 74 28  agma_index_list(
1d70: 6d 2e 6e 61 6d 65 29 20 41 53 20 69 6c 2c 0a 20  m.name) AS il,. 
1d80: 20 20 20 20 20 20 70 72 61 67 6d 61 5f 69 6e 64        pragma_ind
1d90: 65 78 5f 69 6e 66 6f 28 69 6c 2e 6e 61 6d 65 29  ex_info(il.name)
1da0: 20 41 53 20 69 69 0a 20 57 48 45 52 45 20 6d 2e   AS ii. WHERE m.
1db0: 74 79 70 65 3d 27 74 61 62 6c 65 27 0a 20 4f 52  type='table'. OR
1dc0: 44 45 52 20 42 59 20 31 3b 0a 3c 2f 70 72 65 3e  DER BY 1;.</pre>
1dd0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
1de0: 70 3e 0a 41 64 64 69 74 69 6f 6e 61 6c 20 6e 6f  p>.Additional no
1df0: 74 65 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70  tes:.<ul>.<li><p
1e00: 3e 0a 54 61 62 6c 65 2d 76 61 6c 75 65 64 20 66  >.Table-valued f
1e10: 75 6e 63 74 69 6f 6e 73 20 65 78 69 73 74 20 6f  unctions exist o
1e20: 6e 6c 79 20 66 6f 72 20 62 75 69 6c 74 2d 69 6e  nly for built-in
1e30: 20 50 52 41 47 4d 41 73 2c 20 6e 6f 74 20 66 6f   PRAGMAs, not fo
1e40: 72 20 50 52 41 47 4d 41 73 0a 64 65 66 69 6e 65  r PRAGMAs.define
1e50: 64 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c  d using the [SQL
1e60: 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41  ITE_FCNTL_PRAGMA
1e70: 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 2e 0a  ] file control..
1e80: 3c 6c 69 3e 3c 70 3e 0a 54 61 62 6c 65 2d 76 61  <li><p>.Table-va
1e90: 6c 75 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 65  lued functions e
1ea0: 78 69 73 74 20 6f 6e 6c 79 20 66 6f 72 20 50 52  xist only for PR
1eb0: 41 47 4d 41 73 20 74 68 61 74 20 72 65 74 75 72  AGMAs that retur
1ec0: 6e 20 72 65 73 75 6c 74 73 20 61 6e 64 0a 74 68  n results and.th
1ed0: 61 74 20 68 61 76 65 20 6e 6f 20 73 69 64 65 2d  at have no side-
1ee0: 65 66 66 65 63 74 73 2e 0a 3c 6c 69 3e 3c 70 3e  effects..<li><p>
1ef0: 0a 54 68 69 73 20 66 65 61 74 75 72 65 20 63 6f  .This feature co
1f00: 75 6c 64 20 62 65 20 75 73 65 64 20 74 6f 20 69  uld be used to i
1f10: 6d 70 6c 65 6d 65 6e 74 0a 5b 68 74 74 70 73 3a  mplement.[https:
1f20: 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
1f30: 72 67 2f 77 69 6b 69 2f 49 6e 66 6f 72 6d 61 74  rg/wiki/Informat
1f40: 69 6f 6e 5f 73 63 68 65 6d 61 20 7c 20 69 6e 66  ion_schema | inf
1f50: 6f 72 6d 61 74 69 6f 6e 20 73 63 68 65 6d 61 5d  ormation schema]
1f60: 0a 62 79 20 66 69 72 73 74 20 63 72 65 61 74 69  .by first creati
1f70: 6e 67 20 61 20 73 65 70 61 72 61 74 65 20 73 63  ng a separate sc
1f80: 68 65 6d 61 20 75 73 69 6e 67 0a 3c 62 6c 6f 63  hema using.<bloc
1f90: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 5b 41 54  kquote><pre>.[AT
1fa0: 54 41 43 48 5d 20 27 3a 6d 65 6d 6f 72 79 3a 27  TACH] ':memory:'
1fb0: 20 41 53 20 27 69 6e 66 6f 72 6d 61 74 69 6f 6e   AS 'information
1fc0: 5f 73 63 68 65 6d 61 27 3b 0a 3c 2f 70 72 65 3e  _schema';.</pre>
1fd0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 54 68  </blockquote>.Th
1fe0: 65 6e 20 63 72 65 61 74 69 6e 67 0a 5b 56 49 45  en creating.[VIE
1ff0: 57 7c 56 49 45 57 73 5d 20 69 6e 20 74 68 61 74  W|VIEWs] in that
2000: 20 73 63 68 65 6d 61 20 74 68 61 74 20 69 6d 70   schema that imp
2010: 6c 65 6d 65 6e 74 20 74 68 65 20 6f 66 66 69 63  lement the offic
2020: 69 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ial information 
2030: 73 63 68 65 6d 61 0a 74 61 62 6c 65 73 20 75 73  schema.tables us
2040: 69 6e 67 20 74 61 62 6c 65 2d 76 61 6c 75 65 64  ing table-valued
2050: 20 50 52 41 47 4d 41 20 66 75 6e 63 74 69 6f 6e   PRAGMA function
2060: 73 2e 0a 3c 6c 69 3e 3c 70 3e 0a 54 68 69 73 20  s..<li><p>.This 
2070: 66 65 61 74 75 72 65 20 69 73 20 65 78 70 65 72  feature is exper
2080: 69 6d 65 6e 74 61 6c 20 61 6e 64 20 69 73 20 73  imental and is s
2090: 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
20a0: 2e 20 20 46 75 72 74 68 65 72 20 64 6f 63 75 6d  .  Further docum
20b0: 65 6e 74 61 74 69 6f 6e 0a 77 69 6c 6c 20 62 65  entation.will be
20c0: 63 6f 6d 65 20 61 76 61 69 6c 61 62 6c 65 20 69  come available i
20d0: 66 20 61 6e 64 20 77 68 65 6e 20 74 68 65 20 74  f and when the t
20e0: 61 62 6c 65 2d 76 61 6c 75 65 64 20 66 75 6e 63  able-valued func
20f0: 74 69 6f 6e 73 20 66 6f 72 20 50 52 41 47 4d 41  tions for PRAGMA
2100: 73 0a 66 65 61 74 75 72 65 20 62 65 63 6f 6d 65  s.feature become
2110: 73 20 6f 66 66 69 63 69 61 6c 6c 79 20 73 75 70  s officially sup
2120: 70 6f 72 74 65 64 2e 0a 3c 6c 69 3e 3c 70 3e 0a  ported..<li><p>.
2130: 54 68 65 20 74 61 62 6c 65 2d 76 61 6c 75 65 64  The table-valued
2140: 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 50   functions for P
2150: 52 41 47 4d 41 20 66 65 61 74 75 72 65 20 77 61  RAGMA feature wa
2160: 73 20 61 64 64 65 64 0a 69 6e 20 53 51 4c 69 74  s added.in SQLit
2170: 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 36 2e 30  e version 3.16.0
2180: 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 36 2e 30   ([dateof:3.16.0
2190: 5d 29 2e 20 20 50 72 69 6f 72 20 76 65 72 73 69  ]).  Prior versi
21a0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a 63 61  ons of SQLite.ca
21b0: 6e 6e 6f 74 20 75 73 65 20 74 68 69 73 20 66 65  nnot use this fe
21c0: 61 74 75 72 65 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 74  ature..</ul>..<t
21d0: 63 6c 3e 50 72 61 67 6d 61 20 7b 61 70 70 6c 69  cl>Pragma {appli
21e0: 63 61 74 69 6f 6e 5f 69 64 7d 20 7b 0a 20 20 20  cation_id} {.   
21f0: 20 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 44 42   <p><b>PRAGMA DB
2200: 2e 61 70 70 6c 69 63 61 74 69 6f 6e 5f 69 64 3b  .application_id;
2210: 0a 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41  .     <br>PRAGMA
2220: 20 44 42 2e 61 70 70 6c 69 63 61 74 69 6f 6e 5f   DB.application_
2230: 69 64 20 3d 20 3c 2f 62 3e 3c 69 3e 69 6e 74 65  id = </b><i>inte
2240: 67 65 72 20 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e  ger </i><b>;</b>
2250: 0a 20 20 0a 3c 70 3e 20 20 20 20 5e 54 68 65 20  .  .<p>    ^The 
2260: 61 70 70 6c 69 63 61 74 69 6f 6e 5f 69 64 20 50  application_id P
2270: 52 41 47 4d 41 20 69 73 20 75 73 65 64 20 74 6f  RAGMA is used to
2280: 20 71 75 65 72 79 20 6f 72 20 73 65 74 20 74 68   query or set th
2290: 65 20 33 32 2d 62 69 74 0a 20 20 20 20 20 20 20  e 32-bit.       
22a0: 73 69 67 6e 65 64 20 62 69 67 2d 65 6e 64 69 61  signed big-endia
22b0: 6e 20 22 41 70 70 6c 69 63 61 74 69 6f 6e 20 49  n "Application I
22c0: 44 22 20 69 6e 74 65 67 65 72 20 6c 6f 63 61 74  D" integer locat
22d0: 65 64 20 61 74 20 6f 66 66 73 65 74 0a 20 20 20  ed at offset.   
22e0: 20 20 20 20 36 38 20 69 6e 74 6f 20 74 68 65 20      68 into the 
22f0: 5b 64 61 74 61 62 61 73 65 20 68 65 61 64 65 72  [database header
2300: 5d 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  ].  Applications
2310: 20 74 68 61 74 20 75 73 65 20 53 51 4c 69 74 65   that use SQLite
2320: 20 61 73 20 74 68 65 69 72 0a 20 20 20 20 20 20   as their.      
2330: 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 20 66 69   [application fi
2340: 6c 65 2d 66 6f 72 6d 61 74 5d 20 73 68 6f 75 6c  le-format] shoul
2350: 64 20 73 65 74 20 74 68 65 20 41 70 70 6c 69 63  d set the Applic
2360: 61 74 69 6f 6e 20 49 44 20 69 6e 74 65 67 65 72  ation ID integer
2370: 20 74 6f 0a 20 20 20 20 20 20 20 61 20 75 6e 69   to.       a uni
2380: 71 75 65 20 69 6e 74 65 67 65 72 20 73 6f 20 74  que integer so t
2390: 68 61 74 20 75 74 69 6c 69 74 69 65 73 20 73 75  hat utilities su
23a0: 63 68 20 61 73 20 0a 20 20 20 20 20 20 20 5b 68  ch as .       [h
23b0: 74 74 70 3a 2f 2f 77 77 77 2e 64 61 72 77 69 6e  ttp://www.darwin
23c0: 73 79 73 2e 63 6f 6d 2f 66 69 6c 65 2f 20 7c 20  sys.com/file/ | 
23d0: 66 69 6c 65 28 31 29 5d 20 63 61 6e 20 64 65 74  file(1)] can det
23e0: 65 72 6d 69 6e 65 20 74 68 65 20 73 70 65 63 69  ermine the speci
23f0: 66 69 63 0a 20 20 20 20 20 20 20 66 69 6c 65 20  fic.       file 
2400: 74 79 70 65 20 72 61 74 68 65 72 20 74 68 61 6e  type rather than
2410: 20 6a 75 73 74 20 72 65 70 6f 72 74 69 6e 67 20   just reporting 
2420: 22 53 51 4c 69 74 65 33 20 44 61 74 61 62 61 73  "SQLite3 Databas
2430: 65 22 2e 20 20 41 20 6c 69 73 74 20 6f 66 0a 20  e".  A list of. 
2440: 20 20 20 20 20 20 61 73 73 69 67 6e 65 64 20 61        assigned a
2450: 70 70 6c 69 63 61 74 69 6f 6e 20 49 44 73 20 63  pplication IDs c
2460: 61 6e 20 62 65 20 73 65 65 6e 20 62 79 20 63 6f  an be seen by co
2470: 6e 73 75 6c 74 69 6e 67 20 74 68 65 0a 20 20 20  nsulting the.   
2480: 20 20 20 20 5b 68 74 74 70 3a 2f 2f 77 77 77 2e      [http://www.
2490: 73 71 6c 69 74 65 2e 6f 72 67 2f 73 72 63 2f 61  sqlite.org/src/a
24a0: 72 74 69 66 61 63 74 3f 63 69 3d 74 72 75 6e 6b  rtifact?ci=trunk
24b0: 26 66 69 6c 65 6e 61 6d 65 3d 6d 61 67 69 63 2e  &filename=magic.
24c0: 74 78 74 0a 20 20 20 20 20 20 20 20 7c 6d 61 67  txt.        |mag
24d0: 69 63 2e 74 78 74 5d 20 66 69 6c 65 20 69 6e 20  ic.txt] file in 
24e0: 74 68 65 20 53 51 4c 69 74 65 20 73 6f 75 72 63  the SQLite sourc
24f0: 65 20 72 65 70 6f 73 69 74 6f 72 79 2e 0a 0a 3c  e repository...<
2500: 70 3e 20 20 20 53 65 65 20 61 6c 73 6f 20 74 68  p>   See also th
2510: 65 20 5b 75 73 65 72 5f 76 65 72 73 69 6f 6e 20  e [user_version 
2520: 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 50 72 61 67  pragma]..}..Prag
2530: 6d 61 20 7b 61 75 74 6f 6d 61 74 69 63 5f 69 6e  ma {automatic_in
2540: 64 65 78 7d 20 7b 0a 20 20 20 20 3c 70 3e 5e 28  dex} {.    <p>^(
2550: 3c 62 3e 50 52 41 47 4d 41 20 61 75 74 6f 6d 61  <b>PRAGMA automa
2560: 74 69 63 5f 69 6e 64 65 78 3b 0a 20 20 20 20 20  tic_index;.     
2570: 3c 62 72 3e 50 52 41 47 4d 41 20 61 75 74 6f 6d  <br>PRAGMA autom
2580: 61 74 69 63 5f 69 6e 64 65 78 20 3d 20 3c 2f 62  atic_index = </b
2590: 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e 3c  ><i>boolean</i><
25a0: 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20 20 20  b>;</b></p>..   
25b0: 20 3c 70 3e 51 75 65 72 79 2c 20 73 65 74 2c 20   <p>Query, set, 
25c0: 6f 72 20 63 6c 65 61 72 20 74 68 65 20 5b 61 75  or clear the [au
25d0: 74 6f 6d 61 74 69 63 20 69 6e 64 65 78 69 6e 67  tomatic indexing
25e0: 5d 20 63 61 70 61 62 69 6c 69 74 79 2e 29 5e 0a  ] capability.)^.
25f0: 20 20 20 20 3c 70 3e 5b 41 75 74 6f 6d 61 74 69      <p>[Automati
2600: 63 20 69 6e 64 65 78 69 6e 67 5d 20 69 73 20 65  c indexing] is e
2610: 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  nabled by defaul
2620: 74 20 61 73 20 6f 66 20 0a 20 20 20 20 5b 76 65  t as of .    [ve
2630: 72 73 69 6f 6e 20 33 2e 37 2e 31 37 5d 20 28 5b  rsion 3.7.17] ([
2640: 64 61 74 65 6f 66 3a 33 2e 37 2e 31 37 5d 29 2c  dateof:3.7.17]),
2650: 0a 20 20 20 20 62 75 74 20 74 68 69 73 20 6d 69  .    but this mi
2660: 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 66 75  ght change in fu
2670: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
2680: 20 53 51 4c 69 74 65 2e 0a 7d 0a 0a 50 72 61 67   SQLite..}..Prag
2690: 6d 61 20 7b 61 75 74 6f 5f 76 61 63 75 75 6d 7d  ma {auto_vacuum}
26a0: 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50 52 41   {.    <p><b>PRA
26b0: 47 4d 41 20 44 42 2e 61 75 74 6f 5f 76 61 63 75  GMA DB.auto_vacu
26c0: 75 6d 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20 20  um;<br>.        
26d0: 20 20 50 52 41 47 4d 41 20 44 42 2e 61 75 74 6f    PRAGMA DB.auto
26e0: 5f 76 61 63 75 75 6d 20 3d 20 3c 2f 62 3e 0a 20  _vacuum = </b>. 
26f0: 20 20 20 20 20 20 20 20 20 20 3c 69 3e 30 20 7c            <i>0 |
2700: 20 4e 4f 4e 45 20 7c 20 31 20 7c 20 46 55 4c 4c   NONE | 1 | FULL
2710: 20 7c 20 32 20 7c 20 49 4e 43 52 45 4d 45 4e 54   | 2 | INCREMENT
2720: 41 4c 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  AL</i><b>;</b></
2730: 70 3e 0a 0a 20 20 20 20 3c 70 3e 51 75 65 72 79  p>..    <p>Query
2740: 20 6f 72 20 73 65 74 20 74 68 65 20 61 75 74 6f   or set the auto
2750: 2d 76 61 63 75 75 6d 20 73 74 61 74 75 73 20 69  -vacuum status i
2760: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 3c  n the database.<
2770: 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 65  /p>..    <p>^The
2780: 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67   default setting
2790: 20 66 6f 72 20 61 75 74 6f 2d 76 61 63 75 75 6d   for auto-vacuum
27a0: 20 69 73 20 30 20 6f 72 20 22 6e 6f 6e 65 22 2c   is 0 or "none",
27b0: 0a 20 20 20 20 75 6e 6c 65 73 73 20 74 68 65 20  .    unless the 
27c0: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
27d0: 41 55 54 4f 56 41 43 55 55 4d 5d 20 63 6f 6d 70  AUTOVACUUM] comp
27e0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
27f0: 69 73 20 75 73 65 64 2e 0a 20 20 20 20 5e 54 68  is used..    ^Th
2800: 65 20 22 6e 6f 6e 65 22 20 73 65 74 74 69 6e 67  e "none" setting
2810: 20 6d 65 61 6e 73 20 74 68 61 74 20 61 75 74 6f   means that auto
2820: 2d 76 61 63 75 75 6d 20 69 73 20 64 69 73 61 62  -vacuum is disab
2830: 6c 65 64 2e 0a 20 20 20 20 5e 57 68 65 6e 20 61  led..    ^When a
2840: 75 74 6f 2d 76 61 63 75 75 6d 20 69 73 20 64 69  uto-vacuum is di
2850: 73 61 62 6c 65 64 20 61 6e 64 20 64 61 74 61 20  sabled and data 
2860: 69 73 20 64 65 6c 65 74 65 64 20 64 61 74 61 20  is deleted data 
2870: 66 72 6f 6d 20 61 20 64 61 74 61 62 61 73 65 2c  from a database,
2880: 0a 20 20 20 20 74 68 65 20 64 61 74 61 62 61 73  .    the databas
2890: 65 20 66 69 6c 65 20 72 65 6d 61 69 6e 73 20 74  e file remains t
28a0: 68 65 20 73 61 6d 65 20 73 69 7a 65 2e 20 20 5e  he same size.  ^
28b0: 55 6e 75 73 65 64 20 64 61 74 61 62 61 73 65 20  Unused database 
28c0: 66 69 6c 65 20 0a 20 20 20 20 70 61 67 65 73 20  file .    pages 
28d0: 61 72 65 20 61 64 64 65 64 20 74 6f 20 61 20 22  are added to a "
28e0: 5b 66 72 65 65 6c 69 73 74 5d 22 20 61 6e 64 20  [freelist]" and 
28f0: 72 65 75 73 65 64 20 66 6f 72 20 73 75 62 73 65  reused for subse
2900: 71 75 65 6e 74 20 69 6e 73 65 72 74 73 2e 20 20  quent inserts.  
2910: 53 6f 0a 20 20 20 20 6e 6f 20 64 61 74 61 62 61  So.    no databa
2920: 73 65 20 66 69 6c 65 20 73 70 61 63 65 20 69 73  se file space is
2930: 20 6c 6f 73 74 2e 20 20 48 6f 77 65 76 65 72 2c   lost.  However,
2940: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
2950: 6c 65 20 64 6f 65 73 20 6e 6f 74 0a 20 20 20 20  le does not.    
2960: 73 68 72 69 6e 6b 2e 20 20 5e 49 6e 20 74 68 69  shrink.  ^In thi
2970: 73 20 6d 6f 64 65 20 74 68 65 20 5b 56 41 43 55  s mode the [VACU
2980: 55 4d 5d 0a 20 20 20 20 63 6f 6d 6d 61 6e 64 20  UM].    command 
2990: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72  can be used to r
29a0: 65 62 75 69 6c 64 20 74 68 65 20 65 6e 74 69 72  ebuild the entir
29b0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
29c0: 61 6e 64 0a 20 20 20 20 74 68 75 73 20 72 65 63  and.    thus rec
29d0: 6c 61 69 6d 20 75 6e 75 73 65 64 20 64 69 73 6b  laim unused disk
29e0: 20 73 70 61 63 65 2e 3c 2f 70 3e 0a 0a 20 20 20   space.</p>..   
29f0: 20 3c 70 3e 5e 57 68 65 6e 20 74 68 65 20 61 75   <p>^When the au
2a00: 74 6f 2d 76 61 63 75 75 6d 20 6d 6f 64 65 20 69  to-vacuum mode i
2a10: 73 20 31 20 20 6f 72 20 22 66 75 6c 6c 22 2c 20  s 1  or "full", 
2a20: 74 68 65 20 66 72 65 65 6c 69 73 74 20 70 61 67  the freelist pag
2a30: 65 73 20 61 72 65 0a 20 20 20 20 6d 6f 76 65 64  es are.    moved
2a40: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
2a50: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
2a60: 20 61 6e 64 20 74 68 65 20 64 61 74 61 62 61 73   and the databas
2a70: 65 20 66 69 6c 65 20 69 73 20 74 72 75 6e 63 61  e file is trunca
2a80: 74 65 64 0a 20 20 20 20 74 6f 20 72 65 6d 6f 76  ted.    to remov
2a90: 65 20 74 68 65 20 66 72 65 65 6c 69 73 74 20 70  e the freelist p
2aa0: 61 67 65 73 20 61 74 20 65 76 65 72 79 20 74 72  ages at every tr
2ab0: 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74  ansaction commit
2ac0: 2e 0a 20 20 20 20 5e 28 4e 6f 74 65 2c 20 68 6f  ..    ^(Note, ho
2ad0: 77 65 76 65 72 2c 20 74 68 61 74 20 61 75 74 6f  wever, that auto
2ae0: 2d 76 61 63 75 75 6d 20 6f 6e 6c 79 20 74 72 75  -vacuum only tru
2af0: 6e 63 61 74 65 73 20 74 68 65 20 66 72 65 65 6c  ncates the freel
2b00: 69 73 74 20 70 61 67 65 73 0a 20 20 20 20 66 72  ist pages.    fr
2b10: 6f 6d 20 74 68 65 20 66 69 6c 65 2e 20 20 41 75  om the file.  Au
2b20: 74 6f 2d 76 61 63 75 75 6d 20 64 6f 65 73 20 6e  to-vacuum does n
2b30: 6f 74 20 64 65 66 72 61 67 6d 65 6e 74 20 74 68  ot defragment th
2b40: 65 20 64 61 74 61 62 61 73 65 20 6e 6f 72 0a 20  e database nor. 
2b50: 20 20 20 72 65 70 61 63 6b 20 69 6e 64 69 76 69     repack indivi
2b60: 64 75 61 6c 20 64 61 74 61 62 61 73 65 20 70 61  dual database pa
2b70: 67 65 73 20 74 68 65 20 77 61 79 20 74 68 61 74  ges the way that
2b80: 20 74 68 65 0a 20 20 20 20 5b 56 41 43 55 55 4d   the.    [VACUUM
2b90: 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 2e 29  ] command does.)
2ba0: 5e 20 20 49 6e 20 66 61 63 74 2c 20 62 65 63 61  ^  In fact, beca
2bb0: 75 73 65 0a 20 20 20 20 69 74 20 6d 6f 76 65 73  use.    it moves
2bc0: 20 70 61 67 65 73 20 61 72 6f 75 6e 64 20 77 69   pages around wi
2bd0: 74 68 69 6e 20 74 68 65 20 66 69 6c 65 2c 20 61  thin the file, a
2be0: 75 74 6f 2d 76 61 63 75 75 6d 20 63 61 6e 20 61  uto-vacuum can a
2bf0: 63 74 75 61 6c 6c 79 0a 20 20 20 20 6d 61 6b 65  ctually.    make
2c00: 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 77   fragmentation w
2c10: 6f 72 73 65 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c  orse.</p>..    <
2c20: 70 3e 41 75 74 6f 2d 76 61 63 75 75 6d 69 6e 67  p>Auto-vacuuming
2c30: 20 69 73 20 6f 6e 6c 79 20 70 6f 73 73 69 62 6c   is only possibl
2c40: 65 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73  e if the databas
2c50: 65 20 73 74 6f 72 65 73 20 73 6f 6d 65 0a 20 20  e stores some.  
2c60: 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66    additional inf
2c70: 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 61 6c  ormation that al
2c80: 6c 6f 77 73 20 65 61 63 68 20 64 61 74 61 62 61  lows each databa
2c90: 73 65 20 70 61 67 65 20 74 6f 20 62 65 0a 20 20  se page to be.  
2ca0: 20 20 74 72 61 63 65 64 20 62 61 63 6b 77 61 72    traced backwar
2cb0: 64 73 20 74 6f 20 69 74 73 20 72 65 66 65 72 72  ds to its referr
2cc0: 65 72 2e 20 20 5e 54 68 65 72 65 66 6f 72 65 2c  er.  ^Therefore,
2cd0: 20 61 75 74 6f 2d 76 61 63 75 75 6d 69 6e 67 20   auto-vacuuming 
2ce0: 6d 75 73 74 0a 20 20 20 20 62 65 20 74 75 72 6e  must.    be turn
2cf0: 65 64 20 6f 6e 20 62 65 66 6f 72 65 20 61 6e 79  ed on before any
2d00: 20 74 61 62 6c 65 73 20 61 72 65 20 63 72 65 61   tables are crea
2d10: 74 65 64 2e 20 20 49 74 20 69 73 20 6e 6f 74 20  ted.  It is not 
2d20: 70 6f 73 73 69 62 6c 65 0a 20 20 20 20 74 6f 20  possible.    to 
2d30: 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c  enable or disabl
2d40: 65 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 61 66  e auto-vacuum af
2d50: 74 65 72 20 61 20 74 61 62 6c 65 20 68 61 73 20  ter a table has 
2d60: 62 65 65 6e 20 63 72 65 61 74 65 64 2e 3c 2f 70  been created.</p
2d70: 3e 0a 0a 20 20 20 20 3c 70 3e 5e 57 68 65 6e 20  >..    <p>^When 
2d80: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 75 74  the value of aut
2d90: 6f 2d 76 61 63 75 75 6d 20 69 73 20 32 20 6f 72  o-vacuum is 2 or
2da0: 20 22 69 6e 63 72 65 6d 65 6e 74 61 6c 22 20 74   "incremental" t
2db0: 68 65 6e 20 74 68 65 20 61 64 64 69 74 69 6f 6e  hen the addition
2dc0: 61 6c 0a 20 20 20 20 69 6e 66 6f 72 6d 61 74 69  al.    informati
2dd0: 6f 6e 20 6e 65 65 64 65 64 20 74 6f 20 64 6f 20  on needed to do 
2de0: 61 75 74 6f 2d 76 61 63 75 75 6d 69 6e 67 20 69  auto-vacuuming i
2df0: 73 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  s stored in the 
2e00: 64 61 74 61 62 61 73 65 20 66 69 6c 65 0a 20 20  database file.  
2e10: 20 20 62 75 74 20 61 75 74 6f 2d 76 61 63 75 75    but auto-vacuu
2e20: 6d 69 6e 67 20 64 6f 65 73 20 6e 6f 74 20 6f 63  ming does not oc
2e30: 63 75 72 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  cur automaticall
2e40: 79 20 61 74 20 65 61 63 68 20 63 6f 6d 6d 69 74  y at each commit
2e50: 20 61 73 20 69 74 0a 20 20 20 20 64 6f 65 73 20   as it.    does 
2e60: 77 69 74 68 20 61 75 74 6f 5f 76 61 63 75 75 6d  with auto_vacuum
2e70: 3d 66 75 6c 6c 2e 20 20 5e 49 6e 20 69 6e 63 72  =full.  ^In incr
2e80: 65 6d 65 6e 74 61 6c 20 6d 6f 64 65 2c 20 74 68  emental mode, th
2e90: 65 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 5b  e separate.    [
2ea0: 69 6e 63 72 65 6d 65 6e 74 61 6c 5f 76 61 63 75  incremental_vacu
2eb0: 75 6d 5d 20 70 72 61 67 6d 61 20 6d 75 73 74 0a  um] pragma must.
2ec0: 20 20 20 20 62 65 20 69 6e 76 6f 6b 65 64 20 74      be invoked t
2ed0: 6f 20 63 61 75 73 65 20 74 68 65 20 61 75 74 6f  o cause the auto
2ee0: 2d 76 61 63 75 75 6d 20 74 6f 20 6f 63 63 75 72  -vacuum to occur
2ef0: 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54  .</p>..    <p>^T
2f00: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
2f10: 65 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 63 68  ection can be ch
2f20: 61 6e 67 65 64 20 62 65 74 77 65 65 6e 20 66 75  anged between fu
2f30: 6c 6c 20 61 6e 64 20 69 6e 63 72 65 6d 65 6e 74  ll and increment
2f40: 61 6c 0a 20 20 20 20 61 75 74 6f 76 61 63 75 75  al.    autovacuu
2f50: 6d 20 6d 6f 64 65 20 61 74 20 61 6e 79 20 74 69  m mode at any ti
2f60: 6d 65 2e 20 20 5e 48 6f 77 65 76 65 72 2c 20 63  me.  ^However, c
2f70: 68 61 6e 67 69 6e 67 20 66 72 6f 6d 0a 20 20 20  hanging from.   
2f80: 20 22 6e 6f 6e 65 22 20 74 6f 20 22 66 75 6c 6c   "none" to "full
2f90: 22 20 6f 72 20 22 69 6e 63 72 65 6d 65 6e 74 61  " or "incrementa
2fa0: 6c 22 20 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75  l" can only occu
2fb0: 72 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62  r when the datab
2fc0: 61 73 65 20 0a 20 20 20 20 69 73 20 6e 65 77 20  ase .    is new 
2fd0: 28 6e 6f 20 74 61 62 6c 65 73 0a 20 20 20 20 68  (no tables.    h
2fe0: 61 76 65 20 79 65 74 20 62 65 65 6e 20 63 72 65  ave yet been cre
2ff0: 61 74 65 64 29 20 6f 72 20 62 79 20 72 75 6e 6e  ated) or by runn
3000: 69 6e 67 20 74 68 65 20 5b 56 41 43 55 55 4d 5d  ing the [VACUUM]
3010: 20 63 6f 6d 6d 61 6e 64 2e 20 20 5e 54 6f 0a 20   command.  ^To. 
3020: 20 20 20 63 68 61 6e 67 65 20 61 75 74 6f 2d 76     change auto-v
3030: 61 63 75 75 6d 20 6d 6f 64 65 73 2c 20 66 69 72  acuum modes, fir
3040: 73 74 20 75 73 65 20 74 68 65 20 61 75 74 6f 5f  st use the auto_
3050: 76 61 63 75 75 6d 20 70 72 61 67 6d 61 20 74 6f  vacuum pragma to
3060: 20 73 65 74 0a 20 20 20 20 74 68 65 20 6e 65 77   set.    the new
3070: 20 64 65 73 69 72 65 64 20 6d 6f 64 65 2c 20 74   desired mode, t
3080: 68 65 6e 20 69 6e 76 6f 6b 65 20 74 68 65 20 5b  hen invoke the [
3090: 56 41 43 55 55 4d 5d 20 63 6f 6d 6d 61 6e 64 20  VACUUM] command 
30a0: 74 6f 20 0a 20 20 20 20 72 65 6f 72 67 61 6e 69  to .    reorgani
30b0: 7a 65 20 74 68 65 20 65 6e 74 69 72 65 20 64 61  ze the entire da
30c0: 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20 5e 54  tabase file.  ^T
30d0: 6f 20 63 68 61 6e 67 65 20 66 72 6f 6d 20 22 66  o change from "f
30e0: 75 6c 6c 22 20 6f 72 0a 20 20 20 20 22 69 6e 63  ull" or.    "inc
30f0: 72 65 6d 65 6e 74 61 6c 22 20 62 61 63 6b 20 74  remental" back t
3100: 6f 20 22 6e 6f 6e 65 22 20 61 6c 77 61 79 73 20  o "none" always 
3110: 72 65 71 75 69 72 65 73 20 72 75 6e 6e 69 6e 67  requires running
3120: 20 5b 56 41 43 55 55 4d 5d 20 65 76 65 6e 0a 20   [VACUUM] even. 
3130: 20 20 20 6f 6e 20 61 6e 20 65 6d 70 74 79 20 64     on an empty d
3140: 61 74 61 62 61 73 65 2e 0a 20 20 20 20 3c 2f 70  atabase..    </p
3150: 3e 0a 0a 20 20 20 20 3c 70 3e 5e 57 68 65 6e 20  >..    <p>^When 
3160: 74 68 65 20 61 75 74 6f 5f 76 61 63 75 75 6d 20  the auto_vacuum 
3170: 70 72 61 67 6d 61 20 69 73 20 69 6e 76 6f 6b 65  pragma is invoke
3180: 64 20 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65  d with no argume
3190: 6e 74 73 2c 20 69 74 0a 20 20 20 20 72 65 74 75  nts, it.    retu
31a0: 72 6e 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  rns the current 
31b0: 61 75 74 6f 5f 76 61 63 75 75 6d 20 6d 6f 64 65  auto_vacuum mode
31c0: 2e 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20  .</p>.}..Pragma 
31d0: 62 75 73 79 5f 74 69 6d 65 6f 75 74 20 7b 0a 20  busy_timeout {. 
31e0: 20 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d     <p>^(<b>PRAGM
31f0: 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 3b 0a  A busy_timeout;.
3200: 20 20 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41           <br>PRA
3210: 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74  GMA busy_timeout
3220: 20 3d 20 3c 2f 62 3e 3c 69 3e 6d 69 6c 6c 69 73   = </b><i>millis
3230: 65 63 6f 6e 64 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f  econds</i><b>;</
3240: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75  b></p>.    <p>Qu
3250: 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68  ery or change th
3260: 65 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65  e setting of the
3270: 0a 20 20 20 20 5b 73 71 6c 69 74 65 33 5f 62 75  .    [sqlite3_bu
3280: 73 79 5f 74 69 6d 65 6f 75 74 20 7c 20 62 75 73  sy_timeout | bus
3290: 79 20 74 69 6d 65 6f 75 74 5d 2e 29 5e 0a 20 20  y timeout].)^.  
32a0: 20 20 54 68 69 73 20 70 72 61 67 6d 61 20 69 73    This pragma is
32b0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20   an alternative 
32c0: 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
32d0: 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20  busy_timeout()] 
32e0: 43 2d 6c 61 6e 67 75 61 67 65 0a 20 20 20 20 69  C-language.    i
32f0: 6e 74 65 72 66 61 63 65 20 77 68 69 63 68 20 69  nterface which i
3300: 73 20 6d 61 64 65 20 61 76 61 69 6c 61 62 6c 65  s made available
3310: 20 61 73 20 61 20 70 72 61 67 6d 61 20 66 6f 72   as a pragma for
3320: 20 75 73 65 20 77 69 74 68 20 6c 61 6e 67 75 61   use with langua
3330: 67 65 0a 20 20 20 20 62 69 6e 64 69 6e 67 73 20  ge.    bindings 
3340: 74 68 61 74 20 64 6f 20 6e 6f 74 20 70 72 6f 76  that do not prov
3350: 69 64 65 20 64 69 72 65 63 74 20 61 63 63 65 73  ide direct acces
3360: 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 62 75  s to [sqlite3_bu
3370: 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 2e 0a 0a  sy_timeout()]...
3380: 20 20 20 20 3c 70 3e 45 61 63 68 20 64 61 74 61      <p>Each data
3390: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
33a0: 63 61 6e 20 6f 6e 6c 79 20 68 61 76 65 20 61 20  can only have a 
33b0: 73 69 6e 67 6c 65 0a 20 20 20 20 5b 73 71 6c 69  single.    [sqli
33c0: 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
33d0: 7c 62 75 73 79 20 68 61 6e 64 6c 65 72 5d 2e 20  |busy handler]. 
33e0: 20 54 68 69 73 20 50 52 41 47 4d 41 20 73 65 74   This PRAGMA set
33f0: 73 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c  s the busy handl
3400: 65 72 0a 20 20 20 20 66 6f 72 20 74 68 65 20 70  er.    for the p
3410: 72 6f 63 65 73 73 2c 20 70 6f 73 73 69 62 6c 79  rocess, possibly
3420: 20 6f 76 65 72 77 72 69 74 69 6e 67 20 61 6e 79   overwriting any
3430: 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20   previously set 
3440: 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 7d 0a  busy handler..}.
3450: 0a 50 72 61 67 6d 61 20 63 61 63 68 65 5f 73 70  .Pragma cache_sp
3460: 69 6c 6c 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c  ill {.    <p>^(<
3470: 62 3e 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73  b>PRAGMA cache_s
3480: 70 69 6c 6c 3b 0a 20 20 20 20 20 20 20 20 20 3c  pill;.         <
3490: 62 72 3e 50 52 41 47 4d 41 20 63 61 63 68 65 5f  br>PRAGMA cache_
34a0: 73 70 69 6c 6c 3d 3c 2f 62 3e 3c 69 3e 62 6f 6f  spill=</b><i>boo
34b0: 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 0a 20 20 20  lean</i><b>;.   
34c0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
34d0: 20 44 42 2e 63 61 63 68 65 5f 73 70 69 6c 6c 3d   DB.cache_spill=
34e0: 3c 69 3e 4e 3c 2f 69 3e 3b 3c 2f 62 3e 29 5e 3c  <i>N</i>;</b>)^<
34f0: 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 28 54 68  /p>..    <p>^(Th
3500: 65 20 63 61 63 68 65 5f 73 70 69 6c 6c 20 70 72  e cache_spill pr
3510: 61 67 6d 61 20 65 6e 61 62 6c 65 73 20 6f 72 20  agma enables or 
3520: 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 62 69  disables the abi
3530: 6c 69 74 79 20 6f 66 20 74 68 65 20 70 61 67 65  lity of the page
3540: 72 0a 20 20 20 20 74 6f 20 73 70 69 6c 6c 20 64  r.    to spill d
3550: 69 72 74 79 20 63 61 63 68 65 20 70 61 67 65 73  irty cache pages
3560: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
3570: 20 66 69 6c 65 20 69 6e 20 74 68 65 20 6d 69 64   file in the mid
3580: 64 6c 65 20 6f 66 20 61 20 0a 20 20 20 20 74 72  dle of a .    tr
3590: 61 6e 73 61 63 74 69 6f 6e 2e 29 5e 20 20 5e 28  ansaction.)^  ^(
35a0: 43 61 63 68 65 5f 73 70 69 6c 6c 20 69 73 20 65  Cache_spill is e
35b0: 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  nabled by defaul
35c0: 74 29 5e 20 61 6e 64 20 6d 6f 73 74 20 61 70 70  t)^ and most app
35d0: 6c 69 63 61 74 69 6f 6e 73 0a 20 20 20 20 73 68  lications.    sh
35e0: 6f 75 6c 64 20 6c 65 61 76 65 20 69 74 20 74 68  ould leave it th
35f0: 61 74 20 77 61 79 20 61 73 20 63 61 63 68 65 20  at way as cache 
3600: 73 70 69 6c 6c 69 6e 67 20 69 73 20 75 73 75 61  spilling is usua
3610: 6c 6c 79 20 61 64 76 61 6e 74 61 67 65 6f 75 73  lly advantageous
3620: 2e 0a 20 20 20 20 48 6f 77 65 76 65 72 2c 20 61  ..    However, a
3630: 20 63 61 63 68 65 20 73 70 69 6c 6c 20 68 61 73   cache spill has
3640: 20 74 68 65 20 73 69 64 65 2d 65 66 66 65 63 74   the side-effect
3650: 20 6f 66 20 61 63 71 75 69 72 69 6e 67 20 61 6e   of acquiring an
3660: 0a 20 20 20 20 5b 45 58 43 4c 55 53 49 56 45 20  .    [EXCLUSIVE 
3670: 6c 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74  lock] on the dat
3680: 61 62 61 73 65 20 66 69 6c 65 2e 20 20 48 65 6e  abase file.  Hen
3690: 63 65 2c 20 73 6f 6d 65 20 61 70 70 6c 69 63 61  ce, some applica
36a0: 74 69 6f 6e 73 20 74 68 61 74 0a 20 20 20 20 68  tions that.    h
36b0: 61 76 65 20 6c 61 72 67 65 20 6c 6f 6e 67 2d 72  ave large long-r
36c0: 75 6e 6e 69 6e 67 20 74 72 61 6e 73 61 63 74 69  unning transacti
36d0: 6f 6e 73 20 6d 61 79 20 77 61 6e 74 20 74 6f 20  ons may want to 
36e0: 64 69 73 61 62 6c 65 20 63 61 63 68 65 20 73 70  disable cache sp
36f0: 69 6c 6c 69 6e 67 0a 20 20 20 20 69 6e 20 6f 72  illing.    in or
3700: 64 65 72 20 74 6f 20 70 72 65 76 65 6e 74 20 74  der to prevent t
3710: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 66  he application f
3720: 72 6f 6d 20 61 63 71 75 69 72 69 6e 67 20 61 6e  rom acquiring an
3730: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 0a   exclusive lock.
3740: 20 20 20 20 6f 6e 20 74 68 65 20 64 61 74 61 62      on the datab
3750: 61 73 65 20 75 6e 74 69 6c 20 74 68 65 20 6d 6f  ase until the mo
3760: 6d 65 6e 74 20 74 68 61 74 20 74 68 65 20 74 72  ment that the tr
3770: 61 6e 73 61 63 74 69 6f 6e 20 5b 43 4f 4d 4d 49  ansaction [COMMI
3780: 54 5d 73 2e 0a 20 20 20 20 3c 70 3e 5e 28 54 68  T]s..    <p>^(Th
3790: 65 20 22 50 52 41 47 4d 41 20 63 61 63 68 65 5f  e "PRAGMA cache_
37a0: 73 70 69 6c 6c 3d 3c 69 3e 4e 3c 2f 69 3e 22 20  spill=<i>N</i>" 
37b0: 66 6f 72 6d 20 6f 66 20 74 68 69 73 20 70 72 61  form of this pra
37c0: 67 6d 61 20 73 65 74 73 20 61 20 6d 69 6e 69 6d  gma sets a minim
37d0: 75 6d 0a 20 20 20 20 63 61 63 68 65 20 73 69 7a  um.    cache siz
37e0: 65 20 74 68 72 65 73 68 6f 6c 64 20 72 65 71 75  e threshold requ
37f0: 69 72 65 64 20 66 6f 72 20 73 70 69 6c 6c 69 6e  ired for spillin
3800: 67 20 74 6f 20 6f 63 63 75 72 2e 29 5e 20 5e 28  g to occur.)^ ^(
3810: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61  The number of pa
3820: 67 65 73 0a 20 20 20 20 69 6e 20 63 61 63 68 65  ges.    in cache
3830: 20 6d 75 73 74 20 65 78 63 65 65 64 20 62 6f 74   must exceed bot
3840: 68 20 74 68 65 20 63 61 63 68 65 5f 73 70 69 6c  h the cache_spil
3850: 6c 20 74 68 72 65 73 68 6f 6c 64 20 61 6e 64 20  l threshold and 
3860: 74 68 65 20 6d 61 78 69 6d 75 6d 20 63 61 63 68  the maximum cach
3870: 65 0a 20 20 20 20 73 69 7a 65 20 73 65 74 20 62  e.    size set b
3880: 79 20 74 68 65 20 5b 50 52 41 47 4d 41 20 63 61  y the [PRAGMA ca
3890: 63 68 65 5f 73 69 7a 65 5d 20 73 74 61 74 65 6d  che_size] statem
38a0: 65 6e 74 20 69 6e 20 6f 72 64 65 72 20 66 6f 72  ent in order for
38b0: 20 73 70 69 6c 6c 69 6e 67 20 74 6f 0a 20 20 20   spilling to.   
38c0: 20 6f 63 63 75 72 2e 29 5e 0a 20 20 20 20 3c 70   occur.)^.    <p
38d0: 3e 5e 28 54 68 65 20 22 50 52 41 47 4d 41 20 63  >^(The "PRAGMA c
38e0: 61 63 68 65 5f 73 70 69 6c 6c 3d 3c 69 3e 62 6f  ache_spill=<i>bo
38f0: 6f 6c 65 61 6e 3c 2f 69 3e 22 20 66 6f 72 6d 20  olean</i>" form 
3900: 6f 66 20 74 68 69 73 20 70 72 61 67 6d 61 20 61  of this pragma a
3910: 70 70 6c 69 65 73 0a 20 20 20 20 61 63 72 6f 73  pplies.    acros
3920: 73 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 20  s all databases 
3930: 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20  attached to the 
3940: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
3950: 69 6f 6e 2e 29 5e 20 20 5e 28 42 75 74 20 74 68  ion.)^  ^(But th
3960: 65 0a 20 20 20 20 22 50 52 41 47 4d 41 20 63 61  e.    "PRAGMA ca
3970: 63 68 65 5f 73 70 69 6c 6c 3d 3c 69 3e 4e 3c 2f  che_spill=<i>N</
3980: 69 3e 22 20 66 6f 72 6d 20 6f 66 20 74 68 69 73  i>" form of this
3990: 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 6c 79 20   statement only 
39a0: 61 70 70 6c 69 65 73 20 74 6f 0a 20 20 20 20 74  applies to.    t
39b0: 68 65 20 22 6d 61 69 6e 22 20 73 63 68 65 6d 61  he "main" schema
39c0: 20 6f 72 20 77 68 61 74 65 76 65 72 20 6f 74 68   or whatever oth
39d0: 65 72 20 73 63 68 65 6d 61 20 69 73 20 73 70 65  er schema is spe
39e0: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
39f0: 66 20 74 68 65 0a 20 20 20 20 73 74 61 74 65 6d  f the.    statem
3a00: 65 6e 74 2e 29 5e 0a 7d 0a 0a 50 72 61 67 6d 61  ent.)^.}..Pragma
3a10: 20 63 61 63 68 65 5f 73 69 7a 65 20 7b 0a 20 20   cache_size {.  
3a20: 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41    <p>^(<b>PRAGMA
3a30: 20 44 42 2e 63 61 63 68 65 5f 73 69 7a 65 3b 0a   DB.cache_size;.
3a40: 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d         <br>PRAGM
3a50: 41 20 44 42 2e 63 61 63 68 65 5f 73 69 7a 65 20  A DB.cache_size 
3a60: 3d 20 3c 2f 62 3e 3c 69 3e 70 61 67 65 73 3c 2f  = </b><i>pages</
3a70: 69 3e 3c 62 3e 3b 0a 20 20 20 20 20 20 20 3c 62  i><b>;.       <b
3a80: 72 3e 50 52 41 47 4d 41 20 44 42 2e 63 61 63 68  r>PRAGMA DB.cach
3a90: 65 5f 73 69 7a 65 20 3d 20 2d 3c 2f 62 3e 3c 69  e_size = -</b><i
3aa0: 3e 6b 69 62 69 62 79 74 65 73 3c 2f 69 3e 3c 62  >kibibytes</i><b
3ab0: 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  >;</b></p>.    <
3ac0: 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67  p>Query or chang
3ad0: 65 20 74 68 65 20 73 75 67 67 65 73 74 65 64 20  e the suggested 
3ae0: 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
3af0: 66 20 64 61 74 61 62 61 73 65 20 64 69 73 6b 20  f database disk 
3b00: 70 61 67 65 73 0a 20 20 20 20 74 68 61 74 20 53  pages.    that S
3b10: 51 4c 69 74 65 20 77 69 6c 6c 20 68 6f 6c 64 20  QLite will hold 
3b20: 69 6e 20 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63  in memory at onc
3b30: 65 20 70 65 72 20 6f 70 65 6e 20 64 61 74 61 62  e per open datab
3b40: 61 73 65 20 66 69 6c 65 2e 29 5e 20 20 57 68 65  ase file.)^  Whe
3b50: 74 68 65 72 0a 20 20 20 20 6f 72 20 6e 6f 74 20  ther.    or not 
3b60: 74 68 69 73 20 73 75 67 67 65 73 74 69 6f 6e 20  this suggestion 
3b70: 69 73 20 68 6f 6e 6f 72 65 64 20 69 73 20 61 74  is honored is at
3b80: 20 74 68 65 20 64 69 73 63 72 65 74 69 6f 6e 20   the discretion 
3b90: 6f 66 20 74 68 65 0a 20 20 20 20 5b 73 71 6c 69  of the.    [sqli
3ba0: 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
3bb0: 64 73 32 20 7c 20 41 70 70 6c 69 63 61 74 69 6f  ds2 | Applicatio
3bc0: 6e 20 44 65 66 69 6e 65 64 20 50 61 67 65 20 43  n Defined Page C
3bd0: 61 63 68 65 5d 2e 0a 20 20 20 20 54 68 65 20 64  ache]..    The d
3be0: 65 66 61 75 6c 74 20 70 61 67 65 20 63 61 63 68  efault page cach
3bf0: 65 20 74 68 61 74 20 69 73 20 62 75 69 6c 74 20  e that is built 
3c00: 69 6e 74 6f 20 53 51 4c 69 74 65 20 68 6f 6e 6f  into SQLite hono
3c10: 72 73 20 74 68 65 20 72 65 71 75 65 73 74 2c 0a  rs the request,.
3c20: 20 20 20 20 68 6f 77 65 76 65 72 20 61 6c 74 65      however alte
3c30: 72 6e 61 74 69 76 65 20 61 70 70 6c 69 63 61 74  rnative applicat
3c40: 69 6f 6e 2d 64 65 66 69 6e 65 64 20 70 61 67 65  ion-defined page
3c50: 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74   cache implement
3c60: 61 74 69 6f 6e 73 0a 20 20 20 20 6d 61 79 20 63  ations.    may c
3c70: 68 6f 6f 73 65 20 74 6f 20 69 6e 74 65 72 70 72  hoose to interpr
3c80: 65 74 20 74 68 65 20 73 75 67 67 65 73 74 65 64  et the suggested
3c90: 20 63 61 63 68 65 20 73 69 7a 65 20 69 6e 20 64   cache size in d
3ca0: 69 66 66 65 72 65 6e 74 20 77 61 79 73 0a 20 20  ifferent ways.  
3cb0: 20 20 6f 72 20 74 6f 20 69 67 6e 6f 72 65 20 69    or to ignore i
3cc0: 74 20 61 6c 6c 20 74 6f 67 65 74 68 65 72 2e 0a  t all together..
3cd0: 20 20 20 20 5e 54 68 65 20 64 65 66 61 75 6c 74      ^The default
3ce0: 20 73 75 67 67 65 73 74 65 64 20 63 61 63 68 65   suggested cache
3cf0: 20 73 69 7a 65 20 69 73 20 2d 32 30 30 30 2c 20   size is -2000, 
3d00: 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 65 20  which means the 
3d10: 63 61 63 68 65 20 73 69 7a 65 0a 20 20 20 20 69  cache size.    i
3d20: 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 32 30 34  s limited to 204
3d30: 38 30 30 30 20 62 79 74 65 73 20 6f 66 20 6d 65  8000 bytes of me
3d40: 6d 6f 72 79 2e 0a 20 20 20 20 5e 54 68 65 20 64  mory..    ^The d
3d50: 65 66 61 75 6c 74 20 73 75 67 67 65 73 74 65 64  efault suggested
3d60: 20 63 61 63 68 65 20 73 69 7a 65 20 63 61 6e 20   cache size can 
3d70: 62 65 20 61 6c 74 65 72 65 64 20 75 73 69 6e 67  be altered using
3d80: 20 74 68 65 0a 20 20 20 20 5b 53 51 4c 49 54 45   the.    [SQLITE
3d90: 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53  _DEFAULT_CACHE_S
3da0: 49 5a 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  IZE] compile-tim
3db0: 65 20 6f 70 74 69 6f 6e 73 2e 0a 20 20 20 20 5e  e options..    ^
3dc0: 54 68 65 20 54 45 4d 50 20 64 61 74 61 62 61 73  The TEMP databas
3dd0: 65 20 68 61 73 20 61 20 64 65 66 61 75 6c 74 20  e has a default 
3de0: 73 75 67 67 65 73 74 65 64 20 63 61 63 68 65 20  suggested cache 
3df0: 73 69 7a 65 20 6f 66 20 30 20 70 61 67 65 73 2e  size of 0 pages.
3e00: 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 49 66  </p>..    <p>^If
3e10: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 4e 20   the argument N 
3e20: 69 73 20 70 6f 73 69 74 69 76 65 20 74 68 65 6e  is positive then
3e30: 20 74 68 65 20 73 75 67 67 65 73 74 65 64 20 63   the suggested c
3e40: 61 63 68 65 20 73 69 7a 65 20 69 73 20 73 65 74  ache size is set
3e50: 20 0a 20 20 20 20 74 6f 20 4e 2e 20 5e 49 66 20   .    to N. ^If 
3e60: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 4e 20 69  the argument N i
3e70: 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e  s negative, then
3e80: 20 74 68 65 0a 20 20 20 20 6e 75 6d 62 65 72 20   the.    number 
3e90: 6f 66 20 63 61 63 68 65 20 70 61 67 65 73 20 69  of cache pages i
3ea0: 73 20 61 64 6a 75 73 74 65 64 20 74 6f 20 75 73  s adjusted to us
3eb0: 65 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 20  e approximately 
3ec0: 61 62 73 28 4e 2a 31 30 32 34 29 20 62 79 74 65  abs(N*1024) byte
3ed0: 73 0a 20 20 20 20 6f 66 20 6d 65 6d 6f 72 79 2e  s.    of memory.
3ee0: 0a 20 20 20 20 3c 69 3e 42 61 63 6b 77 61 72 64  .    <i>Backward
3ef0: 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  s compatibility 
3f00: 6e 6f 74 65 3a 3c 2f 69 3e 0a 20 20 20 20 54 68  note:</i>.    Th
3f10: 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 63 61  e behavior of ca
3f20: 63 68 65 5f 73 69 7a 65 20 77 69 74 68 20 61 20  che_size with a 
3f30: 6e 65 67 61 74 69 76 65 20 4e 0a 20 20 20 20 77  negative N.    w
3f40: 61 73 20 64 69 66 66 65 72 65 6e 74 20 69 6e 20  as different in 
3f50: 70 72 69 6f 72 20 74 6f 20 5b 76 65 72 73 69 6f  prior to [versio
3f60: 6e 20 33 2e 37 2e 31 30 5d 20 28 5b 64 61 74 65  n 3.7.10] ([date
3f70: 6f 66 3a 33 2e 37 2e 31 30 5d 29 2e 20 20 49 6e  of:3.7.10]).  In
3f80: 0a 20 20 20 20 76 65 72 73 69 6f 6e 20 33 2e 37  .    version 3.7
3f90: 2e 39 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20  .9 and earlier, 
3fa0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61  the number of pa
3fb0: 67 65 73 20 69 6e 20 74 68 65 20 63 61 63 68 65  ges in the cache
3fc0: 20 77 61 73 20 73 65 74 0a 20 20 20 20 74 6f 20   was set.    to 
3fd0: 74 68 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c  the absolute val
3fe0: 75 65 20 6f 66 20 4e 2e 3c 2f 70 3e 0a 0a 20 20  ue of N.</p>..  
3ff0: 20 20 3c 70 3e 5e 57 68 65 6e 20 79 6f 75 20 63    <p>^When you c
4000: 68 61 6e 67 65 20 74 68 65 20 63 61 63 68 65 20  hange the cache 
4010: 73 69 7a 65 20 75 73 69 6e 67 20 74 68 65 20 63  size using the c
4020: 61 63 68 65 5f 73 69 7a 65 20 70 72 61 67 6d 61  ache_size pragma
4030: 2c 20 74 68 65 0a 20 20 20 20 63 68 61 6e 67 65  , the.    change
4040: 20 6f 6e 6c 79 20 65 6e 64 75 72 65 73 20 66 6f   only endures fo
4050: 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65  r the current se
4060: 73 73 69 6f 6e 2e 20 20 5e 54 68 65 20 63 61 63  ssion.  ^The cac
4070: 68 65 20 73 69 7a 65 20 72 65 76 65 72 74 73 0a  he size reverts.
4080: 20 20 20 20 74 6f 20 74 68 65 20 64 65 66 61 75      to the defau
4090: 6c 74 20 76 61 6c 75 65 20 77 68 65 6e 20 74 68  lt value when th
40a0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
40b0: 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65  osed and reopene
40c0: 64 2e 3c 2f 70 3e 0a 0a 0a 7d 0a 0a 50 72 61 67  d.</p>...}..Prag
40d0: 6d 61 20 63 61 73 65 5f 73 65 6e 73 69 74 69 76  ma case_sensitiv
40e0: 65 5f 6c 69 6b 65 20 7b 0a 20 20 20 20 3c 70 3e  e_like {.    <p>
40f0: 3c 62 3e 50 52 41 47 4d 41 20 63 61 73 65 5f 73  <b>PRAGMA case_s
4100: 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 3d 20  ensitive_like = 
4110: 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f  </b><i>boolean</
4120: 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  i><b>;</b></p>. 
4130: 20 20 20 3c 70 3e 5e 28 54 68 65 20 64 65 66 61     <p>^(The defa
4140: 75 6c 74 20 62 65 68 61 76 69 6f 72 20 6f 66 20  ult behavior of 
4150: 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61  the [LIKE] opera
4160: 74 6f 72 20 69 73 20 74 6f 20 69 67 6e 6f 72 65  tor is to ignore
4170: 20 63 61 73 65 0a 20 20 20 20 66 6f 72 20 41 53   case.    for AS
4180: 43 49 49 20 63 68 61 72 61 63 74 65 72 73 2e 20  CII characters. 
4190: 48 65 6e 63 65 2c 20 62 79 20 64 65 66 61 75 6c  Hence, by defaul
41a0: 74 20 3c 62 3e 27 61 27 20 4c 49 4b 45 20 27 41  t <b>'a' LIKE 'A
41b0: 27 3c 2f 62 3e 20 69 73 0a 20 20 20 20 74 72 75  '</b> is.    tru
41c0: 65 2e 29 5e 20 20 5e 54 68 65 20 63 61 73 65 5f  e.)^  ^The case_
41d0: 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70  sensitive_like p
41e0: 72 61 67 6d 61 20 69 6e 73 74 61 6c 6c 73 20 61  ragma installs a
41f0: 20 6e 65 77 20 61 70 70 6c 69 63 61 74 69 6f 6e   new application
4200: 2d 64 65 66 69 6e 65 64 0a 20 20 20 20 4c 49 4b  -defined.    LIK
4210: 45 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20  E function that 
4220: 69 73 20 65 69 74 68 65 72 20 63 61 73 65 20 73  is either case s
4230: 65 6e 73 69 74 69 76 65 20 6f 72 20 69 6e 73 65  ensitive or inse
4240: 6e 73 69 74 69 76 65 20 64 65 70 65 6e 64 69 6e  nsitive dependin
4250: 67 0a 20 20 20 20 6f 6e 20 74 68 65 20 76 61 6c  g.    on the val
4260: 75 65 20 6f 66 20 74 68 65 20 63 61 73 65 5f 73  ue of the case_s
4270: 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20 70 72  ensitive_like pr
4280: 61 67 6d 61 2e 0a 20 20 20 20 5e 57 68 65 6e 20  agma..    ^When 
4290: 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c  case_sensitive_l
42a0: 69 6b 65 20 69 73 20 64 69 73 61 62 6c 65 64 2c  ike is disabled,
42b0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 4c 49 4b   the default LIK
42c0: 45 20 62 65 68 61 76 69 6f 72 20 69 73 0a 20 20  E behavior is.  
42d0: 20 20 65 78 70 72 65 73 73 65 64 2e 20 20 5e 28    expressed.  ^(
42e0: 57 68 65 6e 20 63 61 73 65 5f 73 65 6e 73 69 74  When case_sensit
42f0: 69 76 65 5f 6c 69 6b 65 20 69 73 20 65 6e 61 62  ive_like is enab
4300: 6c 65 64 2c 20 63 61 73 65 20 62 65 63 6f 6d 65  led, case become
4310: 73 0a 20 20 20 20 73 69 67 6e 69 66 69 63 61 6e  s.    significan
4320: 74 2e 20 20 53 6f 2c 20 66 6f 72 20 65 78 61 6d  t.  So, for exam
4330: 70 6c 65 2c 0a 20 20 20 20 3c 62 3e 27 61 27 20  ple,.    <b>'a' 
4340: 4c 49 4b 45 20 27 41 27 3c 2f 62 3e 20 69 73 20  LIKE 'A'</b> is 
4350: 66 61 6c 73 65 20 62 75 74 20 3c 62 3e 27 61 27  false but <b>'a'
4360: 20 4c 49 4b 45 20 27 61 27 3c 2f 62 3e 20 69 73   LIKE 'a'</b> is
4370: 20 73 74 69 6c 6c 20 74 72 75 65 2e 29 5e 3c 2f   still true.)^</
4380: 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 69 73  p>..    <p>^This
4390: 20 70 72 61 67 6d 61 20 75 73 65 73 20 5b 73 71   pragma uses [sq
43a0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
43b0: 63 74 69 6f 6e 28 29 5d 20 74 6f 20 6f 76 65 72  ction()] to over
43c0: 6c 6f 61 64 20 74 68 65 0a 20 20 20 20 4c 49 4b  load the.    LIK
43d0: 45 20 61 6e 64 20 47 4c 4f 42 20 66 75 6e 63 74  E and GLOB funct
43e0: 69 6f 6e 73 2c 20 77 68 69 63 68 20 6d 61 79 20  ions, which may 
43f0: 6f 76 65 72 72 69 64 65 20 70 72 65 76 69 6f 75  override previou
4400: 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  s implementation
4410: 73 0a 20 20 20 20 6f 66 20 4c 49 4b 45 20 61 6e  s.    of LIKE an
4420: 64 20 47 4c 4f 42 20 72 65 67 69 73 74 65 72 65  d GLOB registere
4430: 64 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61  d by the applica
4440: 74 69 6f 6e 2e 20 20 5e 28 54 68 69 73 20 70 72  tion.  ^(This pr
4450: 61 67 6d 61 0a 20 20 20 20 6f 6e 6c 79 20 63 68  agma.    only ch
4460: 61 6e 67 65 73 20 74 68 65 20 62 65 68 61 76 69  anges the behavi
4470: 6f 72 20 6f 66 20 74 68 65 20 53 51 4c 20 5b 4c  or of the SQL [L
4480: 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2e 20 20  IKE] operator.  
4490: 49 74 20 64 6f 65 73 20 6e 6f 74 0a 20 20 20 20  It does not.    
44a0: 63 68 61 6e 67 65 20 74 68 65 20 62 65 68 61 76  change the behav
44b0: 69 6f 72 20 6f 66 20 74 68 65 20 5b 73 71 6c 69  ior of the [sqli
44c0: 74 65 33 5f 73 74 72 6c 69 6b 65 28 29 5d 20 43  te3_strlike()] C
44d0: 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66  -language interf
44e0: 61 63 65 2c 0a 20 20 20 20 77 68 69 63 68 20 69  ace,.    which i
44f0: 73 20 61 6c 77 61 79 73 20 63 61 73 65 20 69 6e  s always case in
4500: 73 65 6e 73 69 74 69 76 65 2e 29 5e 3c 2f 70 3e  sensitive.)^</p>
4510: 0a 7d 0a 0a 50 72 61 67 6d 61 20 63 65 6c 6c 5f  .}..Pragma cell_
4520: 73 69 7a 65 5f 63 68 65 63 6b 20 7b 0a 20 20 20  size_check {.   
4530: 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20   <p>^(<b>PRAGMA 
4540: 63 65 6c 6c 5f 73 69 7a 65 5f 63 68 65 63 6b 0a  cell_size_check.
4550: 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d         <br>PRAGM
4560: 41 20 63 65 6c 6c 5f 73 69 7a 65 5f 63 68 65 63  A cell_size_chec
4570: 6b 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65  k = </b><i>boole
4580: 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  an</i><b>;</b></
4590: 70 3e 0a 20 20 20 20 3c 70 3e 54 68 65 20 63 65  p>.    <p>The ce
45a0: 6c 6c 5f 73 69 7a 65 5f 63 68 65 63 6b 20 70 72  ll_size_check pr
45b0: 61 67 6d 61 20 65 6e 61 62 6c 65 73 20 6f 72 20  agma enables or 
45c0: 64 69 73 61 62 6c 65 73 20 61 64 64 69 74 69 6f  disables additio
45d0: 6e 61 6c 20 73 61 6e 69 74 79 0a 20 20 20 20 63  nal sanity.    c
45e0: 68 65 63 6b 69 6e 67 20 6f 6e 20 64 61 74 61 62  hecking on datab
45f0: 61 73 65 20 62 2d 74 72 65 65 20 70 61 67 65 73  ase b-tree pages
4600: 20 61 73 20 74 68 65 79 20 61 72 65 20 69 6e 69   as they are ini
4610: 74 69 61 6c 6c 79 20 72 65 61 64 20 66 72 6f 6d  tially read from
4620: 20 64 69 73 6b 2e 29 5e 0a 20 20 20 20 57 69 74   disk.)^.    Wit
4630: 68 20 63 65 6c 6c 20 73 69 7a 65 20 63 68 65 63  h cell size chec
4640: 6b 69 6e 67 20 65 6e 61 62 6c 65 64 2c 20 64 61  king enabled, da
4650: 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f  tabase corruptio
4660: 6e 20 69 73 20 64 65 74 65 63 74 65 64 20 65 61  n is detected ea
4670: 72 6c 69 65 72 0a 20 20 20 20 61 6e 64 20 69 73  rlier.    and is
4680: 20 6c 65 73 73 20 6c 69 6b 65 6c 79 20 74 6f 20   less likely to 
4690: 22 73 70 72 65 61 64 22 2e 20 20 48 6f 77 65 76  "spread".  Howev
46a0: 65 72 2c 20 74 68 65 72 65 20 69 73 20 61 20 73  er, there is a s
46b0: 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65  mall performance
46c0: 0a 20 20 20 20 68 69 74 20 66 6f 72 20 64 6f 69  .    hit for doi
46d0: 6e 67 20 74 68 65 20 65 78 74 72 61 20 63 68 65  ng the extra che
46e0: 63 6b 73 20 61 6e 64 20 73 6f 20 63 65 6c 6c 20  cks and so cell 
46f0: 73 69 7a 65 20 63 68 65 63 6b 69 6e 67 20 69 73  size checking is
4700: 20 74 75 72 6e 65 64 20 6f 66 66 0a 20 20 20 20   turned off.    
4710: 62 79 20 64 65 66 61 75 6c 74 2e 0a 7d 0a 0a 50  by default..}..P
4720: 72 61 67 6d 61 20 63 68 65 63 6b 70 6f 69 6e 74  ragma checkpoint
4730: 5f 66 75 6c 6c 66 73 79 6e 63 20 7b 0a 20 20 20  _fullfsync {.   
4740: 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20   <p>^(<b>PRAGMA 
4750: 63 68 65 63 6b 70 6f 69 6e 74 5f 66 75 6c 6c 66  checkpoint_fullf
4760: 73 79 6e 63 0a 20 20 20 20 20 20 20 3c 62 72 3e  sync.       <br>
4770: 50 52 41 47 4d 41 20 63 68 65 63 6b 70 6f 69 6e  PRAGMA checkpoin
4780: 74 5f 66 75 6c 6c 66 73 79 6e 63 20 3d 20 3c 2f  t_fullfsync = </
4790: 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e  b><i>boolean</i>
47a0: 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  <b>;</b></p>.   
47b0: 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61   <p>Query or cha
47c0: 6e 67 65 20 74 68 65 20 66 75 6c 6c 66 73 79 6e  nge the fullfsyn
47d0: 63 20 66 6c 61 67 20 66 6f 72 20 5b 63 68 65 63  c flag for [chec
47e0: 6b 70 6f 69 6e 74 5d 20 6f 70 65 72 61 74 69 6f  kpoint] operatio
47f0: 6e 73 2e 29 5e 0a 20 20 20 20 5e 49 66 20 74 68  ns.)^.    ^If th
4800: 69 73 20 66 6c 61 67 20 69 73 20 73 65 74 2c 20  is flag is set, 
4810: 74 68 65 6e 20 74 68 65 20 46 5f 46 55 4c 4c 46  then the F_FULLF
4820: 53 59 4e 43 20 73 79 6e 63 69 6e 67 20 6d 65 74  SYNC syncing met
4830: 68 6f 64 20 69 73 20 75 73 65 64 0a 20 20 20 20  hod is used.    
4840: 64 75 72 69 6e 67 20 63 68 65 63 6b 70 6f 69 6e  during checkpoin
4850: 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f 6e 20  t operations on 
4860: 73 79 73 74 65 6d 73 20 74 68 61 74 20 73 75 70  systems that sup
4870: 70 6f 72 74 20 46 5f 46 55 4c 4c 46 53 59 4e 43  port F_FULLFSYNC
4880: 2e 20 0a 20 20 20 20 5e 54 68 65 20 64 65 66 61  . .    ^The defa
4890: 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 74 68 65  ult value of the
48a0: 20 63 68 65 63 6b 70 6f 69 6e 74 5f 66 75 6c 6c   checkpoint_full
48b0: 66 73 79 6e 63 20 66 6c 61 67 0a 20 20 20 20 69  fsync flag.    i
48c0: 73 20 6f 66 66 2e 20 20 4f 6e 6c 79 20 4d 61 63  s off.  Only Mac
48d0: 20 4f 53 2d 58 20 73 75 70 70 6f 72 74 73 20 46   OS-X supports F
48e0: 5f 46 55 4c 4c 46 53 59 4e 43 2e 3c 2f 70 3e 0a  _FULLFSYNC.</p>.
48f0: 0a 20 20 20 20 3c 70 3e 5e 49 66 20 74 68 65 20  .    <p>^If the 
4900: 5b 66 75 6c 6c 66 73 79 6e 63 5d 20 66 6c 61 67  [fullfsync] flag
4910: 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68   is set, then th
4920: 65 20 46 5f 46 55 4c 4c 46 53 59 4e 43 20 73 79  e F_FULLFSYNC sy
4930: 6e 63 69 6e 67 0a 20 20 20 20 6d 65 74 68 6f 64  ncing.    method
4940: 20 69 73 20 75 73 65 64 20 66 6f 72 20 61 6c 6c   is used for all
4950: 20 73 79 6e 63 20 6f 70 65 72 61 74 69 6f 6e 73   sync operations
4960: 20 61 6e 64 20 74 68 65 20 63 68 65 63 6b 70 6f   and the checkpo
4970: 69 6e 74 5f 66 75 6c 6c 66 73 79 6e 63 0a 20 20  int_fullfsync.  
4980: 20 20 73 65 74 74 69 6e 67 20 69 73 20 69 72 72    setting is irr
4990: 65 6c 65 76 61 6e 74 2e 3c 2f 70 3e 0a 7d 0a 0a  elevant.</p>.}..
49a0: 4c 65 67 61 63 79 50 72 61 67 6d 61 20 63 6f 75  LegacyPragma cou
49b0: 6e 74 5f 63 68 61 6e 67 65 73 20 7b 0a 20 20 20  nt_changes {.   
49c0: 20 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 63 6f   <p><b>PRAGMA co
49d0: 75 6e 74 5f 63 68 61 6e 67 65 73 3b 0a 20 20 20  unt_changes;.   
49e0: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63      <br>PRAGMA c
49f0: 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 3d 20 3c  ount_changes = <
4a00: 2f 62 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e 3c 62  /b>boolean</i><b
4a10: 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20 20 20 20  >;</b></p>..    
4a20: 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e  <p>Query or chan
4a30: 67 65 20 74 68 65 20 63 6f 75 6e 74 2d 63 68 61  ge the count-cha
4a40: 6e 67 65 73 20 66 6c 61 67 2e 20 4e 6f 72 6d 61  nges flag. Norma
4a50: 6c 6c 79 2c 20 77 68 65 6e 20 74 68 65 0a 20 20  lly, when the.  
4a60: 20 20 63 6f 75 6e 74 2d 63 68 61 6e 67 65 73 20    count-changes 
4a70: 66 6c 61 67 20 69 73 20 6e 6f 74 20 73 65 74 2c  flag is not set,
4a80: 20 5b 49 4e 53 45 52 54 5d 2c 20 5b 55 50 44 41   [INSERT], [UPDA
4a90: 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d  TE] and [DELETE]
4aa0: 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 20 20   statements.    
4ab0: 72 65 74 75 72 6e 20 6e 6f 20 64 61 74 61 2e 20  return no data. 
4ac0: 57 68 65 6e 20 63 6f 75 6e 74 2d 63 68 61 6e 67  When count-chang
4ad0: 65 73 20 69 73 20 73 65 74 2c 20 65 61 63 68 20  es is set, each 
4ae0: 6f 66 20 74 68 65 73 65 20 63 6f 6d 6d 61 6e 64  of these command
4af0: 73 20 0a 20 20 20 20 72 65 74 75 72 6e 73 20 61  s .    returns a
4b00: 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 64   single row of d
4b10: 61 74 61 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f  ata consisting o
4b20: 66 20 6f 6e 65 20 69 6e 74 65 67 65 72 20 76 61  f one integer va
4b30: 6c 75 65 20 2d 20 74 68 65 0a 20 20 20 20 6e 75  lue - the.    nu
4b40: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 73  mber of rows ins
4b50: 65 72 74 65 64 2c 20 6d 6f 64 69 66 69 65 64 20  erted, modified 
4b60: 6f 72 20 64 65 6c 65 74 65 64 20 62 79 20 74 68  or deleted by th
4b70: 65 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 65 20 0a  e command. The .
4b80: 20 20 20 20 72 65 74 75 72 6e 65 64 20 63 68 61      returned cha
4b90: 6e 67 65 20 63 6f 75 6e 74 20 64 6f 65 73 20 6e  nge count does n
4ba0: 6f 74 20 69 6e 63 6c 75 64 65 20 61 6e 79 20 69  ot include any i
4bb0: 6e 73 65 72 74 69 6f 6e 73 2c 20 6d 6f 64 69 66  nsertions, modif
4bc0: 69 63 61 74 69 6f 6e 73 0a 20 20 20 20 6f 72 20  ications.    or 
4bd0: 64 65 6c 65 74 69 6f 6e 73 20 70 65 72 66 6f 72  deletions perfor
4be0: 6d 65 64 20 62 79 20 74 72 69 67 67 65 72 73 2c  med by triggers,
4bf0: 20 61 6e 79 20 63 68 61 6e 67 65 73 20 6d 61 64   any changes mad
4c00: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a  e automatically.
4c10: 20 20 20 20 62 79 20 5b 66 6f 72 65 69 67 6e 20      by [foreign 
4c20: 6b 65 79 20 61 63 74 69 6f 6e 73 5d 2c 20 6f 72  key actions], or
4c30: 20 75 70 64 61 74 65 73 20 63 61 75 73 65 64 20   updates caused 
4c40: 62 79 20 61 6e 20 5b 75 70 73 65 72 74 5d 2e 3c  by an [upsert].<
4c50: 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 41 6e 6f 74  /p>..    <p>Anot
4c60: 68 65 72 20 77 61 79 20 74 6f 20 67 65 74 20 74  her way to get t
4c70: 68 65 20 72 6f 77 20 63 68 61 6e 67 65 20 63 6f  he row change co
4c80: 75 6e 74 73 20 69 73 20 74 6f 20 75 73 65 20 74  unts is to use t
4c90: 68 65 0a 20 20 20 20 5b 73 71 6c 69 74 65 33 5f  he.    [sqlite3_
4ca0: 63 68 61 6e 67 65 73 28 29 5d 20 6f 72 20 5b 73  changes()] or [s
4cb0: 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
4cc0: 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63  nges()] interfac
4cd0: 65 73 2e 0a 20 20 20 20 54 68 65 72 65 20 69 73  es..    There is
4ce0: 20 61 20 73 75 62 74 6c 65 20 64 69 66 66 65 72   a subtle differ
4cf0: 65 6e 74 2c 20 74 68 6f 75 67 68 2e 20 20 57 68  ent, though.  Wh
4d00: 65 6e 20 61 6e 20 49 4e 53 45 52 54 2c 20 55 50  en an INSERT, UP
4d10: 44 41 54 45 2c 20 6f 72 0a 20 20 20 20 44 45 4c  DATE, or.    DEL
4d20: 45 54 45 20 69 73 20 72 75 6e 20 61 67 61 69 6e  ETE is run again
4d30: 73 74 20 61 20 76 69 65 77 20 75 73 69 6e 67 20  st a view using 
4d40: 61 6e 20 5b 49 4e 53 54 45 41 44 20 4f 46 20 74  an [INSTEAD OF t
4d50: 72 69 67 67 65 72 5d 2c 0a 20 20 20 20 74 68 65  rigger],.    the
4d60: 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 70   count_changes p
4d70: 72 61 67 6d 61 20 72 65 70 6f 72 74 73 20 74 68  ragma reports th
4d80: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
4d90: 20 69 6e 20 74 68 65 20 76 69 65 77 0a 20 20 20   in the view.   
4da0: 20 74 68 61 74 20 66 69 72 65 64 20 74 68 65 20   that fired the 
4db0: 74 72 69 67 67 65 72 2c 20 77 68 65 72 65 61 73  trigger, whereas
4dc0: 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65   [sqlite3_change
4dd0: 73 28 29 5d 20 61 6e 64 0a 20 20 20 20 5b 73 71  s()] and.    [sq
4de0: 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
4df0: 67 65 73 28 29 5d 20 64 6f 20 6e 6f 74 2e 0a 0a  ges()] do not...
4e00: 20 20 20 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d      DISCLAIMER.}
4e10: 0a 0a 50 72 61 67 6d 61 20 64 61 74 61 5f 76 65  ..Pragma data_ve
4e20: 72 73 69 6f 6e 20 7b 0a 20 20 20 20 3c 70 3e 3c  rsion {.    <p><
4e30: 62 3e 50 52 41 47 4d 41 20 44 42 2e 64 61 74 61  b>PRAGMA DB.data
4e40: 5f 76 65 72 73 69 6f 6e 3b 3c 2f 62 3e 3c 2f 70  _version;</b></p
4e50: 3e 0a 20 20 20 20 3c 70 3e 5e 54 68 65 20 22 50  >.    <p>^The "P
4e60: 52 41 47 4d 41 20 64 61 74 61 5f 76 65 72 73 69  RAGMA data_versi
4e70: 6f 6e 22 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 76  on" command prov
4e80: 69 64 65 73 20 61 6e 20 69 6e 64 69 63 61 74 69  ides an indicati
4e90: 6f 6e 20 74 68 61 74 20 74 68 65 0a 20 20 20 20  on that the.    
4ea0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 68 61  database file ha
4eb0: 73 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 2e  s been modified.
4ec0: 0a 20 20 20 20 49 6e 74 65 72 61 63 74 69 76 65  .    Interactive
4ed0: 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74 20 68   programs that h
4ee0: 6f 6c 64 20 64 61 74 61 62 61 73 65 20 63 6f 6e  old database con
4ef0: 74 65 6e 74 20 69 6e 20 6d 65 6d 6f 72 79 20 6f  tent in memory o
4f00: 72 20 74 68 61 74 0a 20 20 20 20 64 69 73 70 6c  r that.    displ
4f10: 61 79 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  ay database cont
4f20: 65 6e 74 20 6f 6e 2d 73 63 72 65 65 6e 20 63 61  ent on-screen ca
4f30: 6e 20 75 73 65 20 74 68 65 20 50 52 41 47 4d 41  n use the PRAGMA
4f40: 20 64 61 74 61 5f 76 65 72 73 69 6f 6e 0a 20 20   data_version.  
4f50: 20 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 64 65 74    command to det
4f60: 65 72 6d 69 6e 65 20 69 66 20 74 68 65 79 20 6e  ermine if they n
4f70: 65 65 64 20 74 6f 20 66 6c 75 73 68 20 61 6e 64  eed to flush and
4f80: 20 72 65 6c 6f 61 64 20 74 68 65 69 72 20 6d 65   reload their me
4f90: 6d 6f 72 79 0a 20 20 20 20 6f 72 20 75 70 64 61  mory.    or upda
4fa0: 74 65 20 74 68 65 20 73 63 72 65 65 6e 20 64 69  te the screen di
4fb0: 73 70 6c 61 79 2e 3c 2f 70 3e 0a 0a 20 20 20 20  splay.</p>..    
4fc0: 3c 70 3e 5e 54 68 65 20 69 6e 74 65 67 65 72 20  <p>^The integer 
4fd0: 76 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20  values returned 
4fe0: 62 79 20 74 77 6f 0a 20 20 20 20 69 6e 76 6f 63  by two.    invoc
4ff0: 61 74 69 6f 6e 73 20 6f 66 20 22 50 52 41 47 4d  ations of "PRAGM
5000: 41 20 64 61 74 61 5f 76 65 72 73 69 6f 6e 22 20  A data_version" 
5010: 66 72 6f 6d 20 74 68 65 20 73 61 6d 65 20 63 6f  from the same co
5020: 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 77 69 6c  nnection.    wil
5030: 6c 20 62 65 20 64 69 66 66 65 72 65 6e 74 20 69  l be different i
5040: 66 20 63 68 61 6e 67 65 73 20 77 65 72 65 20 63  f changes were c
5050: 6f 6d 6d 69 74 74 65 64 20 74 6f 20 74 68 65 20  ommitted to the 
5060: 64 61 74 61 62 61 73 65 20 0a 20 20 20 20 62 79  database .    by
5070: 20 61 6e 79 20 6f 74 68 65 72 20 63 6f 6e 6e 65   any other conne
5080: 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e 74  ction in the int
5090: 65 72 69 6d 2e 0a 20 20 20 20 5e 54 68 65 20 22  erim..    ^The "
50a0: 50 52 41 47 4d 41 20 64 61 74 61 5f 76 65 72 73  PRAGMA data_vers
50b0: 69 6f 6e 22 20 76 61 6c 75 65 20 69 73 20 75 6e  ion" value is un
50c0: 63 68 61 6e 67 65 64 20 66 6f 72 20 63 6f 6d 6d  changed for comm
50d0: 69 74 73 20 6d 61 64 65 0a 20 20 20 20 6f 6e 20  its made.    on 
50e0: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
50f0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20  e connection..  
5100: 20 20 5e 54 68 65 20 62 65 68 61 76 69 6f 72 20    ^The behavior 
5110: 6f 66 20 22 50 52 41 47 4d 41 20 64 61 74 61 5f  of "PRAGMA data_
5120: 76 65 72 73 69 6f 6e 22 20 69 73 20 74 68 65 20  version" is the 
5130: 73 61 6d 65 20 66 6f 72 20 61 6c 6c 20 64 61 74  same for all dat
5140: 61 62 61 73 65 0a 20 20 20 20 63 6f 6e 6e 65 63  abase.    connec
5150: 74 69 6f 6e 73 2c 20 69 6e 63 6c 75 64 69 6e 67  tions, including
5160: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
5170: 74 69 6f 6e 73 20 69 6e 20 73 65 70 61 72 61 74  tions in separat
5180: 65 20 70 72 6f 63 65 73 73 65 73 0a 20 20 20 20  e processes.    
5190: 61 6e 64 20 5b 73 68 61 72 65 64 20 63 61 63 68  and [shared cach
51a0: 65 5d 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e] database conn
51b0: 65 63 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 3c 70  ections...    <p
51c0: 3e 5e 54 68 65 20 22 50 52 41 47 4d 41 20 64 61  >^The "PRAGMA da
51d0: 74 61 5f 76 65 72 73 69 6f 6e 22 20 76 61 6c 75  ta_version" valu
51e0: 65 20 69 73 20 61 20 6c 6f 63 61 6c 20 70 72 6f  e is a local pro
51f0: 70 65 72 74 79 20 6f 66 20 65 61 63 68 0a 20 20  perty of each.  
5200: 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65    database conne
5210: 63 74 69 6f 6e 20 61 6e 64 20 73 6f 20 76 61 6c  ction and so val
5220: 75 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20  ues returned by 
5230: 74 77 6f 20 63 6f 6e 63 75 72 72 65 6e 74 20 69  two concurrent i
5240: 6e 76 6f 63 61 74 69 6f 6e 73 0a 20 20 20 20 6f  nvocations.    o
5250: 66 20 22 50 52 41 47 4d 41 20 64 61 74 61 5f 76  f "PRAGMA data_v
5260: 65 72 73 69 6f 6e 22 20 6f 6e 20 73 65 70 61 72  ersion" on separ
5270: 61 74 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ate database con
5280: 6e 65 63 74 69 6f 6e 73 20 61 72 65 20 0a 20 20  nections are .  
5290: 20 20 6f 66 74 65 6e 20 64 69 66 66 65 72 65 6e    often differen
52a0: 74 20 65 76 65 6e 20 74 68 6f 75 67 68 20 74 68  t even though th
52b0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 61 74  e underlying dat
52c0: 61 62 61 73 65 20 69 73 20 69 64 65 6e 74 69 63  abase is identic
52d0: 61 6c 2e 0a 20 20 20 20 49 74 20 69 73 20 6f 6e  al..    It is on
52e0: 6c 79 20 6d 65 61 6e 69 6e 67 66 75 6c 20 74 6f  ly meaningful to
52f0: 20 63 6f 6d 70 61 72 65 20 74 68 65 20 22 50 52   compare the "PR
5300: 41 47 4d 41 20 64 61 74 61 5f 76 65 72 73 69 6f  AGMA data_versio
5310: 6e 22 20 76 61 6c 75 65 73 0a 20 20 20 20 72 65  n" values.    re
5320: 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 73 61  turned by the sa
5330: 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  me database conn
5340: 65 63 74 69 6f 6e 20 61 74 20 74 77 6f 20 64 69  ection at two di
5350: 66 66 65 72 65 6e 74 20 70 6f 69 6e 74 73 20 69  fferent points i
5360: 6e 0a 20 20 20 20 74 69 6d 65 2e 0a 7d 0a 0a 50  n.    time..}..P
5370: 72 61 67 6d 61 20 64 65 66 65 72 5f 66 6f 72 65  ragma defer_fore
5380: 69 67 6e 5f 6b 65 79 73 20 7b 0a 20 20 20 20 3c  ign_keys {.    <
5390: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 64 65 66 65  p><b>PRAGMA defe
53a0: 72 5f 66 6f 72 65 69 67 6e 5f 6b 65 79 73 0a 20  r_foreign_keys. 
53b0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
53c0: 20 64 65 66 65 72 5f 66 6f 72 65 69 67 6e 5f 6b   defer_foreign_k
53d0: 65 79 73 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f  eys = </b><i>boo
53e0: 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e  lean</i><b>;</b>
53f0: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 5e 57 68 65  </p>.    <p>^Whe
5400: 6e 20 74 68 65 20 64 65 66 65 72 5f 66 6f 72 65  n the defer_fore
5410: 69 67 6e 5f 6b 65 79 73 20 5b 50 52 41 47 4d 41  ign_keys [PRAGMA
5420: 5d 20 69 73 20 6f 6e 2c 0a 20 20 20 20 65 6e 66  ] is on,.    enf
5430: 6f 72 63 65 6d 65 6e 74 20 6f 66 20 61 6c 6c 20  orcement of all 
5440: 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
5450: 73 74 72 61 69 6e 74 73 5d 20 69 73 20 64 65 6c  straints] is del
5460: 61 79 65 64 20 75 6e 74 69 6c 20 74 68 65 0a 20  ayed until the. 
5470: 20 20 20 6f 75 74 65 72 6d 6f 73 74 20 74 72 61     outermost tra
5480: 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 6f 6d 6d  nsaction is comm
5490: 69 74 74 65 64 2e 20 20 5e 54 68 65 20 64 65 66  itted.  ^The def
54a0: 65 72 5f 66 6f 72 65 69 67 6e 5f 6b 65 79 73 20  er_foreign_keys 
54b0: 70 72 61 67 6d 61 0a 20 20 20 20 64 65 66 61 75  pragma.    defau
54c0: 6c 74 73 20 74 6f 20 4f 46 46 20 73 6f 20 74 68  lts to OFF so th
54d0: 61 74 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  at foreign key c
54e0: 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20 6f  onstraints are o
54f0: 6e 6c 79 20 64 65 66 65 72 72 65 64 20 69 66 0a  nly deferred if.
5500: 20 20 20 20 74 68 65 79 20 61 72 65 20 63 72 65      they are cre
5510: 61 74 65 64 20 61 73 20 22 44 45 46 45 52 52 41  ated as "DEFERRA
5520: 42 4c 45 20 49 4e 49 54 49 41 4c 4c 59 20 44 45  BLE INITIALLY DE
5530: 46 45 52 52 45 44 22 2e 20 20 5e 28 54 68 65 20  FERRED".  ^(The 
5540: 0a 20 20 20 20 64 65 66 65 72 5f 66 6f 72 65 69  .    defer_forei
5550: 67 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 20 69  gn_keys pragma i
5560: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
5570: 73 77 69 74 63 68 65 64 20 6f 66 66 20 61 74 20  switched off at 
5580: 65 61 63 68 0a 20 20 20 20 43 4f 4d 4d 49 54 20  each.    COMMIT 
5590: 6f 72 20 52 4f 4c 4c 42 41 43 4b 2e 20 20 48 65  or ROLLBACK.  He
55a0: 6e 63 65 2c 20 74 68 65 20 64 65 66 65 72 5f 66  nce, the defer_f
55b0: 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70 72 61 67  oreign_keys prag
55c0: 6d 61 20 6d 75 73 74 20 62 65 0a 20 20 20 20 73  ma must be.    s
55d0: 65 70 61 72 61 74 65 6c 79 20 65 6e 61 62 6c 65  eparately enable
55e0: 64 20 66 6f 72 20 65 61 63 68 20 74 72 61 6e 73  d for each trans
55f0: 61 63 74 69 6f 6e 2e 29 5e 20 20 54 68 69 73 20  action.)^  This 
5600: 70 72 61 67 6d 61 20 69 73 0a 20 20 20 20 6f 6e  pragma is.    on
5610: 6c 79 20 6d 65 61 6e 69 6e 67 66 75 6c 20 69 66  ly meaningful if
5620: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e   foreign key con
5630: 73 74 72 61 69 6e 74 73 20 61 72 65 20 65 6e 61  straints are ena
5640: 62 6c 65 64 2c 20 6f 66 20 63 6f 75 72 73 65 2e  bled, of course.
5650: 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 65  </p>..    <p>The
5660: 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61   [sqlite3_db_sta
5670: 74 75 73 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f  tus](db,[SQLITE_
5680: 44 42 53 54 41 54 55 53 5f 44 45 46 45 52 52 45  DBSTATUS_DEFERRE
5690: 44 5f 46 4b 53 5d 2c 2e 2e 2e 29 0a 20 20 20 20  D_FKS],...).    
56a0: 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72  C-language inter
56b0: 66 61 63 65 20 63 61 6e 20 62 65 20 75 73 65 64  face can be used
56c0: 20 64 75 72 69 6e 67 20 61 20 74 72 61 6e 73 61   during a transa
56d0: 63 74 69 6f 6e 20 74 6f 20 64 65 74 65 72 6d 69  ction to determi
56e0: 6e 65 20 0a 20 20 20 20 69 66 20 74 68 65 72 65  ne .    if there
56f0: 20 61 72 65 20 64 65 66 65 72 72 65 64 20 61 6e   are deferred an
5700: 64 20 75 6e 72 65 73 6f 6c 76 65 64 20 66 6f 72  d unresolved for
5710: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
5720: 69 6e 74 73 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 4c 65  ints.</p>.}...Le
5730: 67 61 63 79 50 72 61 67 6d 61 20 64 65 66 61 75  gacyPragma defau
5740: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 20 7b 0a  lt_cache_size {.
5750: 20 20 20 20 5e 28 3c 62 3e 50 52 41 47 4d 41 20      ^(<b>PRAGMA 
5760: 44 42 2e 64 65 66 61 75 6c 74 5f 63 61 63 68 65  DB.default_cache
5770: 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62  _size;.       <b
5780: 72 3e 50 52 41 47 4d 41 20 44 42 2e 64 65 66 61  r>PRAGMA DB.defa
5790: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 0a 20  ult_cache_size. 
57a0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 3c 2f 62             = </b
57b0: 3e 3c 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61  ><i>Number-of-pa
57c0: 67 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c  ges</i><b>;</b><
57d0: 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 69 73  /p>..    <p>This
57e0: 20 70 72 61 67 6d 61 20 71 75 65 72 69 65 73 20   pragma queries 
57f0: 6f 72 20 73 65 74 73 20 74 68 65 20 73 75 67 67  or sets the sugg
5800: 65 73 74 65 64 20 6d 61 78 69 6d 75 6d 20 6e 75  ested maximum nu
5810: 6d 62 65 72 20 6f 66 20 70 61 67 65 73 0a 20 20  mber of pages.  
5820: 20 20 6f 66 20 64 69 73 6b 20 63 61 63 68 65 20    of disk cache 
5830: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 61 6c 6c  that will be all
5840: 6f 63 61 74 65 64 20 70 65 72 20 6f 70 65 6e 20  ocated per open 
5850: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 29 5e  database file.)^
5860: 0a 20 20 20 20 5e 54 68 65 20 64 69 66 66 65 72  .    ^The differ
5870: 65 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 69  ence between thi
5880: 73 20 70 72 61 67 6d 61 20 61 6e 64 20 5b 63 61  s pragma and [ca
5890: 63 68 65 5f 73 69 7a 65 5d 20 69 73 20 74 68 61  che_size] is tha
58a0: 74 20 74 68 65 0a 20 20 20 20 76 61 6c 75 65 20  t the.    value 
58b0: 73 65 74 20 68 65 72 65 20 70 65 72 73 69 73 74  set here persist
58c0: 73 20 61 63 72 6f 73 73 20 64 61 74 61 62 61 73  s across databas
58d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0a 20  e connections.. 
58e0: 20 20 20 5e 54 68 65 20 76 61 6c 75 65 20 6f 66     ^The value of
58f0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 61 63   the default cac
5900: 68 65 20 73 69 7a 65 20 69 73 20 73 74 6f 72 65  he size is store
5910: 64 20 69 6e 20 74 68 65 20 34 2d 62 79 74 65 0a  d in the 4-byte.
5920: 20 20 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 69      big-endian i
5930: 6e 74 65 67 65 72 20 6c 6f 63 61 74 65 64 20 61  nteger located a
5940: 74 20 6f 66 66 73 65 74 20 34 38 20 69 6e 20 74  t offset 48 in t
5950: 68 65 20 68 65 61 64 65 72 20 6f 66 20 74 68 65  he header of the
5960: 0a 20 20 20 20 64 61 74 61 62 61 73 65 20 66 69  .    database fi
5970: 6c 65 2e 0a 20 20 20 20 3c 2f 70 3e 0a 0a 20 20  le..    </p>..  
5980: 20 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d 0a 0a    DISCLAIMER.}..
5990: 4c 65 67 61 63 79 50 72 61 67 6d 61 20 65 6d 70  LegacyPragma emp
59a0: 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61  ty_result_callba
59b0: 63 6b 73 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e  cks {.    <p><b>
59c0: 50 52 41 47 4d 41 20 65 6d 70 74 79 5f 72 65 73  PRAGMA empty_res
59d0: 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73 3b 0a 20  ult_callbacks;. 
59e0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
59f0: 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61   empty_result_ca
5a00: 6c 6c 62 61 63 6b 73 20 3d 20 3c 2f 62 3e 3c 69  llbacks = </b><i
5a10: 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b  >boolean</i><b>;
5a20: 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70  </b></p>..    <p
5a30: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
5a40: 20 74 68 65 20 65 6d 70 74 79 2d 72 65 73 75 6c   the empty-resul
5a50: 74 2d 63 61 6c 6c 62 61 63 6b 73 20 66 6c 61 67  t-callbacks flag
5a60: 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 54 68  .</p>..    <p>Th
5a70: 65 20 65 6d 70 74 79 2d 72 65 73 75 6c 74 2d 63  e empty-result-c
5a80: 61 6c 6c 62 61 63 6b 73 20 66 6c 61 67 20 61 66  allbacks flag af
5a90: 66 65 63 74 73 20 74 68 65 20 5b 73 71 6c 69 74  fects the [sqlit
5aa0: 65 33 5f 65 78 65 63 28 29 5d 20 41 50 49 20 6f  e3_exec()] API o
5ab0: 6e 6c 79 2e 0a 20 20 20 20 4e 6f 72 6d 61 6c 6c  nly..    Normall
5ac0: 79 2c 20 77 68 65 6e 20 74 68 65 20 65 6d 70 74  y, when the empt
5ad0: 79 2d 72 65 73 75 6c 74 2d 63 61 6c 6c 62 61 63  y-result-callbac
5ae0: 6b 73 20 66 6c 61 67 20 69 73 20 63 6c 65 61 72  ks flag is clear
5af0: 65 64 2c 20 74 68 65 0a 20 20 20 20 63 61 6c 6c  ed, the.    call
5b00: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 73 75  back function su
5b10: 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 5b 73  pplied to the [s
5b20: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 20 69  qlite3_exec()] i
5b30: 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 0a 20 20  s not invoked.  
5b40: 20 20 66 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 74    for commands t
5b50: 68 61 74 20 72 65 74 75 72 6e 20 7a 65 72 6f 20  hat return zero 
5b60: 72 6f 77 73 20 6f 66 20 64 61 74 61 2e 20 20 57  rows of data.  W
5b70: 68 65 6e 20 65 6d 70 74 79 2d 72 65 73 75 6c 74  hen empty-result
5b80: 2d 63 61 6c 6c 62 61 63 6b 73 0a 20 20 20 20 69  -callbacks.    i
5b90: 73 20 73 65 74 20 69 6e 20 74 68 69 73 20 73 69  s set in this si
5ba0: 74 75 61 74 69 6f 6e 2c 20 74 68 65 20 63 61 6c  tuation, the cal
5bb0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69  lback function i
5bc0: 73 20 69 6e 76 6f 6b 65 64 20 65 78 61 63 74 6c  s invoked exactl
5bd0: 79 20 6f 6e 63 65 2c 0a 20 20 20 20 77 69 74 68  y once,.    with
5be0: 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d   the third param
5bf0: 65 74 65 72 20 73 65 74 20 74 6f 20 30 20 28 4e  eter set to 0 (N
5c00: 55 4c 4c 29 2e 20 54 68 69 73 20 69 73 20 74 6f  ULL). This is to
5c10: 20 65 6e 61 62 6c 65 20 70 72 6f 67 72 61 6d 73   enable programs
5c20: 20 20 0a 20 20 20 20 74 68 61 74 20 75 73 65 20    .    that use 
5c30: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 78 65  the [sqlite3_exe
5c40: 63 28 29 5d 20 41 50 49 20 74 6f 20 72 65 74 72  c()] API to retr
5c50: 69 65 76 65 20 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  ieve column-name
5c60: 73 20 65 76 65 6e 20 77 68 65 6e 0a 20 20 20 20  s even when.    
5c70: 61 20 71 75 65 72 79 20 72 65 74 75 72 6e 73 20  a query returns 
5c80: 6e 6f 20 64 61 74 61 2e 3c 2f 70 3e 0a 0a 20 20  no data.</p>..  
5c90: 20 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d 20 20    DISCLAIMER.}  
5ca0: 20 0a 20 20 20 20 0a 0a 50 72 61 67 6d 61 20 65   .    ..Pragma e
5cb0: 6e 63 6f 64 69 6e 67 20 7b 0a 20 20 20 3c 70 3e  ncoding {.   <p>
5cc0: 5e 28 3c 62 3e 50 52 41 47 4d 41 20 65 6e 63 6f  ^(<b>PRAGMA enco
5cd0: 64 69 6e 67 3b 0a 20 20 20 20 20 20 20 3c 62 72  ding;.       <br
5ce0: 3e 50 52 41 47 4d 41 20 65 6e 63 6f 64 69 6e 67  >PRAGMA encoding
5cf0: 20 3d 20 22 55 54 46 2d 38 22 3b 0a 20 20 20 20   = "UTF-8";.    
5d00: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 65 6e     <br>PRAGMA en
5d10: 63 6f 64 69 6e 67 20 3d 20 22 55 54 46 2d 31 36  coding = "UTF-16
5d20: 22 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  ";.       <br>PR
5d30: 41 47 4d 41 20 65 6e 63 6f 64 69 6e 67 20 3d 20  AGMA encoding = 
5d40: 22 55 54 46 2d 31 36 6c 65 22 3b 0a 20 20 20 20  "UTF-16le";.    
5d50: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 65 6e     <br>PRAGMA en
5d60: 63 6f 64 69 6e 67 20 3d 20 22 55 54 46 2d 31 36  coding = "UTF-16
5d70: 62 65 22 3b 3c 2f 62 3e 29 5e 3c 2f 70 3e 0a 20  be";</b>)^</p>. 
5d80: 20 20 20 3c 70 3e 5e 49 6e 20 66 69 72 73 74 20     <p>^In first 
5d90: 66 6f 72 6d 2c 20 69 66 20 74 68 65 20 6d 61 69  form, if the mai
5da0: 6e 20 64 61 74 61 62 61 73 65 20 68 61 73 20 61  n database has a
5db0: 6c 72 65 61 64 79 20 62 65 65 6e 0a 20 20 20 20  lready been.    
5dc0: 63 72 65 61 74 65 64 2c 20 74 68 65 6e 20 74 68  created, then th
5dd0: 69 73 20 70 72 61 67 6d 61 20 72 65 74 75 72 6e  is pragma return
5de0: 73 20 74 68 65 20 74 65 78 74 20 65 6e 63 6f 64  s the text encod
5df0: 69 6e 67 20 75 73 65 64 20 62 79 20 74 68 65 0a  ing used by the.
5e00: 20 20 20 20 6d 61 69 6e 20 64 61 74 61 62 61 73      main databas
5e10: 65 2c 20 6f 6e 65 20 6f 66 20 22 55 54 46 2d 38  e, one of "UTF-8
5e20: 22 2c 20 22 55 54 46 2d 31 36 6c 65 22 20 28 6c  ", "UTF-16le" (l
5e30: 69 74 74 6c 65 2d 65 6e 64 69 61 6e 20 55 54 46  ittle-endian UTF
5e40: 2d 31 36 0a 20 20 20 20 65 6e 63 6f 64 69 6e 67  -16.    encoding
5e50: 29 20 6f 72 20 22 55 54 46 2d 31 36 62 65 22 20  ) or "UTF-16be" 
5e60: 28 62 69 67 2d 65 6e 64 69 61 6e 20 55 54 46 2d  (big-endian UTF-
5e70: 31 36 20 65 6e 63 6f 64 69 6e 67 29 2e 20 20 5e  16 encoding).  ^
5e80: 49 66 20 74 68 65 20 6d 61 69 6e 0a 20 20 20 20  If the main.    
5e90: 64 61 74 61 62 61 73 65 20 68 61 73 20 6e 6f 74  database has not
5ea0: 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 63 72   already been cr
5eb0: 65 61 74 65 64 2c 20 74 68 65 6e 20 74 68 65 20  eated, then the 
5ec0: 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 69  value returned i
5ed0: 73 20 74 68 65 0a 20 20 20 20 74 65 78 74 20 65  s the.    text e
5ee0: 6e 63 6f 64 69 6e 67 20 74 68 61 74 20 77 69 6c  ncoding that wil
5ef0: 6c 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65  l be used to cre
5f00: 61 74 65 20 74 68 65 20 6d 61 69 6e 20 64 61 74  ate the main dat
5f10: 61 62 61 73 65 2c 20 69 66 20 0a 20 20 20 20 69  abase, if .    i
5f20: 74 20 69 73 20 63 72 65 61 74 65 64 20 62 79 20  t is created by 
5f30: 74 68 69 73 20 73 65 73 73 69 6f 6e 2e 3c 2f 70  this session.</p
5f40: 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 65 20 73  >..    <p>^The s
5f50: 65 63 6f 6e 64 20 74 68 72 6f 75 67 68 20 66 69  econd through fi
5f60: 66 74 68 20 66 6f 72 6d 73 20 6f 66 20 74 68 69  fth forms of thi
5f70: 73 20 70 72 61 67 6d 61 0a 20 20 20 20 73 65 74  s pragma.    set
5f80: 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 74 68   the encoding th
5f90: 61 74 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  at the main data
5fa0: 62 61 73 65 20 77 69 6c 6c 20 62 65 20 63 72 65  base will be cre
5fb0: 61 74 65 64 20 77 69 74 68 20 69 66 0a 20 20 20  ated with if.   
5fc0: 20 69 74 20 69 73 20 63 72 65 61 74 65 64 20 62   it is created b
5fd0: 79 20 74 68 69 73 20 73 65 73 73 69 6f 6e 2e 20  y this session. 
5fe0: 5e 54 68 65 20 73 74 72 69 6e 67 20 22 55 54 46  ^The string "UTF
5ff0: 2d 31 36 22 20 69 73 20 69 6e 74 65 72 70 72 65  -16" is interpre
6000: 74 65 64 0a 20 20 20 20 61 73 20 22 55 54 46 2d  ted.    as "UTF-
6010: 31 36 20 65 6e 63 6f 64 69 6e 67 20 75 73 69 6e  16 encoding usin
6020: 67 20 6e 61 74 69 76 65 20 6d 61 63 68 69 6e 65  g native machine
6030: 20 62 79 74 65 2d 6f 72 64 65 72 69 6e 67 22 2e   byte-ordering".
6040: 20 20 5e 49 74 20 69 73 20 6e 6f 74 0a 20 20 20    ^It is not.   
6050: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61   possible to cha
6060: 6e 67 65 20 74 68 65 20 74 65 78 74 20 65 6e 63  nge the text enc
6070: 6f 64 69 6e 67 20 6f 66 20 61 20 64 61 74 61 62  oding of a datab
6080: 61 73 65 20 61 66 74 65 72 20 69 74 20 68 61 73  ase after it has
6090: 20 62 65 65 6e 0a 20 20 20 20 63 72 65 61 74 65   been.    create
60a0: 64 20 61 6e 64 20 61 6e 79 20 61 74 74 65 6d 70  d and any attemp
60b0: 74 20 74 6f 20 64 6f 20 73 6f 20 77 69 6c 6c 20  t to do so will 
60c0: 62 65 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f  be silently igno
60d0: 72 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70  red.</p>..    <p
60e0: 3e 5e 4f 6e 63 65 20 61 6e 20 65 6e 63 6f 64 69  >^Once an encodi
60f0: 6e 67 20 68 61 73 20 62 65 65 6e 20 73 65 74 20  ng has been set 
6100: 66 6f 72 20 61 20 64 61 74 61 62 61 73 65 2c 20  for a database, 
6110: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61  it cannot be cha
6120: 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c  nged.</p>..    <
6130: 70 3e 5e 44 61 74 61 62 61 73 65 73 20 63 72 65  p>^Databases cre
6140: 61 74 65 64 20 62 79 20 74 68 65 20 5b 41 54 54  ated by the [ATT
6150: 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 20 61 6c 77  ACH] command alw
6160: 61 79 73 20 75 73 65 20 74 68 65 20 73 61 6d 65  ays use the same
6170: 20 65 6e 63 6f 64 69 6e 67 0a 20 20 20 20 61 73   encoding.    as
6180: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
6190: 73 65 2e 20 20 5e 41 6e 20 61 74 74 65 6d 70 74  se.  ^An attempt
61a0: 20 74 6f 20 5b 41 54 54 41 43 48 5d 20 61 20 64   to [ATTACH] a d
61b0: 61 74 61 62 61 73 65 20 77 69 74 68 20 61 20 64  atabase with a d
61c0: 69 66 66 65 72 65 6e 74 0a 20 20 20 20 74 65 78  ifferent.    tex
61d0: 74 20 65 6e 63 6f 64 69 6e 67 20 66 72 6f 6d 20  t encoding from 
61e0: 74 68 65 20 22 6d 61 69 6e 22 20 64 61 74 61 62  the "main" datab
61f0: 61 73 65 20 77 69 6c 6c 20 66 61 69 6c 2e 3c 2f  ase will fail.</
6200: 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 66 6f 72  p>.}..Pragma for
6210: 65 69 67 6e 5f 6b 65 79 73 20 7b 0a 20 20 20 20  eign_keys {.    
6220: 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20   <p>^(<b>PRAGMA 
6230: 66 6f 72 65 69 67 6e 5f 6b 65 79 73 3b 0a 20 20  foreign_keys;.  
6240: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
6250: 66 6f 72 65 69 67 6e 5f 6b 65 79 73 20 3d 20 3c  foreign_keys = <
6260: 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69  /b><i>boolean</i
6270: 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  ><b>;</b></p>.  
6280: 20 20 3c 70 3e 51 75 65 72 79 2c 20 73 65 74 2c    <p>Query, set,
6290: 20 6f 72 20 63 6c 65 61 72 20 74 68 65 20 65 6e   or clear the en
62a0: 66 6f 72 63 65 6d 65 6e 74 20 6f 66 20 5b 66 6f  forcement of [fo
62b0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
62c0: 61 69 6e 74 73 5d 2e 29 5e 0a 0a 20 20 20 20 3c  aints].)^..    <
62d0: 70 3e 5e 54 68 69 73 20 70 72 61 67 6d 61 20 69  p>^This pragma i
62e0: 73 20 61 20 6e 6f 2d 6f 70 20 77 69 74 68 69 6e  s a no-op within
62f0: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 3b 20   a transaction; 
6300: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
6310: 74 72 61 69 6e 74 0a 20 20 20 20 20 20 20 65 6e  traint.       en
6320: 66 6f 72 63 65 6d 65 6e 74 20 6d 61 79 20 6f 6e  forcement may on
6330: 6c 79 20 62 65 20 65 6e 61 62 6c 65 64 20 6f 72  ly be enabled or
6340: 20 64 69 73 61 62 6c 65 64 20 77 68 65 6e 20 74   disabled when t
6350: 68 65 72 65 20 69 73 20 6e 6f 20 70 65 6e 64 69  here is no pendi
6360: 6e 67 0a 20 20 20 20 20 20 20 5b 42 45 47 49 4e  ng.       [BEGIN
6370: 5d 20 6f 72 20 5b 53 41 56 45 50 4f 49 4e 54 5d  ] or [SAVEPOINT]
6380: 2e 0a 0a 20 20 20 20 3c 70 3e 5e 43 68 61 6e 67  ...    <p>^Chang
6390: 69 6e 67 20 74 68 65 20 66 6f 72 65 69 67 6e 5f  ing the foreign_
63a0: 6b 65 79 73 20 73 65 74 74 69 6e 67 20 61 66 66  keys setting aff
63b0: 65 63 74 73 20 74 68 65 20 65 78 65 63 75 74 69  ects the executi
63c0: 6f 6e 20 6f 66 0a 20 20 20 20 20 20 20 61 6c 6c  on of.       all
63d0: 20 73 74 61 74 65 6d 65 6e 74 73 20 70 72 65 70   statements prep
63e0: 61 72 65 64 0a 20 20 20 20 20 20 20 75 73 69 6e  ared.       usin
63f0: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  g the database c
6400: 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 6e 63 6c 75  onnection, inclu
6410: 64 69 6e 67 20 74 68 6f 73 65 20 70 72 65 70 61  ding those prepa
6420: 72 65 64 20 62 65 66 6f 72 65 20 74 68 65 0a 20  red before the. 
6430: 20 20 20 20 20 20 73 65 74 74 69 6e 67 20 77 61        setting wa
6440: 73 20 63 68 61 6e 67 65 64 2e 20 5e 41 6e 79 20  s changed. ^Any 
6450: 65 78 69 73 74 69 6e 67 20 73 74 61 74 65 6d 65  existing stateme
6460: 6e 74 73 20 70 72 65 70 61 72 65 64 20 75 73 69  nts prepared usi
6470: 6e 67 20 74 68 65 20 6c 65 67 61 63 79 20 0a 20  ng the legacy . 
6480: 20 20 20 20 20 20 5b 73 71 6c 69 74 65 33 5f 70        [sqlite3_p
6490: 72 65 70 61 72 65 28 29 5d 20 69 6e 74 65 72 66  repare()] interf
64a0: 61 63 65 20 6d 61 79 20 66 61 69 6c 20 77 69 74  ace may fail wit
64b0: 68 20 61 6e 20 5b 53 51 4c 49 54 45 5f 53 43 48  h an [SQLITE_SCH
64c0: 45 4d 41 5d 20 65 72 72 6f 72 0a 20 20 20 20 20  EMA] error.     
64d0: 20 20 61 66 74 65 72 20 74 68 65 20 66 6f 72 65    after the fore
64e0: 69 67 6e 5f 6b 65 79 73 20 73 65 74 74 69 6e 67  ign_keys setting
64f0: 20 69 73 20 63 68 61 6e 67 65 64 2e 0a 0a 20 20   is changed...  
6500: 20 20 3c 70 3e 5e 28 41 73 20 6f 66 20 53 51 4c    <p>^(As of SQL
6510: 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36  ite [version 3.6
6520: 2e 31 39 5d 2c 20 74 68 65 20 64 65 66 61 75 6c  .19], the defaul
6530: 74 20 73 65 74 74 69 6e 67 20 66 6f 72 20 66 6f  t setting for fo
6540: 72 65 69 67 6e 0a 20 20 20 20 20 20 20 6b 65 79  reign.       key
6550: 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 69 73 20   enforcement is 
6560: 4f 46 46 2e 29 5e 20 20 48 6f 77 65 76 65 72 2c  OFF.)^  However,
6570: 20 74 68 61 74 20 6d 69 67 68 74 20 63 68 61 6e   that might chan
6580: 67 65 20 69 6e 20 61 20 66 75 74 75 72 65 0a 20  ge in a future. 
6590: 20 20 20 20 20 20 72 65 6c 65 61 73 65 20 6f 66        release of
65a0: 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20 64 65   SQLite.  The de
65b0: 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 66 6f  fault setting fo
65c0: 72 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 65 6e  r foreign key en
65d0: 66 6f 72 63 65 6d 65 6e 74 0a 20 20 20 20 20 20  forcement.      
65e0: 20 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65   can be specifie
65f0: 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  d at compile-tim
6600: 65 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c  e using the [SQL
6610: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 4f 52 45  ITE_DEFAULT_FORE
6620: 49 47 4e 5f 4b 45 59 53 5d 0a 20 20 20 20 20 20  IGN_KEYS].      
6630: 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61   preprocessor ma
6640: 63 72 6f 2e 20 20 54 6f 20 6d 69 6e 69 6d 69 7a  cro.  To minimiz
6650: 65 20 66 75 74 75 72 65 20 70 72 6f 62 6c 65 6d  e future problem
6660: 73 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  s, applications 
6670: 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 20 73 65  should.       se
6680: 74 20 74 68 65 20 66 6f 72 65 69 67 6e 20 6b 65  t the foreign ke
6690: 79 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 66 6c  y enforcement fl
66a0: 61 67 20 61 73 20 72 65 71 75 69 72 65 64 20 62  ag as required b
66b0: 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
66c0: 6e 0a 20 20 20 20 20 20 20 61 6e 64 20 6e 6f 74  n.       and not
66d0: 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 64   depend on the d
66e0: 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 2e 0a  efault setting..
66f0: 7d 0a 0a 0a 4c 65 67 61 63 79 50 72 61 67 6d 61  }...LegacyPragma
6700: 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d   full_column_nam
6710: 65 73 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50  es {.    <p><b>P
6720: 52 41 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c 75 6d  RAGMA full_colum
6730: 6e 5f 6e 61 6d 65 73 3b 0a 20 20 20 20 20 20 20  n_names;.       
6740: 3c 62 72 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f  <br>PRAGMA full_
6750: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 3c  column_names = <
6760: 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69  /b><i>boolean</i
6770: 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20  ><b>;</b></p>.. 
6780: 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63     <p>Query or c
6790: 68 61 6e 67 65 20 74 68 65 20 66 75 6c 6c 5f 63  hange the full_c
67a0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 66 6c 61 67  olumn_names flag
67b0: 2e 20 54 68 69 73 20 66 6c 61 67 20 74 6f 67 65  . This flag toge
67c0: 74 68 65 72 20 0a 20 20 20 20 77 69 74 68 20 74  ther .    with t
67d0: 68 65 20 5b 73 68 6f 72 74 5f 63 6f 6c 75 6d 6e  he [short_column
67e0: 5f 6e 61 6d 65 73 5d 20 66 6c 61 67 20 64 65 74  _names] flag det
67f0: 65 72 6d 69 6e 65 0a 20 20 20 20 74 68 65 20 77  ermine.    the w
6800: 61 79 20 53 51 4c 69 74 65 20 61 73 73 69 67 6e  ay SQLite assign
6810: 73 20 6e 61 6d 65 73 20 74 6f 20 72 65 73 75 6c  s names to resul
6820: 74 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 5b 53 45  t columns of [SE
6830: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
6840: 2e 0a 20 20 20 20 52 65 73 75 6c 74 20 63 6f 6c  ..    Result col
6850: 75 6d 6e 73 20 61 72 65 20 6e 61 6d 65 64 20 62  umns are named b
6860: 79 20 61 70 70 6c 79 69 6e 67 20 74 68 65 20 66  y applying the f
6870: 6f 6c 6c 6f 77 69 6e 67 20 72 75 6c 65 73 20 69  ollowing rules i
6880: 6e 20 6f 72 64 65 72 3a 0a 20 20 20 20 3c 6f 6c  n order:.    <ol
6890: 3e 0a 20 20 20 20 3c 6c 69 3e 3c 70 3e 49 66 20  >.    <li><p>If 
68a0: 74 68 65 72 65 20 69 73 20 61 6e 20 41 53 20 63  there is an AS c
68b0: 6c 61 75 73 65 20 6f 6e 20 74 68 65 20 72 65 73  lause on the res
68c0: 75 6c 74 2c 20 74 68 65 6e 20 74 68 65 20 6e 61  ult, then the na
68d0: 6d 65 20 6f 66 0a 20 20 20 20 20 20 20 20 74 68  me of.        th
68e0: 65 20 63 6f 6c 75 6d 6e 20 69 73 20 74 68 65 20  e column is the 
68f0: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
6900: 6f 66 20 74 68 65 20 41 53 20 63 6c 61 75 73 65  of the AS clause
6910: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 20 20 20 20 3c  .</p></li>.    <
6920: 6c 69 3e 3c 70 3e 49 66 20 74 68 65 20 72 65 73  li><p>If the res
6930: 75 6c 74 20 69 73 20 61 20 67 65 6e 65 72 61 6c  ult is a general
6940: 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 6e 6f 74   expression, not
6950: 20 61 20 6a 75 73 74 20 74 68 65 20 6e 61 6d 65   a just the name
6960: 20 6f 66 0a 20 20 20 20 20 20 20 20 61 20 73 6f   of.        a so
6970: 75 72 63 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d  urce table colum
6980: 6e 2c 0a 20 20 20 20 20 20 20 20 74 68 65 6e 20  n,.        then 
6990: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
69a0: 72 65 73 75 6c 74 20 69 73 20 61 20 63 6f 70 79  result is a copy
69b0: 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69   of the expressi
69c0: 6f 6e 20 74 65 78 74 2e 3c 2f 70 3e 3c 2f 6c 69  on text.</p></li
69d0: 3e 0a 20 20 20 20 3c 6c 69 3e 3c 70 3e 49 66 20  >.    <li><p>If 
69e0: 74 68 65 20 5b 73 68 6f 72 74 5f 63 6f 6c 75 6d  the [short_colum
69f0: 6e 5f 6e 61 6d 65 73 5d 20 70 72 61 67 6d 61 20  n_names] pragma 
6a00: 69 73 20 4f 4e 2c 20 74 68 65 6e 20 74 68 65 20  is ON, then the 
6a10: 6e 61 6d 65 20 6f 66 20 74 68 65 0a 20 20 20 20  name of the.    
6a20: 20 20 20 20 72 65 73 75 6c 74 20 69 73 20 74 68      result is th
6a30: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 6f  e name of the so
6a40: 75 72 63 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d  urce table colum
6a50: 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 0a 20  n without the . 
6a60: 20 20 20 20 20 20 20 73 6f 75 72 63 65 20 74 61         source ta
6a70: 62 6c 65 20 6e 61 6d 65 20 70 72 65 66 69 78 3a  ble name prefix:
6a80: 20 20 43 4f 4c 55 4d 4e 2e 3c 2f 70 3e 3c 2f 6c    COLUMN.</p></l
6a90: 69 3e 0a 20 20 20 20 3c 6c 69 3e 3c 70 3e 49 66  i>.    <li><p>If
6aa0: 20 62 6f 74 68 20 70 72 61 67 6d 61 73 20 5b 73   both pragmas [s
6ab0: 68 6f 72 74 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  hort_column_name
6ac0: 73 5d 20 61 6e 64 20 5b 66 75 6c 6c 5f 63 6f 6c  s] and [full_col
6ad0: 75 6d 6e 5f 6e 61 6d 65 73 5d 0a 20 20 20 20 20  umn_names].     
6ae0: 20 20 20 61 72 65 20 4f 46 46 20 74 68 65 6e 20     are OFF then 
6af0: 63 61 73 65 20 28 32 29 20 61 70 70 6c 69 65 73  case (2) applies
6b00: 2e 0a 20 20 20 20 20 20 20 20 3c 2f 70 3e 3c 2f  ..        </p></
6b10: 6c 69 3e 0a 20 20 20 20 3c 6c 69 3e 3c 70 3e 54  li>.    <li><p>T
6b20: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 72  he name of the r
6b30: 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 69 73 20  esult column is 
6b40: 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66  a combination of
6b50: 20 74 68 65 20 73 6f 75 72 63 65 20 74 61 62 6c   the source tabl
6b60: 65 0a 20 20 20 20 20 20 20 20 61 6e 64 20 73 6f  e.        and so
6b70: 75 72 63 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  urce column name
6b80: 3a 20 20 54 41 42 4c 45 2e 43 4f 4c 55 4d 4e 3c  :  TABLE.COLUMN<
6b90: 2f 70 3e 3c 2f 6c 69 3e 0a 20 20 20 20 3c 2f 6f  /p></li>.    </o
6ba0: 6c 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41 49 4d  l>..    DISCLAIM
6bb0: 45 52 0a 7d 0a 0a 50 72 61 67 6d 61 20 66 75 6c  ER.}..Pragma ful
6bc0: 6c 66 73 79 6e 63 20 7b 0a 20 20 20 20 3c 70 3e  lfsync {.    <p>
6bd0: 5e 28 3c 62 3e 50 52 41 47 4d 41 20 66 75 6c 6c  ^(<b>PRAGMA full
6be0: 66 73 79 6e 63 0a 20 20 20 20 20 20 20 3c 62 72  fsync.       <br
6bf0: 3e 50 52 41 47 4d 41 20 66 75 6c 6c 66 73 79 6e  >PRAGMA fullfsyn
6c00: 63 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65  c = </b><i>boole
6c10: 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  an</i><b>;</b></
6c20: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
6c30: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 66 75  or change the fu
6c40: 6c 6c 66 73 79 6e 63 20 66 6c 61 67 2e 29 5e 20  llfsync flag.)^ 
6c50: 5e 54 68 69 73 20 66 6c 61 67 0a 20 20 20 20 64  ^This flag.    d
6c60: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
6c70: 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 46 5f 46  r or not the F_F
6c80: 55 4c 4c 46 53 59 4e 43 20 73 79 6e 63 69 6e 67  ULLFSYNC syncing
6c90: 20 6d 65 74 68 6f 64 20 69 73 20 75 73 65 64 0a   method is used.
6ca0: 20 20 20 20 6f 6e 20 73 79 73 74 65 6d 73 20 74      on systems t
6cb0: 68 61 74 20 73 75 70 70 6f 72 74 20 69 74 2e 20  hat support it. 
6cc0: 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 76 61   ^The default va
6cd0: 6c 75 65 20 6f 66 20 74 68 65 20 66 75 6c 6c 66  lue of the fullf
6ce0: 73 79 6e 63 20 66 6c 61 67 0a 20 20 20 20 69 73  sync flag.    is
6cf0: 20 6f 66 66 2e 20 20 4f 6e 6c 79 20 4d 61 63 20   off.  Only Mac 
6d00: 4f 53 20 58 20 73 75 70 70 6f 72 74 73 20 46 5f  OS X supports F_
6d10: 46 55 4c 4c 46 53 59 4e 43 2e 3c 2f 70 3e 0a 0a  FULLFSYNC.</p>..
6d20: 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 20      <p>See also 
6d30: 5b 63 68 65 63 6b 70 6f 69 6e 74 5f 66 75 6c 6c  [checkpoint_full
6d40: 66 73 79 6e 63 5d 2e 3c 2f 70 3e 0a 7d 0a 0a 50  fsync].</p>.}..P
6d50: 72 61 67 6d 61 20 69 6e 63 72 65 6d 65 6e 74 61  ragma incrementa
6d60: 6c 5f 76 61 63 75 75 6d 20 7b 0a 20 20 20 20 5e  l_vacuum {.    ^
6d70: 28 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 44 42  (<p><b>PRAGMA DB
6d80: 2e 69 6e 63 72 65 6d 65 6e 74 61 6c 5f 76 61 63  .incremental_vac
6d90: 75 75 6d 3c 2f 62 3e 3c 69 3e 28 4e 29 3c 2f 69  uum</b><i>(N)</i
6da0: 3e 3c 62 3e 3b 3c 62 72 3e 0a 20 20 20 20 20 20  ><b>;<br>.      
6db0: 50 52 41 47 4d 41 20 44 42 2e 69 6e 63 72 65 6d  PRAGMA DB.increm
6dc0: 65 6e 74 61 6c 5f 76 61 63 75 75 6d 3b 3c 2f 62  ental_vacuum;</b
6dd0: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 65  ></p>.    <p>The
6de0: 20 69 6e 63 72 65 6d 65 6e 74 61 6c 5f 76 61 63   incremental_vac
6df0: 75 75 6d 20 70 72 61 67 6d 61 20 63 61 75 73 65  uum pragma cause
6e00: 73 20 75 70 20 74 6f 20 3c 69 3e 4e 3c 2f 69 3e  s up to <i>N</i>
6e10: 20 70 61 67 65 73 20 74 6f 0a 20 20 20 20 62 65   pages to.    be
6e20: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68   removed from th
6e30: 65 20 5b 66 72 65 65 6c 69 73 74 5d 2e 29 5e 20  e [freelist].)^ 
6e40: 20 5e 54 68 65 20 64 61 74 61 62 61 73 65 20 66   ^The database f
6e50: 69 6c 65 20 69 73 20 74 72 75 6e 63 61 74 65 64  ile is truncated
6e60: 20 62 79 0a 20 20 20 20 74 68 65 20 73 61 6d 65   by.    the same
6e70: 20 61 6d 6f 75 6e 74 2e 20 20 5e 54 68 65 20 69   amount.  ^The i
6e80: 6e 63 72 65 6d 65 6e 74 61 6c 5f 76 61 63 75 75  ncremental_vacuu
6e90: 6d 20 70 72 61 67 6d 61 20 68 61 73 20 6e 6f 20  m pragma has no 
6ea0: 65 66 66 65 63 74 20 69 66 0a 20 20 20 20 74 68  effect if.    th
6eb0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f  e database is no
6ec0: 74 20 69 6e 0a 20 20 20 20 3c 61 20 68 72 65 66  t in.    <a href
6ed0: 3d 22 23 70 72 61 67 6d 61 5f 61 75 74 6f 5f 76  ="#pragma_auto_v
6ee0: 61 63 75 75 6d 22 3e 61 75 74 6f 5f 76 61 63 75  acuum">auto_vacu
6ef0: 75 6d 3d 69 6e 63 72 65 6d 65 6e 74 61 6c 3c 2f  um=incremental</
6f00: 61 3e 20 6d 6f 64 65 0a 20 20 20 20 6f 72 20 69  a> mode.    or i
6f10: 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 70  f there are no p
6f20: 61 67 65 73 20 6f 6e 20 74 68 65 20 66 72 65 65  ages on the free
6f30: 6c 69 73 74 2e 20 20 5e 49 66 20 74 68 65 72 65  list.  ^If there
6f40: 20 61 72 65 20 66 65 77 65 72 20 74 68 61 6e 0a   are fewer than.
6f50: 20 20 20 20 3c 69 3e 4e 3c 2f 69 3e 20 70 61 67      <i>N</i> pag
6f60: 65 73 20 6f 6e 20 74 68 65 20 66 72 65 65 6c 69  es on the freeli
6f70: 73 74 2c 20 6f 72 20 69 66 20 3c 69 3e 4e 3c 2f  st, or if <i>N</
6f80: 69 3e 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20  i> is less than 
6f90: 31 2c 20 6f 72 0a 20 20 20 20 69 66 20 74 68 65  1, or.    if the
6fa0: 20 22 28 3c 69 3e 4e 3c 2f 69 3e 29 22 20 61 72   "(<i>N</i>)" ar
6fb0: 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65  gument is omitte
6fc0: 64 2c 20 74 68 65 6e 20 74 68 65 20 65 6e 74 69  d, then the enti
6fd0: 72 65 0a 20 20 20 20 66 72 65 65 6c 69 73 74 20  re.    freelist 
6fe0: 69 73 20 63 6c 65 61 72 65 64 2e 3c 2f 70 3e 0a  is cleared.</p>.
6ff0: 7d 0a 0a 50 72 61 67 6d 61 20 6a 6f 75 72 6e 61  }..Pragma journa
7000: 6c 5f 6d 6f 64 65 20 7b 0a 20 20 20 20 3c 70 3e  l_mode {.    <p>
7010: 5e 28 3c 62 3e 50 52 41 47 4d 41 20 44 42 2e 6a  ^(<b>PRAGMA DB.j
7020: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3b 0a 20 20 20  ournal_mode;.   
7030: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
7040: 44 42 2e 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 0a  DB.journal_mode.
7050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
7060: 3c 69 3e 44 45 4c 45 54 45 20 7c 20 54 52 55 4e  <i>DELETE | TRUN
7070: 43 41 54 45 20 7c 20 50 45 52 53 49 53 54 20 7c  CATE | PERSIST |
7080: 20 4d 45 4d 4f 52 59 20 7c 20 57 41 4c 20 7c 20   MEMORY | WAL | 
7090: 4f 46 46 3c 2f 69 3e 3c 2f 62 3e 3c 2f 70 3e 0a  OFF</i></b></p>.
70a0: 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61  .    <p>This pra
70b0: 67 6d 61 20 71 75 65 72 69 65 73 20 6f 72 20 73  gma queries or s
70c0: 65 74 73 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  ets the journal 
70d0: 6d 6f 64 65 20 66 6f 72 20 64 61 74 61 62 61 73  mode for databas
70e0: 65 73 0a 20 20 20 20 61 73 73 6f 63 69 61 74 65  es.    associate
70f0: 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65  d with the curre
7100: 6e 74 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  nt [database con
7110: 6e 65 63 74 69 6f 6e 5d 2e 3c 2f 70 3e 29 5e 0a  nection].</p>)^.
7120: 0a 20 20 20 20 3c 70 3e 5e 54 68 65 20 66 69 72  .    <p>^The fir
7130: 73 74 20 66 6f 72 6d 20 6f 66 20 74 68 69 73 20  st form of this 
7140: 70 72 61 67 6d 61 20 71 75 65 72 69 65 73 20 74  pragma queries t
7150: 68 65 20 63 75 72 72 65 6e 74 20 6a 6f 75 72 6e  he current journ
7160: 61 6c 69 6e 67 0a 20 20 20 20 6d 6f 64 65 20 66  aling.    mode f
7170: 6f 72 20 3c 69 3e 64 61 74 61 62 61 73 65 3c 2f  or <i>database</
7180: 69 3e 2e 20 20 5e 57 68 65 6e 20 3c 69 3e 64 61  i>.  ^When <i>da
7190: 74 61 62 61 73 65 3c 2f 69 3e 20 69 73 20 6f 6d  tabase</i> is om
71a0: 69 74 74 65 64 2c 20 74 68 65 0a 20 20 20 20 22  itted, the.    "
71b0: 6d 61 69 6e 22 20 64 61 74 61 62 61 73 65 20 69  main" database i
71c0: 73 20 71 75 65 72 69 65 64 2e 3c 2f 70 3e 0a 0a  s queried.</p>..
71d0: 20 20 20 20 3c 70 3e 5e 54 68 65 20 73 65 63 6f      <p>^The seco
71e0: 6e 64 20 66 6f 72 6d 20 63 68 61 6e 67 65 73 20  nd form changes 
71f0: 74 68 65 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d  the journaling m
7200: 6f 64 65 20 66 6f 72 20 22 3c 69 3e 64 61 74 61  ode for "<i>data
7210: 62 61 73 65 3c 2f 69 3e 22 0a 20 20 20 20 6f 72  base</i>".    or
7220: 20 66 6f 72 20 61 6c 6c 20 61 74 74 61 63 68 65   for all attache
7230: 64 20 64 61 74 61 62 61 73 65 73 20 69 66 20 22  d databases if "
7240: 3c 69 3e 64 61 74 61 62 61 73 65 3c 2f 69 3e 22  <i>database</i>"
7250: 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 20 20 20   is omitted..   
7260: 20 5e 54 68 65 20 6e 65 77 20 6a 6f 75 72 6e 61   ^The new journa
7270: 6c 20 6d 6f 64 65 20 69 73 20 72 65 74 75 72 6e  l mode is return
7280: 65 64 2e 20 20 5e 49 66 20 74 68 65 20 6a 6f 75  ed.  ^If the jou
7290: 72 6e 61 6c 20 6d 6f 64 65 0a 20 20 20 20 63 6f  rnal mode.    co
72a0: 75 6c 64 20 6e 6f 74 20 62 65 20 63 68 61 6e 67  uld not be chang
72b0: 65 64 2c 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  ed, the original
72c0: 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 69 73   journal mode is
72d0: 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 0a   returned.</p>..
72e0: 20 20 20 20 3c 70 3e 5e 54 68 65 20 44 45 4c 45      <p>^The DELE
72f0: 54 45 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  TE journaling mo
7300: 64 65 20 69 73 20 74 68 65 20 6e 6f 72 6d 61 6c  de is the normal
7310: 20 62 65 68 61 76 69 6f 72 2e 20 20 5e 49 6e 20   behavior.  ^In 
7320: 74 68 65 20 44 45 4c 45 54 45 0a 20 20 20 20 6d  the DELETE.    m
7330: 6f 64 65 2c 20 74 68 65 20 72 6f 6c 6c 62 61 63  ode, the rollbac
7340: 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 64 65 6c  k journal is del
7350: 65 74 65 64 20 61 74 20 74 68 65 20 63 6f 6e 63  eted at the conc
7360: 6c 75 73 69 6f 6e 20 6f 66 20 65 61 63 68 0a 20  lusion of each. 
7370: 20 20 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20     transaction. 
7380: 20 49 6e 64 65 65 64 2c 20 74 68 65 20 64 65 6c   Indeed, the del
7390: 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73  ete operation is
73a0: 20 74 68 65 20 61 63 74 69 6f 6e 20 74 68 61 74   the action that
73b0: 20 63 61 75 73 65 73 0a 20 20 20 20 74 68 65 20   causes.    the 
73c0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 63  transaction to c
73d0: 6f 6d 6d 69 74 2e 0a 20 20 20 20 28 53 65 65 20  ommit..    (See 
73e0: 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 74 69 74  the document tit
73f0: 6c 65 64 20 3c 61 20 68 72 65 66 3d 22 61 74 6f  led <a href="ato
7400: 6d 69 63 63 6f 6d 6d 69 74 2e 68 74 6d 6c 22 3e  miccommit.html">
7410: 0a 20 20 20 20 41 74 6f 6d 69 63 20 43 6f 6d 6d  .    Atomic Comm
7420: 69 74 20 49 6e 20 53 51 4c 69 74 65 3c 2f 61 3e  it In SQLite</a>
7430: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
7440: 64 65 74 61 69 6c 2e 29 3c 2f 70 3e 0a 0a 20 20  detail.)</p>..  
7450: 20 20 3c 70 3e 5e 54 68 65 20 54 52 55 4e 43 41    <p>^The TRUNCA
7460: 54 45 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  TE journaling mo
7470: 64 65 20 63 6f 6d 6d 69 74 73 20 74 72 61 6e 73  de commits trans
7480: 61 63 74 69 6f 6e 73 20 62 79 20 74 72 75 6e 63  actions by trunc
7490: 61 74 69 6e 67 0a 20 20 20 20 74 68 65 20 72 6f  ating.    the ro
74a0: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 74  llback journal t
74b0: 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e  o zero-length in
74c0: 73 74 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e  stead of deletin
74d0: 67 20 69 74 2e 20 20 4f 6e 20 6d 61 6e 79 0a 20  g it.  On many. 
74e0: 20 20 20 73 79 73 74 65 6d 73 2c 20 74 72 75 6e     systems, trun
74f0: 63 61 74 69 6e 67 20 61 20 66 69 6c 65 20 69 73  cating a file is
7500: 20 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61   much faster tha
7510: 6e 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 66  n deleting the f
7520: 69 6c 65 20 73 69 6e 63 65 0a 20 20 20 20 74 68  ile since.    th
7530: 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 64 69 72  e containing dir
7540: 65 63 74 6f 72 79 20 64 6f 65 73 20 6e 6f 74 20  ectory does not 
7550: 6e 65 65 64 20 74 6f 20 62 65 20 63 68 61 6e 67  need to be chang
7560: 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e  ed.</p>..    <p>
7570: 5e 28 54 68 65 20 50 45 52 53 49 53 54 20 6a 6f  ^(The PERSIST jo
7580: 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 70 72  urnaling mode pr
7590: 65 76 65 6e 74 73 20 74 68 65 20 72 6f 6c 6c 62  events the rollb
75a0: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 66 72 6f 6d  ack journal from
75b0: 0a 20 20 20 20 62 65 69 6e 67 20 64 65 6c 65 74  .    being delet
75c0: 65 64 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66  ed at the end of
75d0: 20 65 61 63 68 20 74 72 61 6e 73 61 63 74 69 6f   each transactio
75e0: 6e 2e 20 20 49 6e 73 74 65 61 64 2c 20 74 68 65  n.  Instead, the
75f0: 20 68 65 61 64 65 72 0a 20 20 20 20 6f 66 20 74   header.    of t
7600: 68 65 20 6a 6f 75 72 6e 61 6c 20 69 73 20 6f 76  he journal is ov
7610: 65 72 77 72 69 74 74 65 6e 20 77 69 74 68 20 7a  erwritten with z
7620: 65 72 6f 73 2e 29 5e 20 20 54 68 69 73 20 77 69  eros.)^  This wi
7630: 6c 6c 20 70 72 65 76 65 6e 74 20 6f 74 68 65 72  ll prevent other
7640: 0a 20 20 20 20 64 61 74 61 62 61 73 65 20 63 6f  .    database co
7650: 6e 6e 65 63 74 69 6f 6e 73 20 66 72 6f 6d 20 72  nnections from r
7660: 6f 6c 6c 69 6e 67 20 74 68 65 20 6a 6f 75 72 6e  olling the journ
7670: 61 6c 20 62 61 63 6b 2e 20 20 54 68 65 20 50 45  al back.  The PE
7680: 52 53 49 53 54 0a 20 20 20 20 6a 6f 75 72 6e 61  RSIST.    journa
7690: 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 75 73 65  ling mode is use
76a0: 66 75 6c 20 61 73 20 61 6e 20 6f 70 74 69 6d 69  ful as an optimi
76b0: 7a 61 74 69 6f 6e 20 6f 6e 20 70 6c 61 74 66 6f  zation on platfo
76c0: 72 6d 73 20 77 68 65 72 65 0a 20 20 20 20 64 65  rms where.    de
76d0: 6c 65 74 69 6e 67 20 6f 72 20 74 72 75 6e 63 61  leting or trunca
76e0: 74 69 6e 67 20 61 20 66 69 6c 65 20 69 73 20 6d  ting a file is m
76f0: 75 63 68 20 6d 6f 72 65 20 65 78 70 65 6e 73 69  uch more expensi
7700: 76 65 20 74 68 61 6e 20 6f 76 65 72 77 72 69 74  ve than overwrit
7710: 69 6e 67 0a 20 20 20 20 74 68 65 20 66 69 72 73  ing.    the firs
7720: 74 20 62 6c 6f 63 6b 20 6f 66 20 61 20 66 69 6c  t block of a fil
7730: 65 20 77 69 74 68 20 7a 65 72 6f 73 2e 20 20 53  e with zeros.  S
7740: 65 65 20 61 6c 73 6f 3a 0a 20 20 20 20 5b 50 52  ee also:.    [PR
7750: 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 73 69 7a  AGMA journal_siz
7760: 65 5f 6c 69 6d 69 74 5d 20 61 6e 64 20 5b 53 51  e_limit] and [SQ
7770: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55  LITE_DEFAULT_JOU
7780: 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d  RNAL_SIZE_LIMIT]
7790: 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54  .</p>..    <p>^T
77a0: 68 65 20 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e 61  he MEMORY journa
77b0: 6c 69 6e 67 20 6d 6f 64 65 20 73 74 6f 72 65 73  ling mode stores
77c0: 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f   the rollback jo
77d0: 75 72 6e 61 6c 20 69 6e 20 0a 20 20 20 20 76 6f  urnal in .    vo
77e0: 6c 61 74 69 6c 65 20 52 41 4d 2e 20 20 5e 54 68  latile RAM.  ^Th
77f0: 69 73 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f  is saves disk I/
7800: 4f 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70  O but at the exp
7810: 65 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65  ense of database
7820: 0a 20 20 20 20 73 61 66 65 74 79 20 61 6e 64 20  .    safety and 
7830: 69 6e 74 65 67 72 69 74 79 2e 20 20 5e 49 66 20  integrity.  ^If 
7840: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
7850: 75 73 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61  using SQLite cra
7860: 73 68 65 73 20 69 6e 0a 20 20 20 20 74 68 65 20  shes in.    the 
7870: 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e  middle of a tran
7880: 73 61 63 74 69 6f 6e 20 77 68 65 6e 20 74 68 65  saction when the
7890: 20 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69   MEMORY journali
78a0: 6e 67 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 0a  ng mode is set,.
78b0: 20 20 20 20 74 68 65 6e 20 74 68 65 20 64 61 74      then the dat
78c0: 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c 20  abase file will 
78d0: 76 65 72 79 20 6c 69 6b 65 6c 79 20 0a 20 20 20  very likely .   
78e0: 20 5b 63 66 67 65 72 72 6f 72 73 7c 67 6f 20 63   [cfgerrors|go c
78f0: 6f 72 72 75 70 74 5d 2e 3c 2f 70 3e 0a 0a 20 20  orrupt].</p>..  
7900: 20 20 3c 70 3e 5e 54 68 65 20 57 41 4c 20 6a 6f    <p>^The WAL jo
7910: 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 75 73  urnaling mode us
7920: 65 73 20 61 20 5b 77 72 69 74 65 2d 61 68 65 61  es a [write-ahea
7930: 64 20 6c 6f 67 5d 20 69 6e 73 74 65 61 64 20 6f  d log] instead o
7940: 66 20 61 0a 20 20 20 20 72 6f 6c 6c 62 61 63 6b  f a.    rollback
7950: 20 6a 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c   journal to impl
7960: 65 6d 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  ement transactio
7970: 6e 73 2e 20 20 5e 54 68 65 20 57 41 4c 20 6a 6f  ns.  ^The WAL jo
7980: 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 0a 20 20  urnaling mode.  
7990: 20 20 69 73 20 70 65 72 73 69 73 74 65 6e 74 3b    is persistent;
79a0: 20 61 66 74 65 72 20 62 65 69 6e 67 20 73 65 74   after being set
79b0: 20 69 74 20 73 74 61 79 73 20 69 6e 20 65 66 66   it stays in eff
79c0: 65 63 74 0a 20 20 20 20 61 63 72 6f 73 73 20 6d  ect.    across m
79d0: 75 6c 74 69 70 6c 65 20 64 61 74 61 62 61 73 65  ultiple database
79e0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64   connections and
79f0: 20 61 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61   after closing a
7a00: 6e 64 0a 20 20 20 20 72 65 6f 70 65 6e 69 6e 67  nd.    reopening
7a10: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
7a20: 41 20 64 61 74 61 62 61 73 65 20 69 6e 20 57 41  A database in WA
7a30: 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64  L journaling mod
7a40: 65 0a 20 20 20 20 63 61 6e 20 6f 6e 6c 79 20 62  e.    can only b
7a50: 65 20 61 63 63 65 73 73 65 64 20 62 79 20 53 51  e accessed by SQ
7a60: 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e  Lite [version 3.
7a70: 37 2e 30 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  7.0] ([dateof:3.
7a80: 37 2e 30 5d 29 0a 20 20 20 20 6f 72 20 6c 61 74  7.0]).    or lat
7a90: 65 72 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e  er.</p>..    <p>
7aa0: 5e 54 68 65 20 4f 46 46 20 6a 6f 75 72 6e 61 6c  ^The OFF journal
7ab0: 69 6e 67 20 6d 6f 64 65 20 64 69 73 61 62 6c 65  ing mode disable
7ac0: 73 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a  s the rollback j
7ad0: 6f 75 72 6e 61 6c 20 63 6f 6d 70 6c 65 74 65 6c  ournal completel
7ae0: 79 2e 0a 20 20 20 20 5e 4e 6f 20 72 6f 6c 6c 62  y..    ^No rollb
7af0: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 69 73 20 65  ack journal is e
7b00: 76 65 72 20 63 72 65 61 74 65 64 20 61 6e 64 20  ver created and 
7b10: 68 65 6e 63 65 20 74 68 65 72 65 20 69 73 20 6e  hence there is n
7b20: 65 76 65 72 20 61 20 72 6f 6c 6c 62 61 63 6b 0a  ever a rollback.
7b30: 20 20 20 20 6a 6f 75 72 6e 61 6c 20 74 6f 20 64      journal to d
7b40: 65 6c 65 74 65 2e 20 20 54 68 65 20 4f 46 46 20  elete.  The OFF 
7b50: 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20  journaling mode 
7b60: 64 69 73 61 62 6c 65 73 20 74 68 65 20 61 74 6f  disables the ato
7b70: 6d 69 63 0a 20 20 20 20 63 6f 6d 6d 69 74 20 61  mic.    commit a
7b80: 6e 64 20 72 6f 6c 6c 62 61 63 6b 20 63 61 70 61  nd rollback capa
7b90: 62 69 6c 69 74 69 65 73 20 6f 66 20 53 51 4c 69  bilities of SQLi
7ba0: 74 65 2e 20 54 68 65 20 5b 52 4f 4c 4c 42 41 43  te. The [ROLLBAC
7bb0: 4b 5d 20 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 6e  K] command.    n
7bc0: 6f 20 6c 6f 6e 67 65 72 20 77 6f 72 6b 73 3b 20  o longer works; 
7bd0: 69 74 20 62 65 68 61 76 65 73 20 69 6e 20 61 6e  it behaves in an
7be0: 20 75 6e 64 65 66 69 6e 65 64 20 77 61 79 2e 20   undefined way. 
7bf0: 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75   Applications mu
7c00: 73 74 0a 20 20 20 20 61 76 6f 69 64 20 75 73 69  st.    avoid usi
7c10: 6e 67 20 74 68 65 20 5b 52 4f 4c 4c 42 41 43 4b  ng the [ROLLBACK
7c20: 5d 20 63 6f 6d 6d 61 6e 64 20 77 68 65 6e 20 74  ] command when t
7c30: 68 65 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20  he journal mode 
7c40: 69 73 20 4f 46 46 2e 0a 20 20 20 20 5e 49 66 20  is OFF..    ^If 
7c50: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
7c60: 63 72 61 73 68 65 73 0a 20 20 20 20 69 6e 20 74  crashes.    in t
7c70: 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74  he middle of a t
7c80: 72 61 6e 73 61 63 74 69 6f 6e 20 77 68 65 6e 20  ransaction when 
7c90: 74 68 65 20 4f 46 46 20 6a 6f 75 72 6e 61 6c 69  the OFF journali
7ca0: 6e 67 20 6d 6f 64 65 20 69 73 0a 20 20 20 20 73  ng mode is.    s
7cb0: 65 74 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74  et, then the dat
7cc0: 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c 20  abase file will 
7cd0: 76 65 72 79 20 6c 69 6b 65 6c 79 0a 20 20 20 20  very likely.    
7ce0: 5b 63 66 67 65 72 72 6f 72 73 7c 67 6f 20 63 6f  [cfgerrors|go co
7cf0: 72 72 75 70 74 5d 2e 3c 2f 70 3e 0a 0a 20 20 20  rrupt].</p>..   
7d00: 20 3c 70 3e 5e 4e 6f 74 65 20 74 68 61 74 20 74   <p>^Note that t
7d10: 68 65 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  he journal_mode 
7d20: 66 6f 72 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72  for an [in-memor
7d30: 79 20 64 61 74 61 62 61 73 65 5d 0a 20 20 20 20  y database].    
7d40: 69 73 20 65 69 74 68 65 72 20 4d 45 4d 4f 52 59  is either MEMORY
7d50: 20 6f 72 20 4f 46 46 20 61 6e 64 20 63 61 6e 20   or OFF and can 
7d60: 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64 20 74  not be changed t
7d70: 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20 76 61  o a different va
7d80: 6c 75 65 2e 0a 20 20 20 20 5e 41 6e 20 61 74 74  lue..    ^An att
7d90: 65 6d 70 74 20 74 6f 20 63 68 61 6e 67 65 20 74  empt to change t
7da0: 68 65 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  he journal_mode 
7db0: 6f 66 20 61 6e 20 5b 69 6e 2d 6d 65 6d 6f 72 79  of an [in-memory
7dc0: 20 64 61 74 61 62 61 73 65 5d 20 74 6f 0a 20 20   database] to.  
7dd0: 20 20 61 6e 79 20 73 65 74 74 69 6e 67 20 6f 74    any setting ot
7de0: 68 65 72 20 74 68 61 6e 20 4d 45 4d 4f 52 59 20  her than MEMORY 
7df0: 6f 72 20 4f 46 46 20 69 73 20 69 67 6e 6f 72 65  or OFF is ignore
7e00: 64 2e 20 20 5e 4e 6f 74 65 20 61 6c 73 6f 20 74  d.  ^Note also t
7e10: 68 61 74 0a 20 20 20 20 74 68 65 20 6a 6f 75 72  hat.    the jour
7e20: 6e 61 6c 5f 6d 6f 64 65 20 63 61 6e 6e 6f 74 20  nal_mode cannot 
7e30: 62 65 20 63 68 61 6e 67 65 64 20 77 68 69 6c 65  be changed while
7e40: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69   a transaction i
7e50: 73 20 61 63 74 69 76 65 2e 3c 2f 70 3e 0a 7d 0a  s active.</p>.}.
7e60: 0a 50 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f  .Pragma journal_
7e70: 73 69 7a 65 5f 6c 69 6d 69 74 20 7b 0a 20 20 20  size_limit {.   
7e80: 20 3c 70 3e 3c 62 3e 0a 20 20 20 20 50 52 41 47   <p><b>.    PRAG
7e90: 4d 41 20 44 42 2e 6a 6f 75 72 6e 61 6c 5f 73 69  MA DB.journal_si
7ea0: 7a 65 5f 6c 69 6d 69 74 3c 62 72 3e 0a 20 20 20  ze_limit<br>.   
7eb0: 20 50 52 41 47 4d 41 20 44 42 2e 6a 6f 75 72 6e   PRAGMA DB.journ
7ec0: 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74 20 3d 20  al_size_limit = 
7ed0: 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 20 3c 62 3e  </b><i>N</i> <b>
7ee0: 3b 3c 2f 62 3e 0a 0a 20 20 3c 70 3e 5e 49 66 20  ;</b>..  <p>^If 
7ef0: 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  a database conne
7f00: 63 74 69 6f 6e 20 69 73 20 6f 70 65 72 61 74 69  ction is operati
7f10: 6e 67 20 69 6e 0a 20 20 5b 6c 6f 63 6b 69 6e 67  ng in.  [locking
7f20: 5f 6d 6f 64 65 20 7c 20 65 78 63 6c 75 73 69 76  _mode | exclusiv
7f30: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 5d 20  e locking mode] 
7f40: 6f 72 20 69 6e 0a 20 20 5b 6a 6f 75 72 6e 61 6c  or in.  [journal
7f50: 5f 6d 6f 64 65 20 7c 20 70 65 72 73 69 73 74 65  _mode | persiste
7f60: 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 5d  nt journal mode]
7f70: 20 0a 20 20 28 50 52 41 47 4d 41 20 6a 6f 75 72   .  (PRAGMA jour
7f80: 6e 61 6c 5f 6d 6f 64 65 3d 70 65 72 73 69 73 74  nal_mode=persist
7f90: 29 20 74 68 65 6e 0a 20 20 61 66 74 65 72 20 63  ) then.  after c
7fa0: 6f 6d 6d 69 74 74 69 6e 67 20 61 20 74 72 61 6e  ommitting a tran
7fb0: 73 61 63 74 69 6f 6e 20 74 68 65 20 5b 72 6f 6c  saction the [rol
7fc0: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 66  lback journal] f
7fd0: 69 6c 65 20 6d 61 79 20 72 65 6d 61 69 6e 20 69  ile may remain i
7fe0: 6e 0a 20 20 74 68 65 20 66 69 6c 65 2d 73 79 73  n.  the file-sys
7ff0: 74 65 6d 2e 20 54 68 69 73 20 69 6e 63 72 65 61  tem. This increa
8000: 73 65 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ses performance 
8010: 66 6f 72 20 73 75 62 73 65 71 75 65 6e 74 20 74  for subsequent t
8020: 72 61 6e 73 61 63 74 69 6f 6e 73 0a 20 20 73 69  ransactions.  si
8030: 6e 63 65 20 6f 76 65 72 77 72 69 74 69 6e 67 20  nce overwriting 
8040: 61 6e 20 65 78 69 73 74 69 6e 67 20 66 69 6c 65  an existing file
8050: 20 69 73 20 66 61 73 74 65 72 20 74 68 61 6e 20   is faster than 
8060: 61 70 70 65 6e 64 20 74 6f 20 61 20 66 69 6c 65  append to a file
8070: 2c 0a 20 20 62 75 74 20 69 74 20 61 6c 73 6f 20  ,.  but it also 
8080: 63 6f 6e 73 75 6d 65 73 0a 20 20 66 69 6c 65 2d  consumes.  file-
8090: 73 79 73 74 65 6d 20 73 70 61 63 65 2e 20 41 66  system space. Af
80a0: 74 65 72 20 61 20 6c 61 72 67 65 20 74 72 61 6e  ter a large tran
80b0: 73 61 63 74 69 6f 6e 20 28 65 2e 67 2e 20 61 20  saction (e.g. a 
80c0: 5b 56 41 43 55 55 4d 5d 29 2c 0a 20 20 74 68 65  [VACUUM]),.  the
80d0: 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
80e0: 6c 20 66 69 6c 65 20 6d 61 79 20 63 6f 6e 73 75  l file may consu
80f0: 6d 65 20 61 20 76 65 72 79 20 6c 61 72 67 65 20  me a very large 
8100: 61 6d 6f 75 6e 74 20 6f 66 20 73 70 61 63 65 2e  amount of space.
8110: 0a 0a 20 20 3c 70 3e 53 69 6d 69 6c 61 72 6c 79  ..  <p>Similarly
8120: 2c 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2c  , in [WAL mode],
8130: 20 74 68 65 20 77 72 69 74 65 2d 61 68 65 61 64   the write-ahead
8140: 20 6c 6f 67 20 66 69 6c 65 20 69 73 20 6e 6f 74   log file is not
8150: 20 74 72 75 6e 63 61 74 65 64 0a 20 20 66 6f 6c   truncated.  fol
8160: 6c 6f 77 69 6e 67 20 61 20 5b 63 68 65 63 6b 70  lowing a [checkp
8170: 6f 69 6e 74 5d 2e 20 20 49 6e 73 74 65 61 64 2c  oint].  Instead,
8180: 20 53 51 4c 69 74 65 20 72 65 75 73 65 73 20 74   SQLite reuses t
8190: 68 65 20 65 78 69 73 74 69 6e 67 20 66 69 6c 65  he existing file
81a0: 0a 20 20 66 6f 72 20 73 75 62 73 65 71 75 65 6e  .  for subsequen
81b0: 74 20 57 41 4c 20 65 6e 74 72 69 65 73 20 73 69  t WAL entries si
81c0: 6e 63 65 20 6f 76 65 72 77 72 69 74 69 6e 67 20  nce overwriting 
81d0: 69 73 20 66 61 73 74 65 72 20 74 68 61 6e 20 61  is faster than a
81e0: 70 70 65 6e 64 69 6e 67 2e 0a 0a 20 20 3c 70 3e  ppending...  <p>
81f0: 5e 54 68 65 20 6a 6f 75 72 6e 61 6c 5f 73 69 7a  ^The journal_siz
8200: 65 5f 6c 69 6d 69 74 20 70 72 61 67 6d 61 20 6d  e_limit pragma m
8210: 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69  ay be used to li
8220: 6d 69 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20  mit the size of 
8230: 0a 20 20 72 6f 6c 6c 62 61 63 6b 2d 6a 6f 75 72  .  rollback-jour
8240: 6e 61 6c 20 61 6e 64 20 57 41 4c 20 66 69 6c 65  nal and WAL file
8250: 73 20 6c 65 66 74 0a 20 20 69 6e 20 74 68 65 20  s left.  in the 
8260: 66 69 6c 65 2d 73 79 73 74 65 6d 20 61 66 74 65  file-system afte
8270: 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f  r transactions o
8280: 72 20 63 68 65 63 6b 70 6f 69 6e 74 73 2e 0a 20  r checkpoints.. 
8290: 20 5e 45 61 63 68 20 74 69 6d 65 20 61 20 74 72   ^Each time a tr
82a0: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 6f 6d  ansaction is com
82b0: 6d 69 74 74 65 64 20 6f 72 20 61 20 57 41 4c 20  mitted or a WAL 
82c0: 66 69 6c 65 20 72 65 73 65 74 73 2c 20 53 51 4c  file resets, SQL
82d0: 69 74 65 20 0a 20 20 63 6f 6d 70 61 72 65 73 20  ite .  compares 
82e0: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
82f0: 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c  rollback journal
8300: 20 66 69 6c 65 20 6f 72 20 57 41 4c 20 66 69 6c   file or WAL fil
8310: 65 20 6c 65 66 74 20 69 6e 20 0a 20 20 74 68 65  e left in .  the
8320: 20 66 69 6c 65 2d 73 79 73 74 65 6d 20 74 6f 20   file-system to 
8330: 74 68 65 20 73 69 7a 65 20 6c 69 6d 69 74 0a 20  the size limit. 
8340: 20 73 65 74 20 62 79 20 74 68 69 73 20 70 72 61   set by this pra
8350: 67 6d 61 20 61 6e 64 20 69 66 20 74 68 65 20 6a  gma and if the j
8360: 6f 75 72 6e 61 6c 20 6f 72 20 57 41 4c 20 66 69  ournal or WAL fi
8370: 6c 65 20 69 73 20 6c 61 72 67 65 72 20 0a 20 20  le is larger .  
8380: 69 74 20 69 73 20 74 72 75 6e 63 61 74 65 64 20  it is truncated 
8390: 74 6f 20 74 68 65 20 6c 69 6d 69 74 2e 0a 0a 20  to the limit... 
83a0: 20 3c 70 3e 5e 54 68 65 20 73 65 63 6f 6e 64 20   <p>^The second 
83b0: 66 6f 72 6d 20 6f 66 20 74 68 65 20 70 72 61 67  form of the prag
83c0: 6d 61 20 6c 69 73 74 65 64 20 61 62 6f 76 65 20  ma listed above 
83d0: 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 61  is used to set a
83e0: 20 6e 65 77 20 6c 69 6d 69 74 0a 20 20 69 6e 20   new limit.  in 
83f0: 62 79 74 65 73 20 66 6f 72 20 74 68 65 20 73 70  bytes for the sp
8400: 65 63 69 66 69 65 64 20 64 61 74 61 62 61 73 65  ecified database
8410: 2e 20 20 5e 41 20 6e 65 67 61 74 69 76 65 20 6e  .  ^A negative n
8420: 75 6d 62 65 72 20 69 6d 70 6c 69 65 73 20 6e 6f  umber implies no
8430: 20 6c 69 6d 69 74 2e 0a 20 20 5e 54 6f 20 61 6c   limit..  ^To al
8440: 77 61 79 73 20 74 72 75 6e 63 61 74 65 20 72 6f  ways truncate ro
8450: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 73 20  llback journals 
8460: 61 6e 64 20 57 41 4c 20 66 69 6c 65 73 20 74 6f  and WAL files to
8470: 20 74 68 65 69 72 20 6d 69 6e 69 6d 75 6d 20 73   their minimum s
8480: 69 7a 65 2c 20 0a 20 20 73 65 74 20 74 68 65 20  ize, .  set the 
8490: 6a 6f 75 72 6e 61 6c 5f 73 69 7a 65 5f 6c 69 6d  journal_size_lim
84a0: 69 74 20 74 6f 20 7a 65 72 6f 2e 0a 20 20 5e 42  it to zero..  ^B
84b0: 6f 74 68 20 74 68 65 20 66 69 72 73 74 20 61 6e  oth the first an
84c0: 64 20 73 65 63 6f 6e 64 20 66 6f 72 6d 73 20 6f  d second forms o
84d0: 66 20 74 68 65 20 70 72 61 67 6d 61 20 6c 69 73  f the pragma lis
84e0: 74 65 64 20 61 62 6f 76 65 20 72 65 74 75 72 6e  ted above return
84f0: 20 61 20 73 69 6e 67 6c 65 0a 20 20 72 65 73 75   a single.  resu
8500: 6c 74 20 72 6f 77 20 63 6f 6e 74 61 69 6e 69 6e  lt row containin
8510: 67 20 61 20 73 69 6e 67 6c 65 20 69 6e 74 65 67  g a single integ
8520: 65 72 20 63 6f 6c 75 6d 6e 20 2d 20 74 68 65 20  er column - the 
8530: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6a 6f 75  value of the jou
8540: 72 6e 61 6c 0a 20 20 73 69 7a 65 20 6c 69 6d 69  rnal.  size limi
8550: 74 20 69 6e 20 62 79 74 65 73 2e 20 5e 54 68 65  t in bytes. ^The
8560: 20 64 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c   default journal
8570: 20 73 69 7a 65 20 6c 69 6d 69 74 20 69 73 20 2d   size limit is -
8580: 31 20 28 6e 6f 20 6c 69 6d 69 74 29 2e 20 20 54  1 (no limit).  T
8590: 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 44 45 46  he.  [SQLITE_DEF
85a0: 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a  AULT_JOURNAL_SIZ
85b0: 45 5f 4c 49 4d 49 54 5d 20 70 72 65 70 72 6f 63  E_LIMIT] preproc
85c0: 65 73 73 6f 72 20 6d 61 63 72 6f 20 63 61 6e 20  essor macro can 
85d0: 62 65 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67  be used to chang
85e0: 65 0a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20  e.  the default 
85f0: 6a 6f 75 72 6e 61 6c 20 73 69 7a 65 20 6c 69 6d  journal size lim
8600: 69 74 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  it at compile-ti
8610: 6d 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 5e 54  me.</p>..  <p>^T
8620: 68 69 73 20 70 72 61 67 6d 61 20 6f 6e 6c 79 20  his pragma only 
8630: 6f 70 65 72 61 74 65 73 20 6f 6e 20 74 68 65 20  operates on the 
8640: 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20  single database 
8650: 73 70 65 63 69 66 69 65 64 20 70 72 69 6f 72 0a  specified prior.
8660: 20 20 74 6f 20 74 68 65 20 70 72 61 67 6d 61 20    to the pragma 
8670: 6e 61 6d 65 20 28 6f 72 20 6f 6e 20 74 68 65 20  name (or on the 
8680: 22 6d 61 69 6e 22 20 64 61 74 61 62 61 73 65 20  "main" database 
8690: 69 66 20 6e 6f 20 64 61 74 61 62 61 73 65 20 69  if no database i
86a0: 73 20 73 70 65 63 69 66 69 65 64 2e 29 0a 20 20  s specified.).  
86b0: 54 68 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20  There is no way 
86c0: 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6a 6f  to change the jo
86d0: 75 72 6e 61 6c 20 73 69 7a 65 20 6c 69 6d 69 74  urnal size limit
86e0: 20 6f 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64   on all attached
86f0: 20 64 61 74 61 62 61 73 65 73 0a 20 20 75 73 69   databases.  usi
8700: 6e 67 20 61 20 73 69 6e 67 6c 65 20 50 52 41 47  ng a single PRAG
8710: 4d 41 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  MA statement.  T
8720: 68 65 20 73 69 7a 65 20 6c 69 6d 69 74 20 6d 75  he size limit mu
8730: 73 74 20 62 65 20 73 65 74 20 73 65 70 61 72 61  st be set separa
8740: 74 65 6c 79 20 66 6f 72 0a 20 20 65 61 63 68 20  tely for.  each 
8750: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
8760: 65 2e 0a 7d 0a 0a 0a 50 72 61 67 6d 61 20 6c 65  e..}...Pragma le
8770: 67 61 63 79 5f 61 6c 74 65 72 5f 74 61 62 6c 65  gacy_alter_table
8780: 20 7b 0a 20 20 20 3c 70 3e 5e 28 3c 62 3e 50 52   {.   <p>^(<b>PR
8790: 41 47 4d 41 20 6c 65 67 61 63 79 5f 61 6c 74 65  AGMA legacy_alte
87a0: 72 5f 74 61 62 6c 65 3b 0a 20 20 20 20 20 20 20  r_table;.       
87b0: 3c 62 72 3e 50 52 41 47 4d 41 20 6c 65 67 61 63  <br>PRAGMA legac
87c0: 79 5f 61 6c 74 65 72 5f 74 61 62 6c 65 20 3d 20  y_alter_table = 
87d0: 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e 3c 2f  <i>boolean</i></
87e0: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68  b></p>.    <p>Th
87f0: 69 73 20 70 72 61 67 6d 61 20 73 65 74 73 20 6f  is pragma sets o
8800: 72 20 71 75 65 72 69 65 73 20 74 68 65 20 76 61  r queries the va
8810: 6c 75 65 20 6f 66 20 74 68 65 20 6c 65 67 61 63  lue of the legac
8820: 79 5f 61 6c 74 65 72 5f 74 61 62 6c 65 0a 20 20  y_alter_table.  
8830: 20 20 66 6c 61 67 2e 29 5e 20 20 5e 28 57 68 65    flag.)^  ^(Whe
8840: 6e 20 74 68 69 73 20 66 6c 61 67 20 69 73 20 6f  n this flag is o
8850: 6e 2c 20 74 68 65 20 5b 41 4c 54 45 52 20 54 41  n, the [ALTER TA
8860: 42 4c 45 20 52 45 4e 41 4d 45 5d 0a 20 20 20 20  BLE RENAME].    
8870: 63 6f 6d 6d 61 6e 64 20 28 66 6f 72 20 63 68 61  command (for cha
8880: 6e 67 69 6e 67 20 74 68 65 20 6e 61 6d 65 20 6f  nging the name o
8890: 66 20 61 20 74 61 62 6c 65 29 20 77 6f 72 6b 73  f a table) works
88a0: 20 61 73 20 69 74 20 64 69 64 0a 20 20 20 20 69   as it did.    i
88b0: 6e 20 53 51 4c 69 74 65 20 33 2e 32 34 2e 30 20  n SQLite 3.24.0 
88c0: 28 5b 64 61 74 65 6f 66 3a 33 2e 32 34 2e 30 5d  ([dateof:3.24.0]
88d0: 29 20 61 6e 64 20 65 61 72 6c 69 65 72 2e 29 5e  ) and earlier.)^
88e0: 20 20 4d 6f 72 65 20 73 70 65 63 69 66 69 63 61    More specifica
88f0: 6c 6c 79 2c 0a 20 20 20 20 77 68 65 6e 20 74 68  lly,.    when th
8900: 69 73 20 66 6c 61 67 20 69 73 20 6f 6e 0a 20 20  is flag is on.  
8910: 20 20 74 68 65 20 5b 41 4c 54 45 52 20 54 41 42    the [ALTER TAB
8920: 4c 45 20 52 45 4e 41 4d 45 5d 20 63 6f 6d 6d 61  LE RENAME] comma
8930: 6e 64 20 6f 6e 6c 79 20 72 65 77 72 69 74 65 73  nd only rewrites
8940: 20 74 68 65 20 69 6e 69 74 69 61 6c 20 6f 63 63   the initial occ
8950: 75 72 72 65 6e 63 65 0a 20 20 20 20 6f 66 20 74  urrence.    of t
8960: 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e  he table name in
8970: 20 69 74 73 20 5b 43 52 45 41 54 45 20 54 41 42   its [CREATE TAB
8980: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  LE] statement an
8990: 64 20 69 6e 20 61 6e 79 20 61 73 73 6f 63 69 61  d in any associa
89a0: 74 65 64 0a 20 20 20 20 5b 43 52 45 41 54 45 20  ted.    [CREATE 
89b0: 49 4e 44 45 58 5d 20 61 6e 64 20 5b 43 52 45 41  INDEX] and [CREA
89c0: 54 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74  TE TRIGGER] stat
89d0: 65 6d 65 6e 74 73 2e 20 20 4f 74 68 65 72 20 72  ements.  Other r
89e0: 65 66 65 72 65 6e 63 65 73 20 74 6f 20 74 68 65  eferences to the
89f0: 0a 20 20 20 20 74 61 62 6c 65 20 61 72 65 20 75  .    table are u
8a00: 6e 6d 6f 64 69 66 69 65 64 2c 20 69 6e 63 6c 75  nmodified, inclu
8a10: 64 69 6e 67 3a 0a 20 20 20 20 3c 75 6c 3e 0a 20  ding:.    <ul>. 
8a20: 20 20 20 3c 6c 69 3e 20 52 65 66 65 72 65 6e 63     <li> Referenc
8a30: 65 73 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20  es to the table 
8a40: 77 69 74 68 69 6e 20 74 68 65 20 62 6f 64 69 65  within the bodie
8a50: 73 20 6f 66 20 74 72 69 67 67 65 72 73 20 61 6e  s of triggers an
8a60: 64 20 76 69 65 77 73 2e 0a 20 20 20 20 3c 6c 69  d views..    <li
8a70: 3e 20 52 65 66 65 72 65 6e 63 65 73 20 74 6f 20  > References to 
8a80: 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 69 6e  the table within
8a90: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
8aa0: 74 73 20 69 6e 20 74 68 65 20 6f 72 69 67 69 6e  ts in the origin
8ab0: 61 6c 0a 20 20 20 20 20 20 20 20 20 43 52 45 41  al.         CREA
8ac0: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
8ad0: 6e 74 2e 0a 20 20 20 20 3c 6c 69 3e 20 52 65 66  nt..    <li> Ref
8ae0: 65 72 65 6e 63 65 73 20 74 6f 20 74 68 65 20 74  erences to the t
8af0: 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68 65 20  able within the 
8b00: 57 48 45 52 45 20 63 6c 61 75 73 65 73 20 6f 66  WHERE clauses of
8b10: 20 5b 70 61 72 74 69 61 6c 20 69 6e 64 65 78 65   [partial indexe
8b20: 73 5d 2e 0a 20 20 20 20 3c 2f 75 6c 3e 0a 20 20  s]..    </ul>.  
8b30: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65    The default se
8b40: 74 74 69 6e 67 20 66 6f 72 20 74 68 69 73 20 70  tting for this p
8b50: 72 61 67 6d 61 20 69 73 20 4f 46 46 2c 20 77 68  ragma is OFF, wh
8b60: 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 61  ich means that a
8b70: 6c 6c 0a 20 20 20 20 72 65 66 65 72 65 6e 63 65  ll.    reference
8b80: 73 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61  s to the table a
8b90: 6e 79 77 68 65 72 65 20 69 6e 20 74 68 65 20 73  nywhere in the s
8ba0: 63 68 65 6d 61 20 61 72 65 20 63 6f 6e 76 65 72  chema are conver
8bb0: 74 65 64 20 74 6f 20 74 68 65 20 6e 65 77 20 6e  ted to the new n
8bc0: 61 6d 65 2e 0a 20 20 20 20 3c 70 3e 54 68 69 73  ame..    <p>This
8bd0: 20 70 72 61 67 6d 61 20 69 73 20 70 72 6f 76 69   pragma is provi
8be0: 64 65 64 20 61 73 20 61 20 77 6f 72 6b 2d 61 72  ded as a work-ar
8bf0: 6f 75 6e 64 20 66 6f 72 20 6f 6c 64 65 72 20 70  ound for older p
8c00: 72 6f 67 72 61 6d 73 20 74 68 61 74 0a 20 20 20  rograms that.   
8c10: 20 63 6f 6e 74 61 69 6e 20 63 6f 64 65 20 74 68   contain code th
8c20: 61 74 20 65 78 70 65 63 74 20 74 68 65 20 69 6e  at expect the in
8c30: 63 6f 6d 70 6c 65 74 65 20 62 65 68 61 76 69 6f  complete behavio
8c40: 72 0a 20 20 20 20 6f 66 20 5b 41 4c 54 45 52 20  r.    of [ALTER 
8c50: 54 41 42 4c 45 20 52 45 4e 41 4d 45 5d 20 66 6f  TABLE RENAME] fo
8c60: 75 6e 64 20 69 6e 20 6f 6c 64 65 72 20 76 65 72  und in older ver
8c70: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e  sions of SQLite.
8c80: 0a 20 20 20 20 4e 65 77 20 61 70 70 6c 69 63 61  .    New applica
8c90: 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6c 65 61  tions should lea
8ca0: 76 65 20 74 68 69 73 20 66 6c 61 67 20 74 75 72  ve this flag tur
8cb0: 6e 65 64 20 6f 66 66 2e 0a 20 20 20 20 3c 70 3e  ned off..    <p>
8cc0: 46 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  For compatibilit
8cd0: 79 20 77 69 74 68 20 6f 6c 64 65 72 20 5b 76 69  y with older [vi
8ce0: 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 69 6d 70  rtual table] imp
8cf0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2c 0a 20 20  lementations,.  
8d00: 20 20 74 68 69 73 20 66 6c 61 67 20 69 73 20 74    this flag is t
8d10: 75 72 6e 65 64 20 6f 6e 20 74 65 6d 70 6f 72 61  urned on tempora
8d20: 72 69 6c 79 20 77 68 69 6c 65 20 74 68 65 20 5b  rily while the [
8d30: 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 2e 78  sqlite3_module.x
8d40: 52 65 6e 61 6d 65 5d 0a 20 20 20 20 6d 65 74 68  Rename].    meth
8d50: 6f 64 20 69 73 20 62 65 69 6e 67 20 72 75 6e 2e  od is being run.
8d60: 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74    The value of t
8d70: 68 69 73 20 66 6c 61 67 20 69 73 20 72 65 73 74  his flag is rest
8d80: 6f 72 65 20 61 66 74 65 72 20 74 68 65 20 0a 20  ore after the . 
8d90: 20 20 20 5b 73 71 6c 69 74 65 33 5f 6d 6f 64 75     [sqlite3_modu
8da0: 6c 65 2e 78 52 65 6e 61 6d 65 5d 20 6d 65 74 68  le.xRename] meth
8db0: 6f 64 20 66 69 6e 69 73 68 65 73 2e 0a 7d 0a 0a  od finishes..}..
8dc0: 50 72 61 67 6d 61 20 6c 65 67 61 63 79 5f 66 69  Pragma legacy_fi
8dd0: 6c 65 5f 66 6f 72 6d 61 74 20 7b 0a 20 20 20 3c  le_format {.   <
8de0: 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20 6c 65  p>^(<b>PRAGMA le
8df0: 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74  gacy_file_format
8e00: 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41  ;.       <br>PRA
8e10: 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f  GMA legacy_file_
8e20: 66 6f 72 6d 61 74 20 3d 20 3c 69 3e 62 6f 6f 6c  format = <i>bool
8e30: 65 61 6e 3c 2f 69 3e 3c 2f 62 3e 3c 2f 70 3e 0a  ean</i></b></p>.
8e40: 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67      <p>This prag
8e50: 6d 61 20 73 65 74 73 20 6f 72 20 71 75 65 72 69  ma sets or queri
8e60: 65 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  es the value of 
8e70: 74 68 65 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f  the legacy_file_
8e80: 66 6f 72 6d 61 74 0a 20 20 20 20 66 6c 61 67 2e  format.    flag.
8e90: 29 5e 20 20 5e 28 57 68 65 6e 20 74 68 69 73 20  )^  ^(When this 
8ea0: 66 6c 61 67 20 69 73 20 6f 6e 2c 20 6e 65 77 20  flag is on, new 
8eb0: 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 73  SQLite databases
8ec0: 20 61 72 65 20 63 72 65 61 74 65 64 20 69 6e 0a   are created in.
8ed0: 20 20 20 20 61 20 66 69 6c 65 20 66 6f 72 6d 61      a file forma
8ee0: 74 20 74 68 61 74 20 69 73 20 72 65 61 64 61 62  t that is readab
8ef0: 6c 65 20 61 6e 64 20 77 72 69 74 61 62 6c 65 20  le and writable 
8f00: 62 79 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20  by all versions 
8f10: 6f 66 0a 20 20 20 20 53 51 4c 69 74 65 20 67 6f  of.    SQLite go
8f20: 69 6e 67 20 62 61 63 6b 20 74 6f 20 33 2e 30 2e  ing back to 3.0.
8f30: 30 2e 29 5e 20 20 5e 28 57 68 65 6e 20 74 68 65  0.)^  ^(When the
8f40: 20 66 6c 61 67 20 69 73 20 6f 66 66 2c 20 6e 65   flag is off, ne
8f50: 77 20 64 61 74 61 62 61 73 65 73 0a 20 20 20 20  w databases.    
8f60: 61 72 65 20 63 72 65 61 74 65 64 20 75 73 69 6e  are created usin
8f70: 67 20 74 68 65 20 6c 61 74 65 73 74 20 66 69 6c  g the latest fil
8f80: 65 20 66 6f 72 6d 61 74 20 77 68 69 63 68 20 6d  e format which m
8f90: 69 67 68 74 20 6e 6f 74 20 62 65 0a 20 20 20 20  ight not be.    
8fa0: 72 65 61 64 61 62 6c 65 20 6f 72 20 77 72 69 74  readable or writ
8fb0: 61 62 6c 65 20 62 79 20 76 65 72 73 69 6f 6e 73  able by versions
8fc0: 20 6f 66 20 53 51 4c 69 74 65 20 70 72 69 6f 72   of SQLite prior
8fd0: 20 74 6f 20 33 2e 33 2e 30 2e 29 5e 3c 2f 70 3e   to 3.3.0.)^</p>
8fe0: 0a 0a 20 20 20 20 3c 70 3e 5e 57 68 65 6e 20 74  ..    <p>^When t
8ff0: 68 65 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66  he legacy_file_f
9000: 6f 72 6d 61 74 20 70 72 61 67 6d 61 20 69 73 20  ormat pragma is 
9010: 69 73 73 75 65 64 20 77 69 74 68 20 6e 6f 20 61  issued with no a
9020: 72 67 75 6d 65 6e 74 2c 0a 20 20 20 20 69 74 20  rgument,.    it 
9030: 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 74 74  returns the sett
9040: 69 6e 67 20 6f 66 20 74 68 65 20 66 6c 61 67 2e  ing of the flag.
9050: 20 20 5e 54 68 69 73 20 70 72 61 67 6d 61 20 64    ^This pragma d
9060: 6f 65 73 20 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 74  oes <u>not</u> t
9070: 65 6c 6c 0a 20 20 20 20 77 68 69 63 68 20 66 69  ell.    which fi
9080: 6c 65 20 66 6f 72 6d 61 74 20 74 68 65 20 63 75  le format the cu
9090: 72 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 69  rrent database i
90a0: 73 20 75 73 69 6e 67 3b 20 69 74 20 74 65 6c 6c  s using; it tell
90b0: 73 20 77 68 61 74 20 66 6f 72 6d 61 74 0a 20 20  s what format.  
90c0: 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 62    will be used b
90d0: 79 20 61 6e 79 20 6e 65 77 6c 79 20 63 72 65 61  y any newly crea
90e0: 74 65 64 20 64 61 74 61 62 61 73 65 73 2e 3c 2f  ted databases.</
90f0: 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 65 20  p>..    <p>^The 
9100: 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d  legacy_file_form
9110: 61 74 20 70 72 61 67 6d 61 20 69 73 20 69 6e 69  at pragma is ini
9120: 74 69 61 6c 69 7a 65 64 20 74 6f 20 4f 46 46 20  tialized to OFF 
9130: 77 68 65 6e 20 61 6e 20 65 78 69 73 74 69 6e 67  when an existing
9140: 0a 20 20 20 20 64 61 74 61 62 61 73 65 20 69 6e  .    database in
9150: 20 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20   the newer file 
9160: 66 6f 72 6d 61 74 20 69 73 20 66 69 72 73 74 20  format is first 
9170: 6f 70 65 6e 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20  opened.</p>..   
9180: 20 3c 70 3e 5e 54 68 65 20 64 65 66 61 75 6c 74   <p>^The default
9190: 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69 73 20   file format is 
91a0: 73 65 74 20 62 79 20 74 68 65 0a 20 20 20 20 5b  set by the.    [
91b0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
91c0: 49 4c 45 5f 46 4f 52 4d 41 54 5d 20 63 6f 6d 70  ILE_FORMAT] comp
91d0: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  ile-time option.
91e0: 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 6c  </p>.}..Pragma l
91f0: 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 7b 0a 20 20  ocking_mode {.  
9200: 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41    <p>^(<b>PRAGMA
9210: 20 44 42 2e 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65   DB.locking_mode
9220: 3b 0a 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41  ;.    <br>PRAGMA
9230: 20 44 42 2e 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65   DB.locking_mode
9240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9250: 20 3d 20 3c 69 3e 4e 4f 52 4d 41 4c 20 7c 20 45   = <i>NORMAL | E
9260: 58 43 4c 55 53 49 56 45 3c 2f 69 3e 3c 2f 62 3e  XCLUSIVE</i></b>
9270: 29 5e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 5e 54  )^</p>.    <p>^T
9280: 68 69 73 20 70 72 61 67 6d 61 20 73 65 74 73 20  his pragma sets 
9290: 6f 72 20 71 75 65 72 69 65 73 20 74 68 65 20 64  or queries the d
92a0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
92b0: 6f 6e 20 6c 6f 63 6b 69 6e 67 2d 6d 6f 64 65 2e  on locking-mode.
92c0: 20 0a 20 20 20 20 5e 54 68 65 20 6c 6f 63 6b 69   .    ^The locki
92d0: 6e 67 2d 6d 6f 64 65 20 69 73 20 65 69 74 68 65  ng-mode is eithe
92e0: 72 20 4e 4f 52 4d 41 4c 20 6f 72 20 45 58 43 4c  r NORMAL or EXCL
92f0: 55 53 49 56 45 2e 0a 0a 20 20 20 20 3c 70 3e 5e  USIVE...    <p>^
9300: 49 6e 20 4e 4f 52 4d 41 4c 20 6c 6f 63 6b 69 6e  In NORMAL lockin
9310: 67 2d 6d 6f 64 65 20 28 74 68 65 20 64 65 66 61  g-mode (the defa
9320: 75 6c 74 20 75 6e 6c 65 73 73 20 6f 76 65 72 72  ult unless overr
9330: 69 64 64 65 6e 20 61 74 20 63 6f 6d 70 69 6c 65  idden at compile
9340: 2d 74 69 6d 65 0a 20 20 20 20 75 73 69 6e 67 20  -time.    using 
9350: 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
9360: 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 5d 29 2c 20  LOCKING_MODE]), 
9370: 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  a database conne
9380: 63 74 69 6f 6e 0a 20 20 20 20 75 6e 6c 6f 63 6b  ction.    unlock
9390: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  s the database f
93a0: 69 6c 65 20 61 74 20 74 68 65 20 63 6f 6e 63 6c  ile at the concl
93b0: 75 73 69 6f 6e 20 6f 66 20 65 61 63 68 20 72 65  usion of each re
93c0: 61 64 20 6f 72 0a 20 20 20 20 77 72 69 74 65 20  ad or.    write 
93d0: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 5e 57 68  transaction. ^Wh
93e0: 65 6e 20 74 68 65 20 6c 6f 63 6b 69 6e 67 2d 6d  en the locking-m
93f0: 6f 64 65 20 69 73 20 73 65 74 20 74 6f 20 45 58  ode is set to EX
9400: 43 4c 55 53 49 56 45 2c 20 74 68 65 0a 20 20 20  CLUSIVE, the.   
9410: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
9420: 74 69 6f 6e 20 6e 65 76 65 72 20 72 65 6c 65 61  tion never relea
9430: 73 65 73 20 66 69 6c 65 2d 6c 6f 63 6b 73 2e 20  ses file-locks. 
9440: 5e 54 68 65 20 66 69 72 73 74 20 74 69 6d 65 20  ^The first time 
9450: 74 68 65 0a 20 20 20 20 64 61 74 61 62 61 73 65  the.    database
9460: 20 69 73 20 72 65 61 64 20 69 6e 20 45 58 43 4c   is read in EXCL
9470: 55 53 49 56 45 20 6d 6f 64 65 2c 20 61 20 73 68  USIVE mode, a sh
9480: 61 72 65 64 20 6c 6f 63 6b 20 69 73 20 6f 62 74  ared lock is obt
9490: 61 69 6e 65 64 20 61 6e 64 20 0a 20 20 20 20 68  ained and .    h
94a0: 65 6c 64 2e 20 5e 54 68 65 20 66 69 72 73 74 20  eld. ^The first 
94b0: 74 69 6d 65 20 74 68 65 20 64 61 74 61 62 61 73  time the databas
94c0: 65 20 69 73 20 77 72 69 74 74 65 6e 2c 20 61 6e  e is written, an
94d0: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 20   exclusive lock 
94e0: 69 73 0a 20 20 20 20 6f 62 74 61 69 6e 65 64 20  is.    obtained 
94f0: 61 6e 64 20 68 65 6c 64 2e 3c 2f 70 3e 0a 0a 20  and held.</p>.. 
9500: 20 20 20 3c 70 3e 5e 44 61 74 61 62 61 73 65 20     <p>^Database 
9510: 6c 6f 63 6b 73 20 6f 62 74 61 69 6e 65 64 20 62  locks obtained b
9520: 79 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  y a connection i
9530: 6e 20 45 58 43 4c 55 53 49 56 45 20 6d 6f 64 65  n EXCLUSIVE mode
9540: 20 6d 61 79 20 62 65 0a 20 20 20 20 72 65 6c 65   may be.    rele
9550: 61 73 65 64 20 65 69 74 68 65 72 20 62 79 20 63  ased either by c
9560: 6c 6f 73 69 6e 67 20 74 68 65 20 64 61 74 61 62  losing the datab
9570: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ase connection, 
9580: 6f 72 20 62 79 20 73 65 74 74 69 6e 67 20 74 68  or by setting th
9590: 65 0a 20 20 20 20 6c 6f 63 6b 69 6e 67 2d 6d 6f  e.    locking-mo
95a0: 64 65 20 62 61 63 6b 20 74 6f 20 4e 4f 52 4d 41  de back to NORMA
95b0: 4c 20 75 73 69 6e 67 20 74 68 69 73 20 70 72 61  L using this pra
95c0: 67 6d 61 20 61 6e 64 20 74 68 65 6e 20 61 63 63  gma and then acc
95d0: 65 73 73 69 6e 67 20 74 68 65 0a 20 20 20 20 64  essing the.    d
95e0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 28 66 6f  atabase file (fo
95f0: 72 20 72 65 61 64 20 6f 72 20 77 72 69 74 65 29  r read or write)
9600: 2e 20 5e 53 69 6d 70 6c 79 20 73 65 74 74 69 6e  . ^Simply settin
9610: 67 20 74 68 65 20 6c 6f 63 6b 69 6e 67 2d 6d 6f  g the locking-mo
9620: 64 65 20 74 6f 0a 20 20 20 20 4e 4f 52 4d 41 4c  de to.    NORMAL
9630: 20 69 73 20 6e 6f 74 20 65 6e 6f 75 67 68 20 2d   is not enough -
9640: 20 6c 6f 63 6b 73 20 61 72 65 20 6e 6f 74 20 72   locks are not r
9650: 65 6c 65 61 73 65 64 20 75 6e 74 69 6c 20 74 68  eleased until th
9660: 65 20 6e 65 78 74 20 74 69 6d 65 0a 20 20 20 20  e next time.    
9670: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
9680: 65 20 69 73 20 61 63 63 65 73 73 65 64 2e 3c 2f  e is accessed.</
9690: 70 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 65 72 65  p>..    <p>There
96a0: 20 61 72 65 20 74 68 72 65 65 20 72 65 61 73 6f   are three reaso
96b0: 6e 73 20 74 6f 20 73 65 74 20 74 68 65 20 6c 6f  ns to set the lo
96c0: 63 6b 69 6e 67 2d 6d 6f 64 65 20 74 6f 20 45 58  cking-mode to EX
96d0: 43 4c 55 53 49 56 45 2e 0a 20 20 20 20 3c 6f 6c  CLUSIVE..    <ol
96e0: 3e 0a 20 20 20 20 3c 6c 69 3e 5e 54 68 65 20 61  >.    <li>^The a
96f0: 70 70 6c 69 63 61 74 69 6f 6e 20 77 61 6e 74 73  pplication wants
9700: 20 74 6f 20 70 72 65 76 65 6e 74 20 6f 74 68 65   to prevent othe
9710: 72 20 70 72 6f 63 65 73 73 65 73 20 66 72 6f 6d  r processes from
9720: 0a 20 20 20 20 20 20 20 20 61 63 63 65 73 73 69  .        accessi
9730: 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ng the database 
9740: 66 69 6c 65 2e 0a 20 20 20 20 3c 6c 69 3e 5e 54  file..    <li>^T
9750: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 79 73  he number of sys
9760: 74 65 6d 20 63 61 6c 6c 73 20 66 6f 72 20 66 69  tem calls for fi
9770: 6c 65 73 79 73 74 65 6d 20 6f 70 65 72 61 74 69  lesystem operati
9780: 6f 6e 73 20 69 73 20 72 65 64 75 63 65 64 2c 0a  ons is reduced,.
9790: 20 20 20 20 20 20 20 20 70 6f 73 73 69 62 6c 79          possibly
97a0: 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 20 61 20   resulting in a 
97b0: 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63  small performanc
97c0: 65 20 69 6e 63 72 65 61 73 65 2e 0a 20 20 20 20  e increase..    
97d0: 3c 6c 69 3e 5e 5b 57 41 4c 5d 20 64 61 74 61 62  <li>^[WAL] datab
97e0: 61 73 65 73 20 63 61 6e 20 62 65 20 61 63 63 65  ases can be acce
97f0: 73 73 65 64 20 69 6e 20 45 58 43 4c 55 53 49 56  ssed in EXCLUSIV
9800: 45 20 6d 6f 64 65 20 77 69 74 68 6f 75 74 20 74  E mode without t
9810: 68 65 0a 20 20 20 20 20 20 20 20 75 73 65 20 6f  he.        use o
9820: 66 20 73 68 61 72 65 64 20 6d 65 6d 6f 72 79 2e  f shared memory.
9830: 20 0a 20 20 20 20 20 20 20 20 28 5b 57 41 4c 20   .        ([WAL 
9840: 77 69 74 68 6f 75 74 20 73 68 61 72 65 64 20 6d  without shared m
9850: 65 6d 6f 72 79 20 7c 20 41 64 64 69 74 69 6f 6e  emory | Addition
9860: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 5d 29  al information])
9870: 0a 20 20 20 20 3c 2f 6f 6c 3e 0a 20 20 20 20 3c  .    </ol>.    <
9880: 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 28 57 68  /p>..    <p>^(Wh
9890: 65 6e 20 74 68 65 20 6c 6f 63 6b 69 6e 67 5f 6d  en the locking_m
98a0: 6f 64 65 20 70 72 61 67 6d 61 20 73 70 65 63 69  ode pragma speci
98b0: 66 69 65 73 20 61 20 70 61 72 74 69 63 75 6c 61  fies a particula
98c0: 72 20 64 61 74 61 62 61 73 65 2c 0a 20 20 20 20  r database,.    
98d0: 66 6f 72 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e  for example:</p>
98e0: 0a 0a 20 20 20 20 3c 62 6c 6f 63 6b 71 75 6f 74  ..    <blockquot
98f0: 65 3e 0a 50 52 41 47 4d 41 20 3c 62 3e 6d 61 69  e>.PRAGMA <b>mai
9900: 6e 2e 3c 2f 62 3e 6c 6f 63 6b 69 6e 67 5f 6d 6f  n.</b>locking_mo
9910: 64 65 3d 45 58 43 4c 55 53 49 56 45 3b 0a 20 20  de=EXCLUSIVE;.  
9920: 20 20 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a    </blockquote>.
9930: 0a 20 20 20 20 3c 70 3e 54 68 65 6e 20 74 68 65  .    <p>Then the
9940: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 61 70   locking mode ap
9950: 70 6c 69 65 73 20 6f 6e 6c 79 20 74 6f 20 74 68  plies only to th
9960: 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65  e named database
9970: 2e 29 5e 20 20 5e 49 66 20 6e 6f 0a 20 20 20 20  .)^  ^If no.    
9980: 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 71 75  database name qu
9990: 61 6c 69 66 69 65 72 20 70 72 65 63 65 64 65 73  alifier precedes
99a0: 20 74 68 65 20 22 6c 6f 63 6b 69 6e 67 5f 6d 6f   the "locking_mo
99b0: 64 65 22 20 6b 65 79 77 6f 72 64 20 74 68 65 6e  de" keyword then
99c0: 0a 20 20 20 20 74 68 65 20 6c 6f 63 6b 69 6e 67  .    the locking
99d0: 20 6d 6f 64 65 20 69 73 20 61 70 70 6c 69 65 64   mode is applied
99e0: 20 74 6f 20 61 6c 6c 20 64 61 74 61 62 61 73 65   to all database
99f0: 73 2c 20 69 6e 63 6c 75 64 69 6e 67 20 61 6e 79  s, including any
9a00: 20 6e 65 77 0a 20 20 20 20 64 61 74 61 62 61 73   new.    databas
9a10: 65 73 20 61 64 64 65 64 20 62 79 20 73 75 62 73  es added by subs
9a20: 65 71 75 65 6e 74 20 5b 41 54 54 41 43 48 5d 20  equent [ATTACH] 
9a30: 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 20  commands.</p>.. 
9a40: 20 20 3c 70 3e 5e 54 68 65 20 22 74 65 6d 70 22    <p>^The "temp"
9a50: 20 64 61 74 61 62 61 73 65 20 28 69 6e 20 77 68   database (in wh
9a60: 69 63 68 20 54 45 4d 50 20 74 61 62 6c 65 73 20  ich TEMP tables 
9a70: 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65 20  and indices are 
9a80: 73 74 6f 72 65 64 29 0a 20 20 20 61 6e 64 20 5b  stored).   and [
9a90: 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61  in-memory databa
9aa0: 73 65 73 5d 0a 20 20 20 61 6c 77 61 79 73 20 75  ses].   always u
9ab0: 73 65 73 20 65 78 63 6c 75 73 69 76 65 20 6c 6f  ses exclusive lo
9ac0: 63 6b 69 6e 67 20 6d 6f 64 65 2e 20 20 5e 54 68  cking mode.  ^Th
9ad0: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 6f  e locking mode o
9ae0: 66 20 74 65 6d 70 20 61 6e 64 0a 20 20 20 5b 69  f temp and.   [i
9af0: 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
9b00: 65 73 5d 20 63 61 6e 6e 6f 74 0a 20 20 20 62 65  es] cannot.   be
9b10: 20 63 68 61 6e 67 65 64 2e 20 20 5e 41 6c 6c 20   changed.  ^All 
9b20: 6f 74 68 65 72 20 64 61 74 61 62 61 73 65 73 20  other databases 
9b30: 75 73 65 20 74 68 65 20 6e 6f 72 6d 61 6c 20 6c  use the normal l
9b40: 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 62 79 20 64  ocking mode by d
9b50: 65 66 61 75 6c 74 0a 20 20 20 61 6e 64 20 61 72  efault.   and ar
9b60: 65 20 61 66 66 65 63 74 65 64 20 62 79 20 74 68  e affected by th
9b70: 69 73 20 70 72 61 67 6d 61 2e 3c 2f 70 3e 0a 0a  is pragma.</p>..
9b80: 20 20 20 3c 70 3e 5e 49 66 20 74 68 65 20 6c 6f     <p>^If the lo
9b90: 63 6b 69 6e 67 20 6d 6f 64 65 20 69 73 20 45 58  cking mode is EX
9ba0: 43 4c 55 53 49 56 45 20 77 68 65 6e 20 66 69 72  CLUSIVE when fir
9bb0: 73 74 20 65 6e 74 65 72 69 6e 67 0a 20 20 20 5b  st entering.   [
9bc0: 57 41 4c 20 7c 20 57 41 4c 20 6a 6f 75 72 6e 61  WAL | WAL journa
9bd0: 6c 20 6d 6f 64 65 5d 2c 20 74 68 65 6e 20 74 68  l mode], then th
9be0: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 63  e locking mode c
9bf0: 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64  annot be changed
9c00: 20 74 6f 0a 20 20 20 4e 4f 52 4d 41 4c 20 75 6e   to.   NORMAL un
9c10: 74 69 6c 20 61 66 74 65 72 20 65 78 69 74 69 6e  til after exitin
9c20: 67 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 20 6d 6f  g WAL journal mo
9c30: 64 65 2e 20 0a 20 20 20 5e 49 66 20 74 68 65 20  de. .   ^If the 
9c40: 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 69 73 20  locking mode is 
9c50: 4e 4f 52 4d 41 4c 20 77 68 65 6e 20 66 69 72 73  NORMAL when firs
9c60: 74 20 65 6e 74 65 72 69 6e 67 20 57 41 4c 0a 20  t entering WAL. 
9c70: 20 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2c 20    journal mode, 
9c80: 74 68 65 6e 20 74 68 65 20 6c 6f 63 6b 69 6e 67  then the locking
9c90: 20 6d 6f 64 65 20 63 61 6e 20 62 65 20 63 68 61   mode can be cha
9ca0: 6e 67 65 64 20 62 65 74 77 65 65 6e 20 4e 4f 52  nged between NOR
9cb0: 4d 41 4c 20 61 6e 64 0a 20 20 20 45 58 43 4c 55  MAL and.   EXCLU
9cc0: 53 49 56 45 20 61 6e 64 20 62 61 63 6b 20 61 67  SIVE and back ag
9cd0: 61 69 6e 20 61 74 20 61 6e 79 20 74 69 6d 65 20  ain at any time 
9ce0: 61 6e 64 20 77 69 74 68 6f 75 74 20 6e 65 65 64  and without need
9cf0: 69 6e 67 20 74 6f 20 65 78 69 74 0a 20 20 20 57  ing to exit.   W
9d00: 41 4c 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  AL journal mode.
9d10: 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 6d  </p>.}..Pragma m
9d20: 6d 61 70 5f 73 69 7a 65 20 7b 0a 20 20 20 20 3c  map_size {.    <
9d30: 70 3e 5e 28 3c 62 72 3e 3c 62 3e 50 52 41 47 4d  p>^(<br><b>PRAGM
9d40: 41 20 44 42 2e 6d 6d 61 70 5f 73 69 7a 65 3b 0a  A DB.mmap_size;.
9d50: 20 20 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41           <br>PRA
9d60: 47 4d 41 20 44 42 2e 6d 6d 61 70 5f 73 69 7a 65  GMA DB.mmap_size
9d70: 3d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c 2f 70  =</b><i>N</i></p
9d80: 3e 0a 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  >..    <p>Query 
9d90: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61  or change the ma
9da0: 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
9db0: 62 79 74 65 73 20 74 68 61 74 20 61 72 65 20 73  bytes that are s
9dc0: 65 74 0a 20 20 20 20 20 20 20 61 73 69 64 65 20  et.       aside 
9dd0: 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65  for memory-mappe
9de0: 64 20 49 2f 4f 20 6f 6e 20 61 20 73 69 6e 67 6c  d I/O on a singl
9df0: 65 20 64 61 74 61 62 61 73 65 2e 29 5e 20 20 5e  e database.)^  ^
9e00: 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a 20  The first form. 
9e10: 20 20 20 20 20 20 28 77 69 74 68 6f 75 74 20 61        (without a
9e20: 6e 20 61 72 67 75 6d 65 6e 74 29 20 71 75 65 72  n argument) quer
9e30: 69 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  ies the current 
9e40: 6c 69 6d 69 74 2e 20 20 5e 54 68 65 20 73 65 63  limit.  ^The sec
9e50: 6f 6e 64 0a 20 20 20 20 20 20 20 66 6f 72 6d 20  ond.       form 
9e60: 28 77 69 74 68 20 61 20 6e 75 6d 65 72 69 63 20  (with a numeric 
9e70: 61 72 67 75 6d 65 6e 74 29 20 73 65 74 73 20 74  argument) sets t
9e80: 68 65 20 6c 69 6d 69 74 20 66 6f 72 20 74 68 65  he limit for the
9e90: 20 73 70 65 63 69 66 69 65 64 0a 20 20 20 20 20   specified.     
9ea0: 20 20 64 61 74 61 62 61 73 65 2c 20 6f 72 20 66    database, or f
9eb0: 6f 72 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73  or all databases
9ec0: 20 69 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c   if the optional
9ed0: 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 69   database name i
9ee0: 73 0a 20 20 20 20 20 20 20 6f 6d 69 74 74 65 64  s.       omitted
9ef0: 2e 20 20 5e 49 6e 20 74 68 65 20 73 65 63 6f 6e  .  ^In the secon
9f00: 64 20 66 6f 72 6d 2c 20 69 66 20 74 68 65 20 64  d form, if the d
9f10: 61 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20  atabase name is 
9f20: 6f 6d 69 74 74 65 64 2c 20 74 68 65 0a 20 20 20  omitted, the.   
9f30: 20 20 20 20 6c 69 6d 69 74 20 74 68 61 74 20 69      limit that i
9f40: 73 20 73 65 74 20 62 65 63 6f 6d 65 73 20 74 68  s set becomes th
9f50: 65 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 20  e default limit 
9f60: 66 6f 72 20 61 6c 6c 20 64 61 74 61 62 61 73 65  for all database
9f70: 73 20 74 68 61 74 0a 20 20 20 20 20 20 20 61 72  s that.       ar
9f80: 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 5b  e added to the [
9f90: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
9fa0: 69 6f 6e 5d 20 62 79 20 73 75 62 73 65 71 75 65  ion] by subseque
9fb0: 6e 74 20 5b 41 54 54 41 43 48 5d 0a 20 20 20 20  nt [ATTACH].    
9fc0: 20 20 20 73 74 61 74 65 6d 65 6e 74 73 2e 3c 2f     statements.</
9fd0: 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 65 20  p>..    <p>^The 
9fe0: 61 72 67 75 6d 65 6e 74 20 4e 20 69 73 20 74 68  argument N is th
9ff0: 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
a000: 20 6f 66 20 62 79 74 65 73 20 6f 66 20 74 68 65   of bytes of the
a010: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 0a 20   database file. 
a020: 20 20 20 20 20 20 74 68 61 74 20 77 69 6c 6c 20        that will 
a030: 62 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e  be accessed usin
a040: 67 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  g memory-mapped 
a050: 49 2f 4f 2e 20 20 5e 49 66 20 4e 20 69 73 20 7a  I/O.  ^If N is z
a060: 65 72 6f 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ero then.       
a070: 6d 65 6d 6f 72 79 20 6d 61 70 70 65 64 20 49 2f  memory mapped I/
a080: 4f 20 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20  O is disabled.  
a090: 5e 49 66 20 4e 20 69 73 20 6e 65 67 61 74 69 76  ^If N is negativ
a0a0: 65 2c 20 74 68 65 6e 20 74 68 65 20 6c 69 6d 69  e, then the limi
a0b0: 74 0a 20 20 20 20 20 20 20 72 65 76 65 72 74 73  t.       reverts
a0c0: 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20   to the default 
a0d0: 76 61 6c 75 65 20 64 65 74 65 72 6d 69 6e 65 64  value determined
a0e0: 20 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63   by the most rec
a0f0: 65 6e 74 0a 20 20 20 20 20 20 20 5b 73 71 6c 69  ent.       [sqli
a100: 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c  te3_config]([SQL
a110: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
a120: 53 49 5a 45 5d 29 2c 20 6f 72 20 74 6f 20 74 68  SIZE]), or to th
a130: 65 20 63 6f 6d 70 69 6c 65 0a 20 20 20 20 20 20  e compile.      
a140: 20 74 69 6d 65 20 64 65 66 61 75 6c 74 20 64 65   time default de
a150: 74 65 72 6d 69 6e 65 64 20 62 79 20 5b 53 51 4c  termined by [SQL
a160: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50  ITE_DEFAULT_MMAP
a170: 5f 53 49 5a 45 5d 20 69 66 20 6e 6f 74 0a 20 20  _SIZE] if not.  
a180: 20 20 20 20 20 73 74 61 72 74 2d 74 69 6d 65 20       start-time 
a190: 6c 69 6d 69 74 20 68 61 73 20 62 65 65 6e 20 73  limit has been s
a1a0: 65 74 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e  et.</p>..    <p>
a1b0: 54 68 65 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70  The [PRAGMA mmap
a1c0: 5f 73 69 7a 65 5d 20 73 74 61 74 65 6d 65 6e 74  _size] statement
a1d0: 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 63 72   will never incr
a1e0: 65 61 73 65 20 74 68 65 20 61 6d 6f 75 6e 74 0a  ease the amount.
a1f0: 20 20 20 20 20 20 20 6f 66 20 61 64 64 72 65 73         of addres
a200: 73 20 73 70 61 63 65 20 75 73 65 64 20 66 6f 72  s space used for
a210: 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49   memory-mapped I
a220: 2f 4f 20 61 62 6f 76 65 20 74 68 65 0a 20 20 20  /O above the.   
a230: 20 20 20 20 68 61 72 64 20 6c 69 6d 69 74 20 73      hard limit s
a240: 65 74 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54  et by the [SQLIT
a250: 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d  E_MAX_MMAP_SIZE]
a260: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
a270: 74 69 6f 6e 2c 0a 20 20 20 20 20 20 20 6e 6f 72  tion,.       nor
a280: 20 74 68 65 20 68 61 72 64 20 6c 69 6d 69 74 20   the hard limit 
a290: 73 65 74 20 73 74 61 72 74 2d 74 69 6d 65 20 62  set start-time b
a2a0: 79 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  y the second arg
a2b0: 75 6d 65 6e 74 20 74 6f 0a 20 20 20 20 20 20 20  ument to.       
a2c0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 5b  sqlite3_config([
a2d0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d  SQLITE_CONFIG_MM
a2e0: 41 50 5f 53 49 5a 45 5d 29 3c 2f 70 3e 0a 0a 20  AP_SIZE])</p>.. 
a2f0: 20 20 20 3c 70 3e 54 68 65 20 73 69 7a 65 20 6f     <p>The size o
a300: 66 20 74 68 65 20 6d 65 6d 6f 72 79 2d 6d 61 70  f the memory-map
a310: 70 65 64 20 49 2f 4f 20 72 65 67 69 6f 6e 20 63  ped I/O region c
a320: 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64  annot be changed
a330: 20 77 68 69 6c 65 0a 20 20 20 20 20 20 20 74 68   while.       th
a340: 65 20 6d 65 6d 6f 72 79 2d 6d 61 70 70 65 64 20  e memory-mapped 
a350: 49 2f 4f 20 72 65 67 69 6f 6e 20 69 73 20 69 6e  I/O region is in
a360: 20 61 63 74 69 76 65 20 75 73 65 2c 20 74 6f 20   active use, to 
a370: 61 76 6f 69 64 20 75 6e 6d 61 70 70 69 6e 67 0a  avoid unmapping.
a380: 20 20 20 20 20 20 20 6d 65 6d 6f 72 79 20 6f 75         memory ou
a390: 74 20 66 72 6f 6d 20 75 6e 64 65 72 20 72 75 6e  t from under run
a3a0: 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65  ning SQL stateme
a3b0: 6e 74 73 2e 20 20 46 6f 72 20 74 68 69 73 20 72  nts.  For this r
a3c0: 65 61 73 6f 6e 2c 0a 20 20 20 20 20 20 20 74 68  eason,.       th
a3d0: 65 20 6d 6d 61 70 5f 73 69 7a 65 20 70 72 61 67  e mmap_size prag
a3e0: 6d 61 20 6d 61 79 20 62 65 20 61 20 6e 6f 2d 6f  ma may be a no-o
a3f0: 70 20 69 66 20 74 68 65 20 70 72 69 6f 72 20 6d  p if the prior m
a400: 6d 61 70 5f 73 69 7a 65 20 69 73 20 6e 6f 6e 2d  map_size is non-
a410: 7a 65 72 6f 0a 20 20 20 20 20 20 20 61 6e 64 20  zero.       and 
a420: 74 68 65 72 65 20 61 72 65 20 6f 74 68 65 72 20  there are other 
a430: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 72  SQL statements r
a440: 75 6e 6e 69 6e 67 20 63 6f 6e 63 75 72 72 65 6e  unning concurren
a450: 74 6c 79 20 6f 6e 20 74 68 65 20 73 61 6d 65 0a  tly on the same.
a460: 20 20 20 20 20 20 20 5b 64 61 74 61 62 61 73 65         [database
a470: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 3c 2f 70   connection].</p
a480: 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 70 61 67 65  >.}..Pragma page
a490: 5f 73 69 7a 65 20 7b 0a 20 20 20 3c 70 3e 5e 28  _size {.   <p>^(
a4a0: 3c 62 3e 50 52 41 47 4d 41 20 44 42 2e 70 61 67  <b>PRAGMA DB.pag
a4b0: 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20 20 3c  e_size;.       <
a4c0: 62 72 3e 50 52 41 47 4d 41 20 44 42 2e 70 61 67  br>PRAGMA DB.pag
a4d0: 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c 69 3e  e_size = </b><i>
a4e0: 62 79 74 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62  bytes</i><b>;</b
a4f0: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65  ></p>.    <p>Que
a500: 72 79 20 6f 72 20 73 65 74 20 74 68 65 20 70 61  ry or set the pa
a510: 67 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64  ge size of the d
a520: 61 74 61 62 61 73 65 2e 29 5e 20 5e 54 68 65 20  atabase.)^ ^The 
a530: 70 61 67 65 0a 20 20 20 20 73 69 7a 65 20 6d 75  page.    size mu
a540: 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66  st be a power of
a550: 20 74 77 6f 20 62 65 74 77 65 65 6e 20 35 31 32   two between 512
a560: 20 61 6e 64 20 36 35 35 33 36 20 69 6e 63 6c 75   and 65536 inclu
a570: 73 69 76 65 2e 0a 20 20 20 20 3c 2f 70 3e 0a 0a  sive..    </p>..
a580: 20 20 20 20 3c 70 3e 5e 57 68 65 6e 20 61 20 6e      <p>^When a n
a590: 65 77 20 64 61 74 61 62 61 73 65 20 69 73 20 63  ew database is c
a5a0: 72 65 61 74 65 64 2c 20 53 51 4c 69 74 65 20 61  reated, SQLite a
a5b0: 73 73 69 67 6e 73 20 61 20 70 61 67 65 20 73 69  ssigns a page si
a5c0: 7a 65 20 74 6f 0a 20 20 20 20 74 68 65 20 64 61  ze to.    the da
a5d0: 74 61 62 61 73 65 20 62 61 73 65 64 20 6f 6e 20  tabase based on 
a5e0: 70 6c 61 74 66 6f 72 6d 20 61 6e 64 20 66 69 6c  platform and fil
a5f0: 65 73 79 73 74 65 6d 2e 20 20 46 6f 72 20 6d 61  esystem.  For ma
a600: 6e 79 20 79 65 61 72 73 2c 0a 20 20 20 20 74 68  ny years,.    th
a610: 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 20 73  e default page s
a620: 69 7a 65 20 77 61 73 20 61 6c 6d 6f 73 74 20 61  ize was almost a
a630: 6c 77 61 79 73 20 31 30 32 34 20 62 79 74 65 73  lways 1024 bytes
a640: 2c 20 62 75 74 20 62 65 67 69 6e 6e 69 6e 67 0a  , but beginning.
a650: 20 20 20 20 77 69 74 68 20 53 51 4c 69 74 65 20      with SQLite 
a660: 5b 76 65 72 73 69 6f 6e 20 33 2e 31 32 2e 30 5d  [version 3.12.0]
a670: 20 28 5b 64 61 74 65 6f 66 3a 33 2e 31 32 2e 30   ([dateof:3.12.0
a680: 5d 29 2c 20 0a 20 20 20 20 74 68 65 20 64 65 66  ]), .    the def
a690: 61 75 6c 74 20 70 61 67 65 20 73 69 7a 65 20 69  ault page size i
a6a0: 6e 63 72 65 61 73 65 64 20 74 6f 20 34 30 39 36  ncreased to 4096
a6b0: 2e 0a 20 20 20 20 54 68 65 20 64 65 66 61 75 6c  ..    The defaul
a6c0: 74 20 70 61 67 65 20 73 69 7a 65 20 69 73 20 72  t page size is r
a6d0: 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 6d  ecommended for m
a6e0: 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ost applications
a6f0: 2e 0a 0a 20 20 20 20 3c 70 3e 5e 28 53 70 65 63  ...    <p>^(Spec
a700: 69 66 79 69 6e 67 20 61 20 6e 65 77 20 70 61 67  ifying a new pag
a710: 65 20 73 69 7a 65 20 64 6f 65 73 20 6e 6f 74 20  e size does not 
a720: 63 68 61 6e 67 65 20 74 68 65 20 70 61 67 65 20  change the page 
a730: 73 69 7a 65 0a 20 20 20 20 69 6d 6d 65 64 69 61  size.    immedia
a740: 74 65 6c 79 2e 20 20 49 6e 73 74 65 61 64 2c 20  tely.  Instead, 
a750: 74 68 65 20 6e 65 77 20 70 61 67 65 20 73 69 7a  the new page siz
a760: 65 20 69 73 20 72 65 6d 65 6d 62 65 72 65 64 20  e is remembered 
a770: 61 6e 64 20 69 73 20 75 73 65 64 0a 20 20 20 20  and is used.    
a780: 74 6f 20 73 65 74 20 74 68 65 20 70 61 67 65 20  to set the page 
a790: 73 69 7a 65 20 77 68 65 6e 20 74 68 65 20 64 61  size when the da
a7a0: 74 61 62 61 73 65 20 69 73 20 66 69 72 73 74 20  tabase is first 
a7b0: 63 72 65 61 74 65 64 2c 20 69 66 20 69 74 20 64  created, if it d
a7c0: 6f 65 73 0a 20 20 20 20 6e 6f 74 20 61 6c 72 65  oes.    not alre
a7d0: 61 64 79 20 65 78 69 73 74 20 77 68 65 6e 20 74  ady exist when t
a7e0: 68 65 20 70 61 67 65 5f 73 69 7a 65 20 70 72 61  he page_size pra
a7f0: 67 6d 61 20 69 73 20 69 73 73 75 65 64 2c 20 6f  gma is issued, o
a800: 72 20 61 74 20 74 68 65 0a 20 20 20 20 6e 65 78  r at the.    nex
a810: 74 20 5b 56 41 43 55 55 4d 5d 20 63 6f 6d 6d 61  t [VACUUM] comma
a820: 6e 64 20 74 68 61 74 20 69 73 20 72 75 6e 20 6f  nd that is run o
a830: 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62  n the same datab
a840: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20  ase connection. 
a850: 20 20 20 77 68 69 6c 65 20 6e 6f 74 20 69 6e 20     while not in 
a860: 5b 57 41 4c 20 6d 6f 64 65 5d 2e 29 5e 3c 2f 70  [WAL mode].)^</p
a870: 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 65 20 5b  >..    <p>^The [
a880: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50  SQLITE_DEFAULT_P
a890: 41 47 45 5f 53 49 5a 45 5d 20 63 6f 6d 70 69 6c  AGE_SIZE] compil
a8a0: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61  e-time option ca
a8b0: 6e 20 62 65 20 75 73 65 64 0a 20 20 20 20 74 6f  n be used.    to
a8c0: 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
a8d0: 75 6c 74 20 70 61 67 65 20 73 69 7a 65 20 61 73  ult page size as
a8e0: 73 69 67 6e 65 64 20 74 6f 20 6e 65 77 20 64 61  signed to new da
a8f0: 74 61 62 61 73 65 73 2e 0a 7d 0a 0a 50 72 61 67  tabases..}..Prag
a900: 6d 61 20 6d 61 78 5f 70 61 67 65 5f 63 6f 75 6e  ma max_page_coun
a910: 74 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c 62 3e  t {.    <p>^(<b>
a920: 50 52 41 47 4d 41 20 44 42 2e 6d 61 78 5f 70 61  PRAGMA DB.max_pa
a930: 67 65 5f 63 6f 75 6e 74 3b 0a 20 20 20 20 20 20  ge_count;.      
a940: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 44 42 2e    <br>PRAGMA DB.
a950: 6d 61 78 5f 70 61 67 65 5f 63 6f 75 6e 74 20 3d  max_page_count =
a960: 20 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c 62 3e   </b><i>N</i><b>
a970: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
a980: 3e 51 75 65 72 79 20 6f 72 20 73 65 74 20 74 68  >Query or set th
a990: 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
a9a0: 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68 65   of pages in the
a9b0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 29   database file.)
a9c0: 5e 0a 20 20 20 20 5e 42 6f 74 68 20 66 6f 72 6d  ^.    ^Both form
a9d0: 73 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20  s of the pragma 
a9e0: 72 65 74 75 72 6e 20 74 68 65 20 6d 61 78 69 6d  return the maxim
a9f0: 75 6d 20 70 61 67 65 20 63 6f 75 6e 74 2e 20 20  um page count.  
aa00: 5e 54 68 65 20 73 65 63 6f 6e 64 0a 20 20 20 20  ^The second.    
aa10: 66 6f 72 6d 20 61 74 74 65 6d 70 74 73 20 74 6f  form attempts to
aa20: 20 6d 6f 64 69 66 79 20 74 68 65 20 6d 61 78 69   modify the maxi
aa30: 6d 75 6d 20 70 61 67 65 20 63 6f 75 6e 74 2e 20  mum page count. 
aa40: 20 5e 54 68 65 20 6d 61 78 69 6d 75 6d 20 70 61   ^The maximum pa
aa50: 67 65 0a 20 20 20 20 63 6f 75 6e 74 20 63 61 6e  ge.    count can
aa60: 6e 6f 74 20 62 65 20 72 65 64 75 63 65 64 20 62  not be reduced b
aa70: 65 6c 6f 77 20 74 68 65 20 63 75 72 72 65 6e 74  elow the current
aa80: 20 64 61 74 61 62 61 73 65 20 73 69 7a 65 2e 0a   database size..
aa90: 20 20 20 20 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67      </p>.}..Prag
aaa0: 6d 61 20 6f 70 74 69 6d 69 7a 65 20 7b 0a 20 20  ma optimize {.  
aab0: 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20 6f  <p>^(<b>PRAGMA o
aac0: 70 74 69 6d 69 7a 65 3b 0a 20 20 20 20 20 20 20  ptimize;.       
aad0: 3c 62 72 3e 50 52 41 47 4d 41 20 6f 70 74 69 6d  <br>PRAGMA optim
aae0: 69 7a 65 28 3c 2f 62 3e 3c 69 3e 4d 41 53 4b 3c  ize(</b><i>MASK<
aaf0: 2f 69 3e 3c 62 3e 29 3b 0a 20 20 20 20 20 20 20  /i><b>);.       
ab00: 3c 62 72 3e 50 52 41 47 4d 41 20 3c 2f 62 3e 3c  <br>PRAGMA </b><
ab10: 69 3e 73 63 68 65 6d 61 3c 2f 69 3e 3c 62 3e 2e  i>schema</i><b>.
ab20: 6f 70 74 69 6d 69 7a 65 3b 0a 20 20 20 20 20 20  optimize;.      
ab30: 20 3c 62 72 3e 50 52 41 47 4d 41 20 3c 2f 62 3e   <br>PRAGMA </b>
ab40: 3c 69 3e 73 63 68 65 6d 61 3c 2f 69 3e 3c 62 3e  <i>schema</i><b>
ab50: 2e 6f 70 74 69 6d 69 7a 65 28 3c 2f 62 3e 3c 69  .optimize(</b><i
ab60: 3e 4d 41 53 4b 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f  >MASK</i><b>);</
ab70: 62 3e 3c 2f 70 3e 0a 20 20 3c 70 3e 41 74 74 65  b></p>.  <p>Atte
ab80: 6d 70 74 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  mpt to optimize 
ab90: 74 68 65 20 64 61 74 61 62 61 73 65 2e 29 5e 20  the database.)^ 
aba0: 20 5e 41 6c 6c 20 73 63 68 65 6d 61 73 20 61 72   ^All schemas ar
abb0: 65 20 6f 70 74 69 6d 69 7a 65 64 20 69 6e 20 74  e optimized in t
abc0: 68 65 20 0a 20 20 66 69 72 73 74 20 74 77 6f 20  he .  first two 
abd0: 66 6f 72 6d 73 2c 20 61 6e 64 20 6f 6e 6c 79 20  forms, and only 
abe0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 63  the specified sc
abf0: 68 65 6d 61 20 69 73 20 6f 70 74 69 6d 69 7a 65  hema is optimize
ac00: 64 20 69 6e 20 74 68 65 20 6c 61 74 74 65 72 0a  d in the latter.
ac10: 20 20 74 77 6f 2e 3c 2f 70 3e 0a 20 20 3c 70 3e    two.</p>.  <p>
ac20: 54 6f 20 61 63 68 69 65 76 65 20 74 68 65 20 62  To achieve the b
ac30: 65 73 74 20 6c 6f 6e 67 2d 74 65 72 6d 20 71 75  est long-term qu
ac40: 65 72 79 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ery performance 
ac50: 77 69 74 68 6f 75 74 20 74 68 65 20 6e 65 65 64  without the need
ac60: 20 74 6f 0a 20 20 64 6f 20 61 20 64 65 74 61 69   to.  do a detai
ac70: 6c 65 64 20 65 6e 67 69 6e 65 65 72 69 6e 67 20  led engineering 
ac80: 61 6e 61 6c 79 73 69 73 20 6f 66 20 74 68 65 20  analysis of the 
ac90: 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 63 68 65  application sche
aca0: 6d 61 20 61 6e 64 20 53 51 4c 2c 0a 20 20 69 74  ma and SQL,.  it
acb0: 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
acc0: 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  that application
acd0: 73 20 72 75 6e 20 22 50 52 41 47 4d 41 20 6f 70  s run "PRAGMA op
ace0: 74 69 6d 69 7a 65 22 20 28 77 69 74 68 20 6e 6f  timize" (with no
acf0: 20 61 72 67 75 6d 65 6e 74 73 29 0a 20 20 6a 75   arguments).  ju
ad00: 73 74 20 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e  st before closin
ad10: 67 20 65 61 63 68 20 5b 64 61 74 61 62 61 73 65  g each [database
ad20: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 20 20 4c   connection].  L
ad30: 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 61 70 70 6c  ong-running appl
ad40: 69 63 61 74 69 6f 6e 73 0a 20 20 6d 69 67 68 74  ications.  might
ad50: 20 61 6c 73 6f 20 62 65 6e 65 66 69 74 20 66 72   also benefit fr
ad60: 6f 6d 20 73 65 74 74 69 6e 67 20 61 20 74 69 6d  om setting a tim
ad70: 65 72 20 74 6f 20 72 75 6e 20 22 50 52 41 47 4d  er to run "PRAGM
ad80: 41 20 6f 70 74 69 6d 69 7a 65 22 20 65 76 65 72  A optimize" ever
ad90: 79 0a 20 20 66 65 77 20 68 6f 75 72 73 2e 0a 20  y.  few hours.. 
ada0: 20 3c 2f 70 3e 0a 20 20 3c 70 3e 54 68 69 73 20   </p>.  <p>This 
adb0: 70 72 61 67 6d 61 20 69 73 20 75 73 75 61 6c 6c  pragma is usuall
adc0: 79 20 61 20 6e 6f 2d 6f 70 20 6f 72 20 6e 65 61  y a no-op or nea
add0: 72 6c 79 20 73 6f 20 61 6e 64 20 69 73 20 76 65  rly so and is ve
ade0: 72 79 20 66 61 73 74 2e 0a 20 20 48 6f 77 65 76  ry fast..  Howev
adf0: 65 72 20 69 66 20 53 51 4c 69 74 65 20 66 65 65  er if SQLite fee
ae00: 6c 73 0a 20 20 74 68 61 74 20 70 65 72 66 6f 72  ls.  that perfor
ae10: 6d 69 6e 67 20 64 61 74 61 62 61 73 65 20 6f 70  ming database op
ae20: 74 69 6d 69 7a 61 74 69 6f 6e 73 20 28 73 75 63  timizations (suc
ae30: 68 20 61 73 20 72 75 6e 6e 69 6e 67 20 5b 41 4e  h as running [AN
ae40: 41 4c 59 5a 45 5d 0a 20 20 6f 72 20 63 72 65 61  ALYZE].  or crea
ae50: 74 69 6e 67 20 6e 65 77 20 69 6e 64 65 78 65 73  ting new indexes
ae60: 29 20 77 69 6c 6c 20 69 6d 70 72 6f 76 65 20 74  ) will improve t
ae70: 68 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f  he performance o
ae80: 66 20 66 75 74 75 72 65 20 71 75 65 72 69 65 73  f future queries
ae90: 2c 20 74 68 65 6e 0a 20 20 73 6f 6d 65 20 64 61  , then.  some da
aea0: 74 61 62 61 73 65 20 49 2f 4f 20 6d 61 79 20 62  tabase I/O may b
aeb0: 65 20 64 6f 6e 65 2e 20 20 41 70 70 6c 69 63 61  e done.  Applica
aec0: 74 69 6f 6e 73 20 74 68 61 74 20 77 61 6e 74 20  tions that want 
aed0: 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 61 6d 6f  to limit the amo
aee0: 75 6e 74 0a 20 20 6f 66 20 77 6f 72 6b 20 70 65  unt.  of work pe
aef0: 72 66 6f 72 6d 65 64 20 63 61 6e 20 73 65 74 20  rformed can set 
af00: 61 20 74 69 6d 65 72 20 74 68 61 74 20 77 69 6c  a timer that wil
af10: 6c 20 69 6e 76 6f 6b 65 0a 20 20 5b 73 71 6c 69  l invoke.  [sqli
af20: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 5d  te3_interrupt()]
af30: 20 69 66 20 74 68 65 20 70 72 61 67 6d 61 20 67   if the pragma g
af40: 6f 65 73 20 6f 6e 20 66 6f 72 20 74 6f 6f 20 6c  oes on for too l
af50: 6f 6e 67 2e 0a 20 20 3c 2f 70 3e 0a 20 20 3c 70  ong..  </p>.  <p
af60: 3e 54 68 65 20 64 65 74 61 69 6c 73 20 6f 66 20  >The details of 
af70: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 70 65  optimizations pe
af80: 72 66 6f 72 6d 65 64 20 62 79 20 74 68 69 73 20  rformed by this 
af90: 70 72 61 67 6d 61 20 61 72 65 20 65 78 70 65 63  pragma are expec
afa0: 74 65 64 0a 20 20 74 6f 20 63 68 61 6e 67 65 20  ted.  to change 
afb0: 61 6e 64 20 69 6d 70 72 6f 76 65 20 6f 76 65 72  and improve over
afc0: 20 74 69 6d 65 2e 20 20 41 70 70 6c 69 63 61 74   time.  Applicat
afd0: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 61 6e 74 69  ions should anti
afe0: 63 69 70 61 74 65 20 74 68 61 74 0a 20 20 74 68  cipate that.  th
aff0: 69 73 20 70 72 61 67 6d 61 20 77 69 6c 6c 20 70  is pragma will p
b000: 65 72 66 6f 72 6d 20 6e 65 77 20 6f 70 74 69 6d  erform new optim
b010: 69 7a 61 74 69 6f 6e 73 20 69 6e 20 66 75 74 75  izations in futu
b020: 72 65 20 72 65 6c 65 61 73 65 73 2e 3c 2f 70 3e  re releases.</p>
b030: 0a 0a 20 20 3c 70 3e 54 68 65 20 6f 70 74 69 6f  ..  <p>The optio
b040: 6e 61 6c 20 4d 41 53 4b 20 61 72 67 75 6d 65 6e  nal MASK argumen
b050: 74 20 69 73 20 61 20 62 69 74 6d 61 73 6b 20 6f  t is a bitmask o
b060: 66 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20  f optimizations 
b070: 74 6f 20 70 65 72 66 6f 72 6d 3a 0a 20 20 3c 6f  to perform:.  <o
b080: 6c 3e 0a 20 20 3c 6c 69 20 76 61 6c 75 65 3d 27  l>.  <li value='
b090: 31 27 3e 3c 70 3e 0a 20 20 20 20 20 20 20 20 20  1'><p>.         
b0a0: 44 65 62 75 67 67 69 6e 67 20 6d 6f 64 65 2e 20  Debugging mode. 
b0b0: 20 44 6f 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79   Do not actually
b0c0: 20 70 65 72 66 6f 72 6d 20 61 6e 79 20 6f 70 74   perform any opt
b0d0: 69 6d 69 7a 61 74 69 6f 6e 73 0a 20 20 20 20 20  imizations.     
b0e0: 20 20 20 20 62 75 74 20 69 6e 73 74 65 61 64 20      but instead 
b0f0: 72 65 74 75 72 6e 20 6f 6e 65 20 6c 69 6e 65 20  return one line 
b100: 6f 66 20 74 65 78 74 20 66 6f 72 20 65 61 63 68  of text for each
b110: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 20 20   optimization.  
b120: 20 20 20 20 20 20 20 74 68 61 74 20 77 6f 75 6c         that woul
b130: 64 20 68 61 76 65 20 62 65 65 6e 20 64 6f 6e 65  d have been done
b140: 2e 20 20 4f 66 66 20 62 79 20 64 65 66 61 75 6c  .  Off by defaul
b150: 74 2e 0a 20 20 3c 6c 69 20 76 61 6c 75 65 3d 27  t..  <li value='
b160: 32 27 3e 3c 70 3e 0a 20 20 20 20 20 20 20 20 20  2'><p>.         
b170: 52 75 6e 20 5b 41 4e 41 4c 59 5a 45 5d 20 6f 6e  Run [ANALYZE] on
b180: 20 74 61 62 6c 65 73 20 74 68 61 74 20 6d 69 67   tables that mig
b190: 68 74 20 62 65 6e 65 66 69 74 2e 20 20 4f 6e 20  ht benefit.  On 
b1a0: 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 20 20 20  by default..    
b1b0: 20 20 20 20 20 53 65 65 20 62 65 6c 6f 77 20 66       See below f
b1c0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
b1d0: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 20 20 3c 6c 69  formation..  <li
b1e0: 20 76 61 6c 75 65 3d 27 34 27 3e 3c 70 3e 0a 20   value='4'><p>. 
b1f0: 20 20 20 20 20 20 20 20 3c 65 6d 3e 28 4e 6f 74          <em>(Not
b200: 20 79 65 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64   yet implemented
b210: 29 3c 2f 65 6d 3e 0a 20 20 20 20 20 20 20 20 20  )</em>.         
b220: 52 65 63 6f 72 64 20 75 73 61 67 65 20 61 6e 64  Record usage and
b230: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 0a 20 20   performance .  
b240: 20 20 20 20 20 20 20 69 6e 66 6f 72 6d 61 74 69         informati
b250: 6f 6e 20 66 72 6f 6d 20 74 68 65 20 63 75 72 72  on from the curr
b260: 65 6e 74 20 73 65 73 73 69 6f 6e 20 69 6e 20 74  ent session in t
b270: 68 65 0a 20 20 20 20 20 20 20 20 20 64 61 74 61  he.         data
b280: 62 61 73 65 20 66 69 6c 65 20 73 6f 20 74 68 61  base file so tha
b290: 74 20 69 74 20 77 69 6c 6c 20 62 65 20 61 76 61  t it will be ava
b2a0: 69 6c 61 62 6c 65 20 74 6f 20 22 6f 70 74 69 6d  ilable to "optim
b2b0: 69 7a 65 22 0a 20 20 20 20 20 20 20 20 20 70 72  ize".         pr
b2c0: 61 67 6d 61 73 20 72 75 6e 20 62 79 20 66 75 74  agmas run by fut
b2d0: 75 72 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ure database con
b2e0: 6e 65 63 74 69 6f 6e 73 2e 0a 20 20 3c 6c 69 20  nections..  <li 
b2f0: 76 61 6c 75 65 3d 27 38 27 3e 3c 70 3e 0a 20 20  value='8'><p>.  
b300: 20 20 20 20 20 20 20 3c 65 6d 3e 28 4e 6f 74 20         <em>(Not 
b310: 79 65 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 29  yet implemented)
b320: 3c 2f 65 6d 3e 0a 20 20 20 20 20 20 20 20 20 43  </em>.         C
b330: 72 65 61 74 65 20 69 6e 64 65 78 65 73 20 74 68  reate indexes th
b340: 61 74 20 6d 69 67 68 74 20 68 61 76 65 20 62 65  at might have be
b350: 65 6e 20 68 65 6c 70 66 75 6c 20 74 6f 20 72 65  en helpful to re
b360: 63 65 6e 74 20 71 75 65 72 69 65 73 2e 0a 20 20  cent queries..  
b370: 3c 2f 6f 6c 3e 0a 20 20 3c 70 3e 54 68 65 20 64  </ol>.  <p>The d
b380: 65 66 61 75 6c 74 20 4d 41 53 4b 20 69 73 20 61  efault MASK is a
b390: 6e 64 20 61 6c 77 61 79 73 20 73 68 61 6c 6c 20  nd always shall 
b3a0: 62 65 20 30 78 66 66 66 65 2e 20 20 54 68 65 20  be 0xfffe.  The 
b3b0: 30 78 66 66 66 65 20 6d 61 73 6b 20 6d 65 61 6e  0xfffe mask mean
b3c0: 73 0a 20 20 70 65 72 66 6f 72 6d 20 61 6c 6c 20  s.  perform all 
b3d0: 6f 66 20 74 68 65 20 6f 70 74 69 6d 69 7a 61 74  of the optimizat
b3e0: 69 6f 6e 73 20 6c 69 73 74 65 64 20 61 62 6f 76  ions listed abov
b3f0: 65 20 65 78 63 65 70 74 20 44 65 62 75 67 20 4d  e except Debug M
b400: 6f 64 65 2e 20 20 49 66 20 6e 65 77 0a 20 20 6f  ode.  If new.  o
b410: 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 61 72 65  ptimizations are
b420: 20 61 64 64 65 64 20 69 6e 20 74 68 65 20 66 75   added in the fu
b430: 74 75 72 65 20 74 68 61 74 20 73 68 6f 75 6c 64  ture that should
b440: 20 62 65 20 6f 66 66 20 62 79 20 64 65 66 61 75   be off by defau
b450: 6c 74 2c 20 74 68 6f 73 65 0a 20 20 6e 65 77 20  lt, those.  new 
b460: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 77 69  optimizations wi
b470: 6c 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6d 61  ll be given a ma
b480: 73 6b 20 6f 66 20 30 78 31 30 30 30 30 20 6f 72  sk of 0x10000 or
b490: 20 6c 61 72 67 65 72 2e 3c 2f 70 3e 0a 0a 20 20   larger.</p>..  
b4a0: 3c 70 3e 54 6f 20 73 65 65 20 61 6c 6c 20 6f 70  <p>To see all op
b4b0: 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68 61 74  timizations that
b4c0: 20 77 6f 75 6c 64 20 68 61 76 65 20 62 65 65 6e   would have been
b4d0: 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 61 63   done without ac
b4e0: 74 75 61 6c 6c 79 0a 20 20 64 6f 69 6e 67 20 74  tually.  doing t
b4f0: 68 65 6d 2c 20 72 75 6e 20 22 50 52 41 47 4d 41  hem, run "PRAGMA
b500: 20 6f 70 74 69 6d 69 7a 65 28 2d 31 29 22 2e 20   optimize(-1)". 
b510: 20 54 6f 20 75 73 65 20 6f 6e 6c 79 20 74 68 65   To use only the
b520: 20 41 4e 41 4c 59 5a 45 0a 20 20 6f 70 74 69 6d   ANALYZE.  optim
b530: 69 7a 61 74 69 6f 6e 2c 20 72 75 6e 20 22 50 52  ization, run "PR
b540: 41 47 4d 41 20 6f 70 74 69 6d 69 7a 65 28 30 78  AGMA optimize(0x
b550: 30 32 29 22 2e 3c 2f 70 3e 0a 20 20 0a 20 20 3c  02)".</p>.  .  <
b560: 70 3e 3c 62 3e 44 65 74 65 72 6d 69 6e 61 74 69  p><b>Determinati
b570: 6f 6e 20 4f 66 20 57 68 65 6e 20 54 6f 20 52 75  on Of When To Ru
b580: 6e 20 41 6e 61 6c 79 7a 65 3c 2f 62 3e 3c 2f 70  n Analyze</b></p
b590: 3e 0a 20 20 3c 70 3e 20 49 6e 20 74 68 65 20 63  >.  <p> In the c
b5a0: 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74  urrent implement
b5b0: 61 74 69 6f 6e 2c 20 61 20 74 61 62 6c 65 20 69  ation, a table i
b5c0: 73 20 61 6e 61 6c 79 7a 65 64 20 69 66 20 61 6e  s analyzed if an
b5d0: 64 20 6f 6e 6c 79 20 69 66 20 0a 20 20 20 20 20  d only if .     
b5e0: 20 61 6c 6c 20 6f 66 20 74 68 65 20 66 6f 6c 6c   all of the foll
b5f0: 6f 77 69 6e 67 20 61 72 65 20 74 72 75 65 3a 0a  owing are true:.
b600: 20 20 3c 75 6c 3e 0a 20 20 3c 6c 69 3e 3c 70 3e    <ul>.  <li><p>
b610: 0a 20 20 20 20 4d 41 53 4b 20 62 69 74 20 30 78  .    MASK bit 0x
b620: 30 32 20 69 73 20 73 65 74 2e 0a 20 20 3c 6c 69  02 is set..  <li
b630: 3e 3c 70 3e 0a 20 20 20 20 54 68 65 20 71 75 65  ><p>.    The que
b640: 72 79 20 70 6c 61 6e 6e 65 72 20 75 73 65 64 20  ry planner used 
b650: 5b 73 71 6c 69 74 65 5f 73 74 61 74 31 5d 2d 73  [sqlite_stat1]-s
b660: 74 79 6c 65 20 73 74 61 74 69 73 74 69 63 73 20  tyle statistics 
b670: 66 6f 72 20 6f 6e 65 20 6f 72 0a 20 20 20 20 6d  for one or.    m
b680: 6f 72 65 20 69 6e 64 65 78 65 73 20 6f 66 20 74  ore indexes of t
b690: 68 65 20 74 61 62 6c 65 20 61 74 20 73 6f 6d 65  he table at some
b6a0: 20 70 6f 69 6e 74 20 64 75 72 69 6e 67 20 74 68   point during th
b6b0: 65 20 6c 69 66 65 74 69 6d 65 20 6f 66 0a 20 20  e lifetime of.  
b6c0: 20 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f    the current co
b6d0: 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 3c 6c 69 3e  nnection..  <li>
b6e0: 3c 70 3e 0a 20 20 20 20 4f 6e 65 20 6f 72 20 6d  <p>.    One or m
b6f0: 6f 72 65 20 69 6e 64 65 78 65 73 20 6f 66 20 74  ore indexes of t
b700: 68 65 20 74 61 62 6c 65 20 61 72 65 20 63 75 72  he table are cur
b710: 72 65 6e 74 6c 79 20 75 6e 61 6e 61 6c 79 7a 65  rently unanalyze
b720: 64 20 3c 65 6d 3e 6f 72 3c 2f 65 6d 3e 0a 20 20  d <em>or</em>.  
b730: 20 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20    the number of 
b740: 72 6f 77 73 20 69 6e 20 74 68 65 20 74 61 62 6c  rows in the tabl
b750: 65 20 68 61 73 20 69 6e 63 72 65 61 73 65 64 20  e has increased 
b760: 62 79 20 32 35 20 74 69 6d 65 73 20 6f 72 20 6d  by 25 times or m
b770: 6f 72 65 0a 20 20 20 20 73 69 6e 63 65 20 74 68  ore.    since th
b780: 65 20 6c 61 73 74 20 74 69 6d 65 20 41 4e 41 4c  e last time ANAL
b790: 59 5a 45 20 77 61 73 20 72 75 6e 2e 0a 20 20 3c  YZE was run..  <
b7a0: 2f 75 6c 3e 0a 20 20 3c 70 3e 20 54 68 65 20 72  /ul>.  <p> The r
b7b0: 75 6c 65 73 20 66 6f 72 20 77 68 65 6e 20 74 61  ules for when ta
b7c0: 62 6c 65 73 20 61 72 65 20 61 6e 61 6c 79 7a 65  bles are analyze
b7d0: 64 20 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20  d are likely to 
b7e0: 63 68 61 6e 67 65 20 69 6e 0a 20 20 20 20 20 20  change in.      
b7f0: 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e  future releases.
b800: 0a 7d 0a 0a 50 72 61 67 6d 61 20 71 75 65 72 79  .}..Pragma query
b810: 5f 6f 6e 6c 79 20 7b 0a 20 20 20 20 3c 70 3e 3c  _only {.    <p><
b820: 62 3e 50 52 41 47 4d 41 20 71 75 65 72 79 5f 6f  b>PRAGMA query_o
b830: 6e 6c 79 3b 0a 20 20 20 20 20 20 3c 62 72 3e 50  nly;.      <br>P
b840: 52 41 47 4d 41 20 71 75 65 72 79 5f 6f 6e 6c 79  RAGMA query_only
b850: 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61   = </b><i>boolea
b860: 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70  n</i><b>;</b></p
b870: 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 65 20 71 75  >..    <p>The qu
b880: 65 72 79 5f 6f 6e 6c 79 20 70 72 61 67 6d 61 20  ery_only pragma 
b890: 70 72 65 76 65 6e 74 73 20 61 6c 6c 20 63 68 61  prevents all cha
b8a0: 6e 67 65 73 20 74 6f 20 64 61 74 61 62 61 73 65  nges to database
b8b0: 20 66 69 6c 65 73 20 77 68 65 6e 0a 20 20 20 20   files when.    
b8c0: 65 6e 61 62 6c 65 64 2e 3c 2f 70 3e 0a 7d 20 20  enabled.</p>.}  
b8d0: 20 0a 0a 50 72 61 67 6d 61 20 72 65 61 64 5f 75   ..Pragma read_u
b8e0: 6e 63 6f 6d 6d 69 74 74 65 64 20 7b 0a 20 20 20  ncommitted {.   
b8f0: 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20   <p>^(<b>PRAGMA 
b900: 72 65 61 64 5f 75 6e 63 6f 6d 6d 69 74 74 65 64  read_uncommitted
b910: 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41  ;.       <br>PRA
b920: 47 4d 41 20 72 65 61 64 5f 75 6e 63 6f 6d 6d 69  GMA read_uncommi
b930: 74 74 65 64 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f  tted = </b><i>bo
b940: 6f 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62  olean</i><b>;</b
b950: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65  ></p>.    <p>Que
b960: 72 79 2c 20 73 65 74 2c 20 6f 72 20 63 6c 65 61  ry, set, or clea
b970: 72 20 52 45 41 44 20 55 4e 43 4f 4d 4d 49 54 54  r READ UNCOMMITT
b980: 45 44 20 69 73 6f 6c 61 74 69 6f 6e 2e 29 5e 20  ED isolation.)^ 
b990: 5e 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 6f  ^The default iso
b9a0: 6c 61 74 69 6f 6e 0a 20 20 20 20 6c 65 76 65 6c  lation.    level
b9b0: 20 66 6f 72 20 53 51 4c 69 74 65 20 69 73 20 53   for SQLite is S
b9c0: 45 52 49 41 4c 49 5a 41 42 4c 45 2e 20 20 5e 41  ERIALIZABLE.  ^A
b9d0: 6e 79 20 70 72 6f 63 65 73 73 20 6f 72 20 74 68  ny process or th
b9e0: 72 65 61 64 20 63 61 6e 20 73 65 6c 65 63 74 0a  read can select.
b9f0: 20 20 20 20 52 45 41 44 20 55 4e 43 4f 4d 4d 49      READ UNCOMMI
ba00: 54 54 45 44 20 69 73 6f 6c 61 74 69 6f 6e 2c 20  TTED isolation, 
ba10: 62 75 74 20 53 45 52 49 41 4c 49 5a 41 42 4c 45  but SERIALIZABLE
ba20: 20 77 69 6c 6c 20 73 74 69 6c 6c 20 62 65 20 75   will still be u
ba30: 73 65 64 20 65 78 63 65 70 74 0a 20 20 20 20 62  sed except.    b
ba40: 65 74 77 65 65 6e 20 63 6f 6e 6e 65 63 74 69 6f  etween connectio
ba50: 6e 73 20 74 68 61 74 20 73 68 61 72 65 20 61 20  ns that share a 
ba60: 63 6f 6d 6d 6f 6e 20 70 61 67 65 20 61 6e 64 20  common page and 
ba70: 73 63 68 65 6d 61 20 63 61 63 68 65 2e 0a 20 20  schema cache..  
ba80: 20 20 43 61 63 68 65 20 73 68 61 72 69 6e 67 20    Cache sharing 
ba90: 69 73 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67  is enabled using
baa0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e   the [sqlite3_en
bab0: 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68  able_shared_cach
bac0: 65 28 29 5d 20 41 50 49 2e 0a 20 20 20 20 43 61  e()] API..    Ca
bad0: 63 68 65 20 73 68 61 72 69 6e 67 20 69 73 20 64  che sharing is d
bae0: 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  isabled by defau
baf0: 6c 74 2e 0a 20 20 20 20 3c 2f 70 3e 0a 0a 20 20  lt..    </p>..  
bb00: 20 20 3c 70 3e 53 65 65 20 5b 53 51 4c 69 74 65    <p>See [SQLite
bb10: 20 53 68 61 72 65 64 2d 43 61 63 68 65 20 4d 6f   Shared-Cache Mo
bb20: 64 65 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  de] for addition
bb30: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c  al information.<
bb40: 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 72 65  /p>.}..Pragma re
bb50: 63 75 72 73 69 76 65 5f 74 72 69 67 67 65 72 73  cursive_triggers
bb60: 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c 62 3e 50   {.    <p>^(<b>P
bb70: 52 41 47 4d 41 20 72 65 63 75 72 73 69 76 65 5f  RAGMA recursive_
bb80: 74 72 69 67 67 65 72 73 3b 0a 20 20 20 20 20 20  triggers;.      
bb90: 20 3c 62 72 3e 50 52 41 47 4d 41 20 72 65 63 75   <br>PRAGMA recu
bba0: 72 73 69 76 65 5f 74 72 69 67 67 65 72 73 20 3d  rsive_triggers =
bbb0: 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c   </b><i>boolean<
bbc0: 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a  /i><b>;</b></p>.
bbd0: 20 20 20 20 3c 70 3e 51 75 65 72 79 2c 20 73 65      <p>Query, se
bbe0: 74 2c 20 6f 72 20 63 6c 65 61 72 20 74 68 65 20  t, or clear the 
bbf0: 72 65 63 75 72 73 69 76 65 20 74 72 69 67 67 65  recursive trigge
bc00: 72 20 63 61 70 61 62 69 6c 69 74 79 2e 29 5e 0a  r capability.)^.
bc10: 0a 20 20 20 20 3c 70 3e 5e 43 68 61 6e 67 69 6e  .    <p>^Changin
bc20: 67 20 74 68 65 20 72 65 63 75 72 73 69 76 65 5f  g the recursive_
bc30: 74 72 69 67 67 65 72 73 20 73 65 74 74 69 6e 67  triggers setting
bc40: 20 61 66 66 65 63 74 73 20 74 68 65 20 65 78 65   affects the exe
bc50: 63 75 74 69 6f 6e 20 6f 66 0a 20 20 20 20 20 20  cution of.      
bc60: 20 61 6c 6c 20 73 74 61 74 65 6d 65 6e 74 73 20   all statements 
bc70: 70 72 65 70 61 72 65 64 0a 20 20 20 20 20 20 20  prepared.       
bc80: 75 73 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  using the databa
bc90: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69  se connection, i
bca0: 6e 63 6c 75 64 69 6e 67 20 74 68 6f 73 65 20 70  ncluding those p
bcb0: 72 65 70 61 72 65 64 20 62 65 66 6f 72 65 20 74  repared before t
bcc0: 68 65 0a 20 20 20 20 20 20 20 73 65 74 74 69 6e  he.       settin
bcd0: 67 20 77 61 73 20 63 68 61 6e 67 65 64 2e 20 5e  g was changed. ^
bce0: 41 6e 79 20 65 78 69 73 74 69 6e 67 20 73 74 61  Any existing sta
bcf0: 74 65 6d 65 6e 74 73 20 70 72 65 70 61 72 65 64  tements prepared
bd00: 20 75 73 69 6e 67 20 74 68 65 20 6c 65 67 61 63   using the legac
bd10: 79 20 0a 20 20 20 20 20 20 20 5b 73 71 6c 69 74  y .       [sqlit
bd20: 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 69 6e  e3_prepare()] in
bd30: 74 65 72 66 61 63 65 20 6d 61 79 20 66 61 69 6c  terface may fail
bd40: 20 77 69 74 68 20 61 6e 20 5b 53 51 4c 49 54 45   with an [SQLITE
bd50: 5f 53 43 48 45 4d 41 5d 20 65 72 72 6f 72 0a 20  _SCHEMA] error. 
bd60: 20 20 20 20 20 20 61 66 74 65 72 20 74 68 65 20        after the 
bd70: 72 65 63 75 72 73 69 76 65 5f 74 72 69 67 67 65  recursive_trigge
bd80: 72 73 20 73 65 74 74 69 6e 67 20 69 73 20 63 68  rs setting is ch
bd90: 61 6e 67 65 64 2e 0a 0a 20 20 20 20 3c 70 3e 50  anged...    <p>P
bda0: 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65 20 5b  rior to SQLite [
bdb0: 76 65 72 73 69 6f 6e 20 33 2e 36 2e 31 38 5d 20  version 3.6.18] 
bdc0: 28 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 31 38 5d  ([dateof:3.6.18]
bdd0: 29 2c 20 0a 20 20 20 20 72 65 63 75 72 73 69 76  ), .    recursiv
bde0: 65 20 74 72 69 67 67 65 72 73 20 77 65 72 65 20  e triggers were 
bdf0: 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 0a 20  not supported.. 
be00: 20 20 20 54 68 65 20 62 65 68 61 76 69 6f 72 20     The behavior 
be10: 6f 66 20 53 51 4c 69 74 65 20 77 61 73 20 61 6c  of SQLite was al
be20: 77 61 79 73 20 61 73 20 69 66 20 74 68 69 73 20  ways as if this 
be30: 70 72 61 67 6d 61 20 77 61 73 0a 20 20 20 20 73  pragma was.    s
be40: 65 74 20 74 6f 20 4f 46 46 2e 20 20 53 75 70 70  et to OFF.  Supp
be50: 6f 72 74 20 66 6f 72 20 72 65 63 75 72 73 69 76  ort for recursiv
be60: 65 20 74 72 69 67 67 65 72 73 20 77 61 73 20 61  e triggers was a
be70: 64 64 65 64 20 69 6e 20 76 65 72 73 69 6f 6e 20  dded in version 
be80: 33 2e 36 2e 31 38 0a 20 20 20 20 62 75 74 20 77  3.6.18.    but w
be90: 61 73 20 69 6e 69 74 69 61 6c 6c 79 20 74 75 72  as initially tur
bea0: 6e 65 64 20 4f 46 46 20 62 79 20 64 65 66 61 75  ned OFF by defau
beb0: 6c 74 2c 20 66 6f 72 20 63 6f 6d 70 61 74 69 62  lt, for compatib
bec0: 69 6c 69 74 79 2e 20 20 52 65 63 75 72 73 69 76  ility.  Recursiv
bed0: 65 0a 20 20 20 20 74 72 69 67 67 65 72 73 20 6d  e.    triggers m
bee0: 61 79 20 62 65 20 74 75 72 6e 65 64 20 6f 6e 20  ay be turned on 
bef0: 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20 66 75  by default in fu
bf00: 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
bf10: 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 3c 2f 70   SQLite..    </p
bf20: 3e 0a 0a 20 20 20 20 3c 70 3e 5e 28 54 68 65 20  >..    <p>^(The 
bf30: 64 65 70 74 68 20 6f 66 20 72 65 63 75 72 73 69  depth of recursi
bf40: 6f 6e 20 66 6f 72 20 74 72 69 67 67 65 72 73 20  on for triggers 
bf50: 68 61 73 20 61 20 68 61 72 64 20 75 70 70 65 72  has a hard upper
bf60: 20 6c 69 6d 69 74 20 73 65 74 20 62 79 0a 20 20   limit set by.  
bf70: 20 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 41    the [SQLITE_MA
bf80: 58 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48 5d  X_TRIGGER_DEPTH]
bf90: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
bfa0: 74 69 6f 6e 20 61 6e 64 20 61 20 72 75 6e 2d 74  tion and a run-t
bfb0: 69 6d 65 0a 20 20 20 20 6c 69 6d 69 74 20 73 65  ime.    limit se
bfc0: 74 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c 69  t by [sqlite3_li
bfd0: 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f  mit](db,[SQLITE_
bfe0: 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45  LIMIT_TRIGGER_DE
bff0: 50 54 48 5d 2c 2e 2e 2e 29 2e 29 5e 3c 2f 70 3e  PTH],...).)^</p>
c000: 0a 7d 0a 0a 50 72 61 67 6d 61 20 72 65 76 65 72  .}..Pragma rever
c010: 73 65 5f 75 6e 6f 72 64 65 72 65 64 5f 73 65 6c  se_unordered_sel
c020: 65 63 74 73 20 7b 0a 20 20 20 20 3c 70 3e 5e 28  ects {.    <p>^(
c030: 3c 62 3e 50 52 41 47 4d 41 20 72 65 76 65 72 73  <b>PRAGMA revers
c040: 65 5f 75 6e 6f 72 64 65 72 65 64 5f 73 65 6c 65  e_unordered_sele
c050: 63 74 73 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e  cts;.       <br>
c060: 50 52 41 47 4d 41 20 72 65 76 65 72 73 65 5f 75  PRAGMA reverse_u
c070: 6e 6f 72 64 65 72 65 64 5f 73 65 6c 65 63 74 73  nordered_selects
c080: 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61   = </b><i>boolea
c090: 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 29 5e 3c  n</i><b>;</b>)^<
c0a0: 2f 70 3e 0a 20 20 20 20 3c 70 3e 5e 57 68 65 6e  /p>.    <p>^When
c0b0: 20 65 6e 61 62 6c 65 64 2c 20 74 68 69 73 20 50   enabled, this P
c0c0: 52 41 47 4d 41 20 63 61 75 73 65 73 20 6d 61 6e  RAGMA causes man
c0d0: 79 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  y [SELECT] state
c0e0: 6d 65 6e 74 73 20 77 69 74 68 6f 75 74 0a 20 20  ments without.  
c0f0: 20 20 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c    an ORDER BY cl
c100: 61 75 73 65 20 74 6f 20 65 6d 69 74 20 74 68 65  ause to emit the
c110: 69 72 20 72 65 73 75 6c 74 73 20 69 6e 20 74 68  ir results in th
c120: 65 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 20  e reverse order 
c130: 66 72 6f 6d 20 77 68 61 74 0a 20 20 20 20 74 68  from what.    th
c140: 65 79 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f 75 6c  ey normally woul
c150: 64 2e 20 20 54 68 69 73 20 63 61 6e 20 68 65 6c  d.  This can hel
c160: 70 20 64 65 62 75 67 20 61 70 70 6c 69 63 61 74  p debug applicat
c170: 69 6f 6e 73 20 74 68 61 74 20 61 72 65 0a 20 20  ions that are.  
c180: 20 20 6d 61 6b 69 6e 67 20 69 6e 76 61 6c 69 64    making invalid
c190: 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 61 62 6f   assumptions abo
c1a0: 75 74 20 74 68 65 20 72 65 73 75 6c 74 20 6f 72  ut the result or
c1b0: 64 65 72 2e 20 20 0a 20 20 20 20 5e 54 68 65 20  der.  .    ^The 
c1c0: 72 65 76 65 72 73 65 5f 75 6e 6f 72 64 65 72 65  reverse_unordere
c1d0: 64 5f 73 65 6c 65 63 74 73 20 70 72 61 67 6d 61  d_selects pragma
c1e0: 20 77 6f 72 6b 73 20 66 6f 72 20 6d 6f 73 74 20   works for most 
c1f0: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
c200: 73 2c 0a 20 20 20 20 68 6f 77 65 76 65 72 20 74  s,.    however t
c210: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
c220: 20 6d 61 79 20 73 6f 6d 65 74 69 6d 65 73 20 63   may sometimes c
c230: 68 6f 6f 73 65 20 61 6e 20 61 6c 67 6f 72 69 74  hoose an algorit
c240: 68 6d 20 74 68 61 74 20 69 73 0a 20 20 20 20 6e  hm that is.    n
c250: 6f 74 20 65 61 73 69 6c 79 20 72 65 76 65 72 73  ot easily revers
c260: 65 64 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73  ed, in which cas
c270: 65 20 74 68 65 20 6f 75 74 70 75 74 20 77 69 6c  e the output wil
c280: 6c 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20  l appear in the 
c290: 73 61 6d 65 0a 20 20 20 20 6f 72 64 65 72 20 72  same.    order r
c2a0: 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65  egardless of the
c2b0: 20 72 65 76 65 72 73 65 5f 75 6e 6f 72 64 65 72   reverse_unorder
c2c0: 65 64 5f 73 65 6c 65 63 74 73 20 73 65 74 74 69  ed_selects setti
c2d0: 6e 67 2e 0a 20 20 20 20 3c 70 3e 53 51 4c 69 74  ng..    <p>SQLit
c2e0: 65 20 6d 61 6b 65 73 20 6e 6f 0a 20 20 20 20 67  e makes no.    g
c2f0: 75 61 72 61 6e 74 65 65 73 20 61 62 6f 75 74 20  uarantees about 
c300: 74 68 65 20 6f 72 64 65 72 20 6f 66 20 72 65 73  the order of res
c310: 75 6c 74 73 20 69 66 20 61 20 53 45 4c 45 43 54  ults if a SELECT
c320: 20 6f 6d 69 74 73 20 74 68 65 20 4f 52 44 45 52   omits the ORDER
c330: 20 42 59 0a 20 20 20 20 63 6c 61 75 73 65 2e 20   BY.    clause. 
c340: 20 45 76 65 6e 20 73 6f 2c 20 74 68 65 20 6f 72   Even so, the or
c350: 64 65 72 20 6f 66 20 72 65 73 75 6c 74 73 20 64  der of results d
c360: 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20 66  oes not change f
c370: 72 6f 6d 20 6f 6e 65 0a 20 20 20 20 72 75 6e 20  rom one.    run 
c380: 74 6f 20 74 68 65 20 6e 65 78 74 2c 20 61 6e 64  to the next, and
c390: 20 73 6f 20 6d 61 6e 79 20 61 70 70 6c 69 63 61   so many applica
c3a0: 74 69 6f 6e 73 20 6d 69 73 74 61 6b 65 6e 6c 79  tions mistakenly
c3b0: 20 63 6f 6d 65 20 74 6f 20 64 65 70 65 6e 64 0a   come to depend.
c3c0: 20 20 20 20 6f 6e 20 74 68 65 20 61 72 62 69 74      on the arbit
c3d0: 72 61 72 79 20 6f 75 74 70 75 74 20 6f 72 64 65  rary output orde
c3e0: 72 20 77 68 61 74 65 76 65 72 20 74 68 61 74 20  r whatever that 
c3f0: 6f 72 64 65 72 20 68 61 70 70 65 6e 73 20 74 6f  order happens to
c400: 20 62 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 0a   be.  However, .
c410: 20 20 20 20 73 6f 6d 65 74 69 6d 65 73 20 6e 65      sometimes ne
c420: 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  w versions of SQ
c430: 4c 69 74 65 20 77 69 6c 6c 20 63 6f 6e 74 61 69  Lite will contai
c440: 6e 20 6f 70 74 69 6d 69 7a 65 72 20 65 6e 68 61  n optimizer enha
c450: 6e 63 65 6d 65 6e 74 73 0a 20 20 20 20 74 68 61  ncements.    tha
c460: 74 20 77 69 6c 6c 20 63 61 75 73 65 20 74 68 65  t will cause the
c470: 20 6f 75 74 70 75 74 20 6f 72 64 65 72 20 6f 66   output order of
c480: 20 71 75 65 72 69 65 73 20 77 69 74 68 6f 75 74   queries without
c490: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
c4a0: 73 0a 20 20 20 20 74 6f 20 73 68 69 66 74 2e 20  s.    to shift. 
c4b0: 20 57 68 65 6e 20 74 68 61 74 20 68 61 70 70 65   When that happe
c4c0: 6e 73 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ns, applications
c4d0: 20 74 68 61 74 20 64 65 70 65 6e 64 20 6f 6e 20   that depend on 
c4e0: 61 20 63 65 72 74 61 69 6e 0a 20 20 20 20 6f 75  a certain.    ou
c4f0: 74 70 75 74 20 6f 72 64 65 72 20 6d 69 67 68 74  tput order might
c500: 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 2e 20 20 42   malfunction.  B
c510: 79 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 61 70  y running the ap
c520: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 6c 74 69 70  plication multip
c530: 6c 65 0a 20 20 20 20 74 69 6d 65 73 20 77 69 74  le.    times wit
c540: 68 20 74 68 69 73 20 70 72 61 67 6d 61 20 62 6f  h this pragma bo
c550: 74 68 20 64 69 73 61 62 6c 65 64 20 61 6e 64 20  th disabled and 
c560: 65 6e 61 62 6c 65 64 2c 20 63 61 73 65 73 20 77  enabled, cases w
c570: 68 65 72 65 20 74 68 65 0a 20 20 20 20 61 70 70  here the.    app
c580: 6c 69 63 61 74 69 6f 6e 20 6d 61 6b 65 73 20 66  lication makes f
c590: 61 75 6c 74 79 20 61 73 73 75 6d 70 74 69 6f 6e  aulty assumption
c5a0: 73 20 61 62 6f 75 74 20 6f 75 74 70 75 74 20 6f  s about output o
c5b0: 72 64 65 72 20 63 61 6e 20 62 65 0a 20 20 20 20  rder can be.    
c5c0: 69 64 65 6e 74 69 66 69 65 64 20 61 6e 64 20 66  identified and f
c5d0: 69 78 65 64 20 65 61 72 6c 79 2c 20 72 65 64 75  ixed early, redu
c5e0: 63 69 6e 67 20 70 72 6f 62 6c 65 6d 73 0a 20 20  cing problems.  
c5f0: 20 20 74 68 61 74 20 6d 69 67 68 74 20 62 65 20    that might be 
c600: 63 61 75 73 65 64 20 62 79 20 6c 69 6e 6b 69 6e  caused by linkin
c610: 67 20 61 67 61 69 6e 73 74 20 61 20 64 69 66 66  g against a diff
c620: 65 72 65 6e 74 20 76 65 72 73 69 6f 6e 20 6f 66  erent version of
c630: 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 3c 2f 70   SQLite..    </p
c640: 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 73 65 63 75  >.}..Pragma secu
c650: 72 65 5f 64 65 6c 65 74 65 20 7b 0a 20 20 20 20  re_delete {.    
c660: 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20 44  <p>^(<b>PRAGMA D
c670: 42 2e 73 65 63 75 72 65 5f 64 65 6c 65 74 65 3b  B.secure_delete;
c680: 0a 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41  .     <br>PRAGMA
c690: 20 44 42 2e 73 65 63 75 72 65 5f 64 65 6c 65 74   DB.secure_delet
c6a0: 65 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65  e = </b><i>boole
c6b0: 61 6e 3c 2f 69 3e 7c 3c 62 3e 46 41 53 54 3c 2f  an</i>|<b>FAST</
c6c0: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75  b></p>.    <p>Qu
c6d0: 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68  ery or change th
c6e0: 65 20 73 65 63 75 72 65 2d 64 65 6c 65 74 65 20  e secure-delete 
c6f0: 73 65 74 74 69 6e 67 2e 29 5e 20 5e 57 68 65 6e  setting.)^ ^When
c700: 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 20 69   secure_delete i
c710: 73 0a 20 20 20 20 6f 6e 2c 20 53 51 4c 69 74 65  s.    on, SQLite
c720: 20 6f 76 65 72 77 72 69 74 65 73 20 64 65 6c 65   overwrites dele
c730: 74 65 64 20 63 6f 6e 74 65 6e 74 20 77 69 74 68  ted content with
c740: 20 7a 65 72 6f 73 2e 20 20 5e 54 68 65 20 64 65   zeros.  ^The de
c750: 66 61 75 6c 74 0a 20 20 20 20 73 65 74 74 69 6e  fault.    settin
c760: 67 20 66 6f 72 20 73 65 63 75 72 65 5f 64 65 6c  g for secure_del
c770: 65 74 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65  ete is determine
c780: 64 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45  d by the [SQLITE
c790: 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45 5d 0a  _SECURE_DELETE].
c7a0: 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65      compile-time
c7b0: 20 6f 70 74 69 6f 6e 20 61 6e 64 20 69 73 20 6e   option and is n
c7c0: 6f 72 6d 61 6c 6c 79 20 6f 66 66 2e 20 20 54 68  ormally off.  Th
c7d0: 65 20 6f 66 66 20 73 65 74 74 69 6e 67 20 66 6f  e off setting fo
c7e0: 72 0a 20 20 20 20 73 65 63 75 72 65 5f 64 65 6c  r.    secure_del
c7f0: 65 74 65 20 69 6d 70 72 6f 76 65 73 20 70 65 72  ete improves per
c800: 66 6f 72 6d 61 6e 63 65 20 62 79 20 72 65 64 75  formance by redu
c810: 63 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72 20  cing the number 
c820: 6f 66 20 43 50 55 20 63 79 63 6c 65 73 0a 20 20  of CPU cycles.  
c830: 20 20 61 6e 64 20 74 68 65 20 61 6d 6f 75 6e 74    and the amount
c840: 20 6f 66 20 64 69 73 6b 20 49 2f 4f 2e 20 20 41   of disk I/O.  A
c850: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
c860: 20 77 69 73 68 20 74 6f 20 61 76 6f 69 64 20 6c   wish to avoid l
c870: 65 61 76 69 6e 67 0a 20 20 20 20 66 6f 72 65 6e  eaving.    foren
c880: 73 69 63 20 74 72 61 63 65 73 20 61 66 74 65 72  sic traces after
c890: 20 63 6f 6e 74 65 6e 74 20 69 73 20 64 65 6c 65   content is dele
c8a0: 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 20 73  ted or updated s
c8b0: 68 6f 75 6c 64 20 65 6e 61 62 6c 65 20 74 68 65  hould enable the
c8c0: 0a 20 20 20 20 73 65 63 75 72 65 5f 64 65 6c 65  .    secure_dele
c8d0: 74 65 20 70 72 61 67 6d 61 20 70 72 69 6f 72 20  te pragma prior 
c8e0: 74 6f 20 70 65 72 66 6f 72 6d 69 6e 67 20 74 68  to performing th
c8f0: 65 20 64 65 6c 65 74 65 20 6f 72 20 75 70 64 61  e delete or upda
c900: 74 65 2c 20 6f 72 20 65 6c 73 65 0a 20 20 20 20  te, or else.    
c910: 72 75 6e 20 5b 56 41 43 55 55 4d 5d 20 61 66 74  run [VACUUM] aft
c920: 65 72 20 74 68 65 20 64 65 6c 65 74 65 20 6f 72  er the delete or
c930: 20 75 70 64 61 74 65 2e 0a 0a 20 20 20 20 3c 70   update...    <p
c940: 3e 54 68 65 20 22 66 61 73 74 22 20 73 65 74 74  >The "fast" sett
c950: 69 6e 67 20 66 6f 72 20 73 65 63 75 72 65 5f 64  ing for secure_d
c960: 65 6c 65 74 65 20 28 61 64 64 65 64 20 63 69 72  elete (added cir
c970: 63 61 20 5b 64 61 74 65 6f 66 3a 33 2e 32 30 2e  ca [dateof:3.20.
c980: 30 5d 29 0a 20 20 20 20 69 73 20 61 6e 20 69 6e  0]).    is an in
c990: 74 65 72 6d 65 64 69 61 74 65 20 73 65 74 74 69  termediate setti
c9a0: 6e 67 20 69 6e 20 62 65 74 77 65 65 6e 20 22 6f  ng in between "o
c9b0: 6e 22 20 61 6e 64 20 22 6f 66 66 22 2e 0a 20 20  n" and "off"..  
c9c0: 20 20 57 68 65 6e 20 73 65 63 75 72 65 5f 64 65    When secure_de
c9d0: 6c 65 74 65 20 69 73 20 73 65 74 20 74 6f 20 22  lete is set to "
c9e0: 66 61 73 74 22 2c 0a 20 20 20 20 53 51 4c 69 74  fast",.    SQLit
c9f0: 65 20 77 69 6c 6c 20 6f 76 65 72 77 72 69 74 65  e will overwrite
ca00: 20 64 65 6c 65 74 65 64 20 63 6f 6e 74 65 6e 74   deleted content
ca10: 20 77 69 74 68 20 7a 65 72 6f 73 20 6f 6e 6c 79   with zeros only
ca20: 20 69 66 20 64 6f 69 6e 67 20 73 6f 0a 20 20 20   if doing so.   
ca30: 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 72 65 61   does not increa
ca40: 73 65 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  se the amount of
ca50: 20 49 2f 4f 2e 20 20 49 6e 20 6f 74 68 65 72 20   I/O.  In other 
ca60: 77 6f 72 64 73 2c 20 74 68 65 20 22 66 61 73 74  words, the "fast
ca70: 22 0a 20 20 20 20 73 65 74 74 69 6e 67 20 75 73  ".    setting us
ca80: 65 73 20 6d 6f 72 65 20 43 50 55 20 63 79 63 6c  es more CPU cycl
ca90: 65 73 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20  es but does not 
caa0: 75 73 65 20 6d 6f 72 65 20 49 2f 4f 2e 0a 20 20  use more I/O..  
cab0: 20 20 54 68 69 73 20 68 61 73 20 74 68 65 20 65    This has the e
cac0: 66 66 65 63 74 20 6f 66 20 70 75 72 67 69 6e 67  ffect of purging
cad0: 20 61 6c 6c 20 6f 6c 64 20 63 6f 6e 74 65 6e 74   all old content
cae0: 20 66 72 6f 6d 20 5b 42 2d 74 72 65 65 7c 62 2d   from [B-tree|b-
caf0: 74 72 65 65 20 70 61 67 65 73 5d 2c 0a 20 20 20  tree pages],.   
cb00: 20 62 75 74 20 6c 65 61 76 69 6e 67 20 66 6f 72   but leaving for
cb10: 65 6e 73 69 63 20 74 72 61 63 65 73 20 6f 6e 20  ensic traces on 
cb20: 5b 66 72 65 65 6c 69 73 74 7c 66 72 65 65 6c 69  [freelist|freeli
cb30: 73 74 20 70 61 67 65 73 5d 2e 0a 0a 20 20 20 20  st pages]...    
cb40: 3c 70 3e 0a 20 20 20 20 5e 57 68 65 6e 20 74 68  <p>.    ^When th
cb50: 65 72 65 20 61 72 65 20 5b 41 54 54 41 43 48 20  ere are [ATTACH 
cb60: 7c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  | attached datab
cb70: 61 73 65 73 5d 20 61 6e 64 20 6e 6f 20 64 61 74  ases] and no dat
cb80: 61 62 61 73 65 0a 20 20 20 20 69 73 20 73 70 65  abase.    is spe
cb90: 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 70 72  cified in the pr
cba0: 61 67 6d 61 2c 20 61 6c 6c 20 64 61 74 61 62 61  agma, all databa
cbb0: 73 65 73 20 68 61 76 65 20 74 68 65 69 72 20 73  ses have their s
cbc0: 65 63 75 72 65 2d 64 65 6c 65 74 65 0a 20 20 20  ecure-delete.   
cbd0: 20 73 65 74 74 69 6e 67 20 61 6c 74 65 72 65 64   setting altered
cbe0: 2e 0a 20 20 20 20 5e 54 68 65 20 73 65 63 75 72  ..    ^The secur
cbf0: 65 2d 64 65 6c 65 74 65 20 73 65 74 74 69 6e 67  e-delete setting
cc00: 20 66 6f 72 20 6e 65 77 6c 79 20 61 74 74 61 63   for newly attac
cc10: 68 65 64 20 64 61 74 61 62 61 73 65 73 20 69 73  hed databases is
cc20: 20 74 68 65 20 73 65 74 74 69 6e 67 0a 20 20 20   the setting.   
cc30: 20 6f 66 20 74 68 65 20 6d 61 69 6e 20 64 61 74   of the main dat
cc40: 61 62 61 73 65 20 61 74 20 74 68 65 20 74 69 6d  abase at the tim
cc50: 65 20 74 68 65 20 41 54 54 41 43 48 20 63 6f 6d  e the ATTACH com
cc60: 6d 61 6e 64 20 69 73 20 65 76 61 6c 75 61 74 65  mand is evaluate
cc70: 64 2e 0a 0a 20 20 20 20 3c 70 3e 0a 20 20 20 20  d...    <p>.    
cc80: 5e 57 68 65 6e 20 6d 75 6c 74 69 70 6c 65 20 64  ^When multiple d
cc90: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
cca0: 6f 6e 73 20 73 68 61 72 65 20 74 68 65 20 73 61  ons share the sa
ccb0: 6d 65 20 63 61 63 68 65 2c 20 63 68 61 6e 67 69  me cache, changi
ccc0: 6e 67 0a 20 20 20 20 74 68 65 20 73 65 63 75 72  ng.    the secur
ccd0: 65 2d 64 65 6c 65 74 65 20 66 6c 61 67 20 6f 6e  e-delete flag on
cce0: 20 6f 6e 65 20 64 61 74 61 62 61 73 65 20 63 6f   one database co
ccf0: 6e 6e 65 63 74 69 6f 6e 20 63 68 61 6e 67 65 73  nnection changes
cd00: 20 69 74 20 66 6f 72 20 74 68 65 6d 0a 20 20 20   it for them.   
cd10: 20 61 6c 6c 2e 0a 20 20 20 20 3c 2f 70 3e 0a 7d   all..    </p>.}
cd20: 0a 0a 4c 65 67 61 63 79 50 72 61 67 6d 61 20 73  ..LegacyPragma s
cd30: 68 6f 72 74 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  hort_column_name
cd40: 73 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50 52  s {.    <p><b>PR
cd50: 41 47 4d 41 20 73 68 6f 72 74 5f 63 6f 6c 75 6d  AGMA short_colum
cd60: 6e 5f 6e 61 6d 65 73 3b 0a 20 20 20 20 20 20 20  n_names;.       
cd70: 3c 62 72 3e 50 52 41 47 4d 41 20 73 68 6f 72 74  <br>PRAGMA short
cd80: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20  _column_names = 
cd90: 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f  </b><i>boolean</
cda0: 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a  i><b>;</b></p>..
cdb0: 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20      <p>Query or 
cdc0: 63 68 61 6e 67 65 20 74 68 65 20 73 68 6f 72 74  change the short
cdd0: 2d 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 73 20 66 6c  -column-names fl
cde0: 61 67 2e 20 54 68 69 73 20 66 6c 61 67 20 61 66  ag. This flag af
cdf0: 66 65 63 74 73 0a 20 20 20 20 74 68 65 20 77 61  fects.    the wa
ce00: 79 20 53 51 4c 69 74 65 20 6e 61 6d 65 73 20 63  y SQLite names c
ce10: 6f 6c 75 6d 6e 73 20 6f 66 20 64 61 74 61 20 72  olumns of data r
ce20: 65 74 75 72 6e 65 64 20 62 79 20 5b 53 45 4c 45  eturned by [SELE
ce30: 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  CT] statements..
ce40: 20 20 20 20 53 65 65 20 74 68 65 20 5b 66 75 6c      See the [ful
ce50: 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 5d 20  l_column_names] 
ce60: 70 72 61 67 6d 61 20 66 6f 72 20 66 75 6c 6c 20  pragma for full 
ce70: 64 65 74 61 69 6c 73 2e 0a 20 20 20 20 3c 2f 70  details..    </p
ce80: 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41 49 4d 45  >..    DISCLAIME
ce90: 52 0a 7d 0a 0a 50 72 61 67 6d 61 20 73 68 72 69  R.}..Pragma shri
cea0: 6e 6b 5f 6d 65 6d 6f 72 79 20 7b 0a 20 20 20 20  nk_memory {.    
ceb0: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 73 68 72  <p><b>PRAGMA shr
cec0: 69 6e 6b 5f 6d 65 6d 6f 72 79 3c 2f 62 3e 3c 2f  ink_memory</b></
ced0: 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 69 73  p>..    <p>^This
cee0: 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74   pragma causes t
cef0: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
cf00: 65 63 74 69 6f 6e 20 6f 6e 20 77 68 69 63 68 20  ection on which 
cf10: 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20  it is invoked.  
cf20: 20 20 74 6f 20 66 72 65 65 20 75 70 20 61 73 20    to free up as 
cf30: 6d 75 63 68 20 6d 65 6d 6f 72 79 20 61 73 20 69  much memory as i
cf40: 74 20 63 61 6e 2c 20 62 79 20 63 61 6c 6c 69 6e  t can, by callin
cf50: 67 0a 20 20 20 20 5b 73 71 6c 69 74 65 33 5f 64  g.    [sqlite3_d
cf60: 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79  b_release_memory
cf70: 28 29 5d 2e 0a 20 20 20 20 3c 2f 70 3e 0a 7d 0a  ()]..    </p>.}.
cf80: 0a 50 72 61 67 6d 61 20 73 6f 66 74 5f 68 65 61  .Pragma soft_hea
cf90: 70 5f 6c 69 6d 69 74 20 7b 0a 20 20 20 20 3c 70  p_limit {.    <p
cfa0: 3e 3c 62 3e 50 52 41 47 4d 41 20 73 6f 66 74 5f  ><b>PRAGMA soft_
cfb0: 68 65 61 70 5f 6c 69 6d 69 74 3c 62 72 3e 0a 20  heap_limit<br>. 
cfc0: 20 20 20 20 20 20 20 20 20 50 52 41 47 4d 41 20           PRAGMA 
cfd0: 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 3d  soft_heap_limit=
cfe0: 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c 2f 70 3e  </b><i>N</i></p>
cff0: 0a 0a 20 20 20 20 3c 70 3e 5e 54 68 69 73 20 70  ..    <p>^This p
d000: 72 61 67 6d 61 20 69 6e 76 6f 6b 65 73 20 74 68  ragma invokes th
d010: 65 20 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f  e [sqlite3_soft_
d020: 68 65 61 70 5f 6c 69 6d 69 74 36 34 28 29 5d 20  heap_limit64()] 
d030: 69 6e 74 65 72 66 61 63 65 20 77 69 74 68 0a 20  interface with. 
d040: 20 20 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20     the argument 
d050: 4e 2c 20 69 66 20 4e 20 69 73 20 73 70 65 63 69  N, if N is speci
d060: 66 69 65 64 20 61 6e 64 20 69 73 20 61 20 6e 6f  fied and is a no
d070: 6e 2d 6e 65 67 61 74 69 76 65 20 69 6e 74 65 67  n-negative integ
d080: 65 72 2e 0a 20 20 20 20 5e 54 68 65 20 73 6f 66  er..    ^The sof
d090: 74 5f 68 65 61 70 5f 6c 69 6d 69 74 20 70 72 61  t_heap_limit pra
d0a0: 67 6d 61 20 61 6c 77 61 79 73 20 72 65 74 75 72  gma always retur
d0b0: 6e 73 20 74 68 65 20 73 61 6d 65 20 69 6e 74 65  ns the same inte
d0c0: 67 65 72 0a 20 20 20 20 74 68 61 74 20 77 6f 75  ger.    that wou
d0d0: 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 20 62  ld be returned b
d0e0: 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  y the [sqlite3_s
d0f0: 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 36 34  oft_heap_limit64
d100: 5d 28 2d 31 29 20 43 2d 6c 61 6e 67 75 61 67 65  ](-1) C-language
d110: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 2e 0a 20  .    function.. 
d120: 20 20 20 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d     </p>.}..Pragm
d130: 61 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 7b 0a  a synchronous {.
d140: 20 20 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47      <p>^(<b>PRAG
d150: 4d 41 20 44 42 2e 73 79 6e 63 68 72 6f 6e 6f 75  MA DB.synchronou
d160: 73 3b 0a 20 20 20 20 20 20 20 20 3c 62 72 3e 50  s;.        <br>P
d170: 52 41 47 4d 41 20 44 42 2e 73 79 6e 63 68 72 6f  RAGMA DB.synchro
d180: 6e 6f 75 73 20 3d 20 3c 2f 62 3e 0a 20 20 20 20  nous = </b>.    
d190: 20 20 20 20 20 20 3c 69 3e 30 20 7c 20 4f 46 46        <i>0 | OFF
d1a0: 20 7c 20 31 20 7c 20 4e 4f 52 4d 41 4c 20 7c 20   | 1 | NORMAL | 
d1b0: 32 20 7c 20 46 55 4c 4c 20 7c 20 33 20 7c 20 45  2 | FULL | 3 | E
d1c0: 58 54 52 41 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e  XTRA</i><b>;</b>
d1d0: 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 51 75 65  </p>..    <p>Que
d1e0: 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65  ry or change the
d1f0: 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20   setting of the 
d200: 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c  "synchronous" fl
d210: 61 67 2e 29 5e 0a 20 20 20 20 5e 54 68 65 20 66  ag.)^.    ^The f
d220: 69 72 73 74 20 28 71 75 65 72 79 29 20 66 6f 72  irst (query) for
d230: 6d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68  m will return th
d240: 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 73 65  e synchronous se
d250: 74 74 69 6e 67 20 61 73 20 61 6e 20 0a 20 20 20  tting as an .   
d260: 20 69 6e 74 65 67 65 72 2e 20 20 54 68 65 20 73   integer.  The s
d270: 65 63 6f 6e 64 20 66 6f 72 6d 20 63 68 61 6e 67  econd form chang
d280: 65 73 20 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f  es the synchrono
d290: 75 73 20 73 65 74 74 69 6e 67 2e 0a 20 20 20 20  us setting..    
d2a0: 54 68 65 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20  The meanings of 
d2b0: 74 68 65 20 76 61 72 69 6f 75 73 20 73 79 6e 63  the various sync
d2c0: 68 72 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 73  hronous settings
d2d0: 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a   are as follows:
d2e0: 3c 2f 70 3e 0a 20 20 20 20 3c 64 6c 3e 0a 20 20  </p>.    <dl>.  
d2f0: 20 20 3c 64 74 3e 3c 62 3e 45 58 54 52 41 3c 2f    <dt><b>EXTRA</
d300: 62 3e 20 28 33 29 3c 2f 64 74 3e 0a 20 20 20 20  b> (3)</dt>.    
d310: 3c 64 64 3e 0a 20 20 20 20 5e 45 58 54 52 41 20  <dd>.    ^EXTRA 
d320: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 6c  synchronous is l
d330: 69 6b 65 20 46 55 4c 4c 20 77 69 74 68 20 74 68  ike FULL with th
d340: 65 20 61 64 64 69 74 69 6f 6e 20 74 68 61 74 20  e addition that 
d350: 74 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20  the directory.  
d360: 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 5b    containing a [
d370: 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c  rollback journal
d380: 5d 20 69 73 20 73 79 6e 63 65 64 20 61 66 74 65  ] is synced afte
d390: 72 20 74 68 61 74 20 6a 6f 75 72 6e 61 6c 20 69  r that journal i
d3a0: 73 20 75 6e 6c 69 6e 6b 65 64 0a 20 20 20 20 74  s unlinked.    t
d3b0: 6f 20 63 6f 6d 6d 69 74 20 61 20 74 72 61 6e 73  o commit a trans
d3c0: 61 63 74 69 6f 6e 20 69 6e 20 44 45 4c 45 54 45  action in DELETE
d3d0: 20 6d 6f 64 65 2e 20 20 45 58 54 52 41 20 70 72   mode.  EXTRA pr
d3e0: 6f 76 69 64 65 73 20 61 64 64 69 74 69 6f 6e 61  ovides additiona
d3f0: 6c 0a 20 20 20 20 64 75 72 61 62 69 6c 69 74 79  l.    durability
d400: 20 69 66 20 74 68 65 20 63 6f 6d 6d 69 74 20 69   if the commit i
d410: 73 20 66 6f 6c 6c 6f 77 65 64 20 63 6c 6f 73 65  s followed close
d420: 6c 79 20 62 79 20 61 20 70 6f 77 65 72 20 6c 6f  ly by a power lo
d430: 73 73 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 74  ss.</dd>.    <dt
d440: 3e 3c 62 3e 46 55 4c 4c 3c 2f 62 3e 20 28 32 29  ><b>FULL</b> (2)
d450: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 20  </dt>.    <dd>. 
d460: 20 20 20 5e 57 68 65 6e 20 73 79 6e 63 68 72 6f     ^When synchro
d470: 6e 6f 75 73 20 69 73 20 46 55 4c 4c 20 28 32 29  nous is FULL (2)
d480: 2c 20 74 68 65 20 53 51 4c 69 74 65 20 64 61 74  , the SQLite dat
d490: 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c  abase engine wil
d4a0: 6c 0a 20 20 20 20 75 73 65 20 74 68 65 20 78 53  l.    use the xS
d4b0: 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  ync method of th
d4c0: 65 20 5b 56 46 53 5d 20 74 6f 20 65 6e 73 75 72  e [VFS] to ensur
d4d0: 65 20 74 68 61 74 20 61 6c 6c 20 63 6f 6e 74 65  e that all conte
d4e0: 6e 74 20 69 73 20 73 61 66 65 6c 79 0a 20 20 20  nt is safely.   
d4f0: 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20   written to the 
d500: 64 69 73 6b 20 73 75 72 66 61 63 65 20 70 72 69  disk surface pri
d510: 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69 6e 67  or to continuing
d520: 2e 0a 20 20 20 20 54 68 69 73 20 65 6e 73 75 72  ..    This ensur
d530: 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61  es that an opera
d540: 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73  ting system cras
d550: 68 20 6f 72 20 70 6f 77 65 72 20 66 61 69 6c 75  h or power failu
d560: 72 65 20 77 69 6c 6c 0a 20 20 20 20 6e 6f 74 20  re will.    not 
d570: 63 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61  corrupt the data
d580: 62 61 73 65 2e 0a 20 20 20 20 46 55 4c 4c 20 73  base..    FULL s
d590: 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 76 65  ynchronous is ve
d5a0: 72 79 20 73 61 66 65 2c 20 62 75 74 20 69 74 20  ry safe, but it 
d5b0: 69 73 20 61 6c 73 6f 20 73 6c 6f 77 65 72 2e 20  is also slower. 
d5c0: 20 46 55 4c 4c 20 69 73 20 74 68 65 0a 20 20 20   FULL is the.   
d5d0: 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 6c 79 20 75   most commonly u
d5e0: 73 65 64 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  sed synchronous 
d5f0: 73 65 74 74 69 6e 67 20 77 68 65 6e 20 6e 6f 74  setting when not
d600: 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 3c   in [WAL mode].<
d610: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 3c 62 3e  /dd>.    <dt><b>
d620: 4e 4f 52 4d 41 4c 3c 2f 62 3e 20 28 31 29 3c 2f  NORMAL</b> (1)</
d630: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 20 20 20  dt>.    <dd>.   
d640: 20 5e 57 68 65 6e 20 73 79 6e 63 68 72 6f 6e 6f   ^When synchrono
d650: 75 73 20 69 73 20 4e 4f 52 4d 41 4c 20 28 31 29  us is NORMAL (1)
d660: 2c 20 74 68 65 20 53 51 4c 69 74 65 20 64 61 74  , the SQLite dat
d670: 61 62 61 73 65 0a 20 20 20 20 65 6e 67 69 6e 65  abase.    engine
d680: 20 77 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e 63   will still sync
d690: 20 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69   at the most cri
d6a0: 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62  tical moments, b
d6b0: 75 74 20 6c 65 73 73 20 6f 66 74 65 6e 0a 20 20  ut less often.  
d6c0: 20 20 74 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d    than in FULL m
d6d0: 6f 64 65 2e 20 20 54 68 65 72 65 20 69 73 20 61  ode.  There is a
d6e0: 20 76 65 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f   very small (tho
d6f0: 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29 20 63 68  ugh non-zero) ch
d700: 61 6e 63 65 20 74 68 61 74 0a 20 20 20 20 61 20  ance that.    a 
d710: 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20 61 74  power failure at
d720: 20 6a 75 73 74 20 74 68 65 20 77 72 6f 6e 67 20   just the wrong 
d730: 74 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72 72 75  time could corru
d740: 70 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20  pt the database 
d750: 69 6e 0a 20 20 20 20 5b 6a 6f 75 72 6e 61 6c 5f  in.    [journal_
d760: 6d 6f 64 65 5d 3d 44 45 4c 45 54 45 20 6f 6e 20  mode]=DELETE on 
d770: 61 6e 20 6f 6c 64 65 72 20 66 69 6c 65 73 79 73  an older filesys
d780: 74 65 6d 2e 0a 20 20 20 20 5b 57 41 4c 20 6d 6f  tem..    [WAL mo
d790: 64 65 5d 20 69 73 20 73 61 66 65 20 66 72 6f 6d  de] is safe from
d7a0: 20 63 6f 72 72 75 70 74 69 6f 6e 20 77 69 74 68   corruption with
d7b0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52   synchronous=NOR
d7c0: 4d 41 4c 2c 20 61 6e 64 20 70 72 6f 62 61 62 6c  MAL, and probabl
d7d0: 79 0a 20 20 20 20 44 45 4c 45 54 45 20 6d 6f 64  y.    DELETE mod
d7e0: 65 20 69 73 20 73 61 66 65 20 74 6f 6f 20 6f 6e  e is safe too on
d7f0: 20 6d 6f 64 65 72 6e 20 66 69 6c 65 73 79 73 74   modern filesyst
d800: 65 6d 73 2e 20 20 57 41 4c 20 6d 6f 64 65 20 69  ems.  WAL mode i
d810: 73 20 61 6c 77 61 79 73 20 63 6f 6e 73 69 73 74  s always consist
d820: 65 6e 74 0a 20 20 20 20 77 69 74 68 20 73 79 6e  ent.    with syn
d830: 63 68 72 6f 6e 6f 75 73 3d 4e 4f 52 4d 41 4c 2c  chronous=NORMAL,
d840: 20 62 75 74 20 57 41 4c 20 6d 6f 64 65 20 64 6f   but WAL mode do
d850: 65 73 20 6c 6f 73 65 20 64 75 72 61 62 69 6c 69  es lose durabili
d860: 74 79 2e 20 20 41 20 74 72 61 6e 73 61 63 74 69  ty.  A transacti
d870: 6f 6e 0a 20 20 20 20 63 6f 6d 6d 69 74 74 65 64  on.    committed
d880: 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 77 69 74   in WAL mode wit
d890: 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4e 4f  h synchronous=NO
d8a0: 52 4d 41 4c 20 6d 69 67 68 74 20 72 6f 6c 6c 20  RMAL might roll 
d8b0: 62 61 63 6b 20 66 6f 6c 6c 6f 77 69 6e 67 0a 20  back following. 
d8c0: 20 20 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 20     a power loss 
d8d0: 6f 72 20 73 79 73 74 65 6d 20 63 72 61 73 68 2e  or system crash.
d8e0: 20 20 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 61    Transactions a
d8f0: 72 65 20 64 75 72 61 62 6c 65 20 61 63 72 6f 73  re durable acros
d900: 73 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 20 20  s application.  
d910: 20 20 63 72 61 73 68 65 73 20 72 65 67 61 72 64    crashes regard
d920: 6c 65 73 73 20 6f 66 20 74 68 65 20 73 79 6e 63  less of the sync
d930: 68 72 6f 6e 6f 75 73 20 73 65 74 74 69 6e 67 20  hronous setting 
d940: 6f 72 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  or journal mode.
d950: 0a 20 20 20 20 54 68 65 20 73 79 6e 63 68 72 6f  .    The synchro
d960: 6e 6f 75 73 3d 4e 4f 52 4d 41 4c 20 73 65 74 74  nous=NORMAL sett
d970: 69 6e 67 20 69 73 20 61 20 67 6f 6f 64 20 63 68  ing is a good ch
d980: 6f 69 63 65 20 66 6f 72 20 6d 6f 73 74 20 61 70  oice for most ap
d990: 70 6c 69 63 61 74 69 6f 6e 73 0a 20 20 20 20 72  plications.    r
d9a0: 75 6e 6e 69 6e 67 20 69 6e 20 5b 57 41 4c 20 6d  unning in [WAL m
d9b0: 6f 64 65 5d 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c  ode].</dd>.    <
d9c0: 64 74 3e 3c 62 3e 4f 46 46 3c 2f 62 3e 20 28 30  dt><b>OFF</b> (0
d9d0: 29 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a  )</dt>.    <dd>.
d9e0: 20 20 20 20 5e 57 69 74 68 20 73 79 6e 63 68 72      ^With synchr
d9f0: 6f 6e 6f 75 73 20 4f 46 46 20 28 30 29 2c 20 53  onous OFF (0), S
da00: 51 4c 69 74 65 20 63 6f 6e 74 69 6e 75 65 73 20  QLite continues 
da10: 77 69 74 68 6f 75 74 20 73 79 6e 63 69 6e 67 0a  without syncing.
da20: 20 20 20 20 61 73 20 73 6f 6f 6e 20 61 73 20 69      as soon as i
da30: 74 20 68 61 73 20 68 61 6e 64 65 64 20 64 61 74  t has handed dat
da40: 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70 65  a off to the ope
da50: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 20  rating system.. 
da60: 20 20 20 49 66 20 74 68 65 20 61 70 70 6c 69 63     If the applic
da70: 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51  ation running SQ
da80: 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20 74 68  Lite crashes, th
da90: 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73  e data will be s
daa0: 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74 68 65  afe, but.    the
dab0: 20 64 61 74 61 62 61 73 65 20 5b 63 66 67 65 72   database [cfger
dac0: 72 6f 72 73 7c 6d 69 67 68 74 20 62 65 63 6f 6d  rors|might becom
dad0: 65 20 63 6f 72 72 75 70 74 65 64 5d 20 69 66 20  e corrupted] if 
dae0: 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
daf0: 73 74 65 6d 0a 20 20 20 20 63 72 61 73 68 65 73  stem.    crashes
db00: 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74 65 72   or the computer
db10: 20 6c 6f 73 65 73 20 70 6f 77 65 72 20 62 65 66   loses power bef
db20: 6f 72 65 20 74 68 61 74 20 64 61 74 61 20 68 61  ore that data ha
db30: 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e 0a 20  s been written. 
db40: 20 20 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73     to the disk s
db50: 75 72 66 61 63 65 2e 20 20 4f 6e 20 74 68 65 20  urface.  On the 
db60: 6f 74 68 65 72 20 68 61 6e 64 2c 20 63 6f 6d 6d  other hand, comm
db70: 69 74 73 20 63 61 6e 20 62 65 20 6f 72 64 65 72  its can be order
db80: 73 20 6f 66 0a 20 20 20 20 6d 61 67 6e 69 74 75  s of.    magnitu
db90: 64 65 20 66 61 73 74 65 72 20 77 69 74 68 20 73  de faster with s
dba0: 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 46 46 2e 0a  ynchronous OFF..
dbb0: 20 20 20 20 3c 2f 64 64 3e 3c 2f 64 6c 3e 0a 20      </dd></dl>. 
dbc0: 20 20 20 3c 2f 70 3e 0a 20 0a 20 20 20 20 3c 70     </p>. .    <p
dbd0: 3e 5e 49 6e 20 5b 57 41 4c 5d 20 6d 6f 64 65 20  >^In [WAL] mode 
dbe0: 77 68 65 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73  when synchronous
dbf0: 20 69 73 20 4e 4f 52 4d 41 4c 20 28 31 29 2c 20   is NORMAL (1), 
dc00: 74 68 65 20 57 41 4c 20 66 69 6c 65 20 69 73 0a  the WAL file is.
dc10: 20 20 20 20 73 79 6e 63 68 72 6f 6e 69 7a 65 64      synchronized
dc20: 20 62 65 66 6f 72 65 20 65 61 63 68 20 5b 63 68   before each [ch
dc30: 65 63 6b 70 6f 69 6e 74 5d 20 61 6e 64 20 74 68  eckpoint] and th
dc40: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
dc50: 69 73 0a 20 20 20 20 73 79 6e 63 68 72 6f 6e 69  is.    synchroni
dc60: 7a 65 64 20 61 66 74 65 72 20 65 61 63 68 20 63  zed after each c
dc70: 6f 6d 70 6c 65 74 65 64 20 5b 63 68 65 63 6b 70  ompleted [checkp
dc80: 6f 69 6e 74 5d 20 61 6e 64 20 74 68 65 20 57 41  oint] and the WA
dc90: 4c 20 66 69 6c 65 0a 20 20 20 20 68 65 61 64 65  L file.    heade
dca0: 72 20 69 73 20 73 79 6e 63 68 72 6f 6e 69 7a 65  r is synchronize
dcb0: 64 20 77 68 65 6e 20 61 20 57 41 4c 20 66 69 6c  d when a WAL fil
dcc0: 65 20 62 65 67 69 6e 73 20 74 6f 20 62 65 20 72  e begins to be r
dcd0: 65 75 73 65 64 20 61 66 74 65 72 0a 20 20 20 20  eused after.    
dce0: 61 20 63 68 65 63 6b 70 6f 69 6e 74 2c 20 62 75  a checkpoint, bu
dcf0: 74 20 6e 6f 20 73 79 6e 63 20 6f 70 65 72 61 74  t no sync operat
dd00: 69 6f 6e 73 20 6f 63 63 75 72 20 64 75 72 69 6e  ions occur durin
dd10: 67 20 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69  g most transacti
dd20: 6f 6e 73 2e 0a 20 20 20 20 5e 57 69 74 68 20 73  ons..    ^With s
dd30: 79 6e 63 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 20  ynchronous=FULL 
dd40: 69 6e 20 57 41 4c 20 6d 6f 64 65 2c 20 61 6e 20  in WAL mode, an 
dd50: 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 20 20 73  additional.    s
dd60: 79 6e 63 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  ync operation of
dd70: 20 74 68 65 20 57 41 4c 20 66 69 6c 65 20 68 61   the WAL file ha
dd80: 70 70 65 6e 73 20 61 66 74 65 72 20 65 61 63 68  ppens after each
dd90: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
dda0: 6d 69 74 2e 0a 20 20 20 20 54 68 65 20 65 78 74  mit..    The ext
ddb0: 72 61 20 57 41 4c 20 73 79 6e 63 20 66 6f 6c 6c  ra WAL sync foll
ddc0: 6f 77 69 6e 67 20 65 61 63 68 20 74 72 61 6e 73  owing each trans
ddd0: 61 63 74 69 6f 6e 20 68 65 6c 70 20 65 6e 73 75  action help ensu
dde0: 72 65 20 74 68 61 74 20 0a 20 20 20 20 74 72 61  re that .    tra
ddf0: 6e 73 61 63 74 69 6f 6e 73 20 61 72 65 20 64 75  nsactions are du
de00: 72 61 62 6c 65 20 61 63 72 6f 73 73 20 61 20 70  rable across a p
de10: 6f 77 65 72 20 6c 6f 73 73 2e 20 20 54 72 61 6e  ower loss.  Tran
de20: 73 61 63 74 69 6f 6e 73 20 61 72 65 0a 20 20 20  sactions are.   
de30: 20 63 6f 6e 73 69 73 74 65 6e 74 20 77 69 74 68   consistent with
de40: 20 6f 72 20 77 69 74 68 6f 75 74 20 74 68 65 20   or without the 
de50: 65 78 74 72 61 20 73 79 6e 63 73 20 70 72 6f 76  extra syncs prov
de60: 69 64 65 64 20 62 79 0a 20 20 20 20 73 79 6e 63  ided by.    sync
de70: 68 72 6f 6e 6f 75 73 3d 46 55 4c 4c 2e 0a 20 20  hronous=FULL..  
de80: 20 20 49 66 20 64 75 72 61 62 69 6c 69 74 79 20    If durability 
de90: 69 73 20 6e 6f 74 20 61 20 63 6f 6e 63 65 72 6e  is not a concern
dea0: 2c 20 74 68 65 6e 20 73 79 6e 63 68 72 6f 6e 6f  , then synchrono
deb0: 75 73 3d 4e 4f 52 4d 41 4c 20 69 73 20 6e 6f 72  us=NORMAL is nor
dec0: 6d 61 6c 6c 79 0a 20 20 20 20 61 6c 6c 20 6f 6e  mally.    all on
ded0: 65 20 6e 65 65 64 73 20 69 6e 20 57 41 4c 20 6d  e needs in WAL m
dee0: 6f 64 65 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70  ode.</p>..    <p
def0: 3e 54 68 65 20 54 45 4d 50 20 73 63 68 65 6d 61  >The TEMP schema
df00: 20 61 6c 77 61 79 73 20 68 61 73 20 73 79 6e 63   always has sync
df10: 68 72 6f 6e 6f 75 73 3d 4f 46 46 20 73 69 6e 63  hronous=OFF sinc
df20: 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66  e the content of
df30: 0a 20 20 20 20 6f 66 20 54 45 4d 50 20 69 73 20  .    of TEMP is 
df40: 65 70 68 65 6d 65 72 61 6c 20 61 6e 64 20 69 73  ephemeral and is
df50: 20 6e 6f 74 20 65 78 70 65 63 74 65 64 20 74 6f   not expected to
df60: 20 73 75 72 76 69 76 65 20 61 20 70 6f 77 65 72   survive a power
df70: 20 6f 75 74 61 67 65 2e 0a 20 20 20 20 41 74 74   outage..    Att
df80: 65 6d 70 74 73 20 74 6f 20 63 68 61 6e 67 65 20  empts to change 
df90: 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  the synchronous 
dfa0: 73 65 74 74 69 6e 67 20 66 6f 72 20 54 45 4d 50  setting for TEMP
dfb0: 20 61 72 65 0a 20 20 20 20 73 69 6c 65 6e 74 6c   are.    silentl
dfc0: 79 20 69 67 6e 6f 72 65 64 2e 0a 0a 20 20 20 20  y ignored...    
dfd0: 3c 70 3e 53 65 65 20 61 6c 73 6f 20 74 68 65 20  <p>See also the 
dfe0: 5b 66 75 6c 6c 66 73 79 6e 63 5d 20 61 6e 64 20  [fullfsync] and 
dff0: 5b 63 68 65 63 6b 70 6f 69 6e 74 5f 66 75 6c 6c  [checkpoint_full
e000: 66 73 79 6e 63 5d 20 70 72 61 67 6d 61 73 2e 3c  fsync] pragmas.<
e010: 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20 74 65  /p>.}..Pragma te
e020: 6d 70 5f 73 74 6f 72 65 20 7b 0a 20 20 20 20 3c  mp_store {.    <
e030: 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20 74 65  p>^(<b>PRAGMA te
e040: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20 20  mp_store;.      
e050: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 74 65 6d    <br>PRAGMA tem
e060: 70 5f 73 74 6f 72 65 20 3d 20 3c 2f 62 3e 0a 20  p_store = </b>. 
e070: 20 20 20 20 20 20 20 20 20 20 20 3c 69 3e 30 20             <i>0 
e080: 7c 20 44 45 46 41 55 4c 54 20 7c 20 31 20 7c 20  | DEFAULT | 1 | 
e090: 46 49 4c 45 20 7c 20 32 20 7c 20 4d 45 4d 4f 52  FILE | 2 | MEMOR
e0a0: 59 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70  Y</i><b>;</b></p
e0b0: 3e 0a 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  >..    <p>Query 
e0c0: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73 65  or change the se
e0d0: 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22 3c 62  tting of the "<b
e0e0: 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 62 3e 22  >temp_store</b>"
e0f0: 20 70 61 72 61 6d 65 74 65 72 2e 29 5e 0a 20 20   parameter.)^.  
e100: 20 20 5e 57 68 65 6e 20 74 65 6d 70 5f 73 74 6f    ^When temp_sto
e110: 72 65 20 69 73 20 44 45 46 41 55 4c 54 20 28 30  re is DEFAULT (0
e120: 29 2c 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  ), the compile-t
e130: 69 6d 65 20 43 20 70 72 65 70 72 6f 63 65 73 73  ime C preprocess
e140: 6f 72 20 6d 61 63 72 6f 0a 20 20 20 20 5b 53 51  or macro.    [SQ
e150: 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 5d  LITE_TEMP_STORE]
e160: 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65   is used to dete
e170: 72 6d 69 6e 65 20 77 68 65 72 65 20 74 65 6d 70  rmine where temp
e180: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61 6e 64  orary tables and
e190: 20 69 6e 64 69 63 65 73 0a 20 20 20 20 61 72 65   indices.    are
e1a0: 20 73 74 6f 72 65 64 2e 20 20 5e 57 68 65 6e 0a   stored.  ^When.
e1b0: 20 20 20 20 74 65 6d 70 5f 73 74 6f 72 65 20 69      temp_store i
e1c0: 73 20 4d 45 4d 4f 52 59 20 28 32 29 20 5b 74 65  s MEMORY (2) [te
e1d0: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 5d 20  mporary tables] 
e1e0: 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65 20  and indices are 
e1f0: 6b 65 70 74 20 69 6e 0a 20 20 20 20 61 73 20 69  kept in.    as i
e200: 66 20 74 68 65 79 20 77 65 72 65 20 70 75 72 65  f they were pure
e210: 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61   [in-memory data
e220: 62 61 73 65 73 5d 20 6d 65 6d 6f 72 79 2e 0a 20  bases] memory.. 
e230: 20 20 20 5e 57 68 65 6e 20 74 65 6d 70 5f 73 74     ^When temp_st
e240: 6f 72 65 20 69 73 20 46 49 4c 45 20 28 31 29 20  ore is FILE (1) 
e250: 5b 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65  [temporary table
e260: 73 5d 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61  s] and indices a
e270: 72 65 20 73 74 6f 72 65 64 0a 20 20 20 20 69 6e  re stored.    in
e280: 20 61 20 66 69 6c 65 2e 20 20 5e 54 68 65 20 5b   a file.  ^The [
e290: 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63  temp_store_direc
e2a0: 74 6f 72 79 5d 20 70 72 61 67 6d 61 20 63 61 6e  tory] pragma can
e2b0: 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63   be used to spec
e2c0: 69 66 79 0a 20 20 20 20 74 68 65 20 64 69 72 65  ify.    the dire
e2d0: 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
e2e0: 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73   temporary files
e2f0: 20 77 68 65 6e 0a 20 20 20 20 3c 62 3e 46 49 4c   when.    <b>FIL
e300: 45 3c 2f 62 3e 20 69 73 20 73 70 65 63 69 66 69  E</b> is specifi
e310: 65 64 2e 20 20 5e 57 68 65 6e 20 74 68 65 20 74  ed.  ^When the t
e320: 65 6d 70 5f 73 74 6f 72 65 20 73 65 74 74 69 6e  emp_store settin
e330: 67 20 69 73 20 63 68 61 6e 67 65 64 2c 0a 20 20  g is changed,.  
e340: 20 20 61 6c 6c 20 65 78 69 73 74 69 6e 67 20 74    all existing t
e350: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2c  emporary tables,
e360: 20 69 6e 64 69 63 65 73 2c 20 74 72 69 67 67 65   indices, trigge
e370: 72 73 2c 20 61 6e 64 20 76 69 65 77 73 20 61 72  rs, and views ar
e380: 65 0a 20 20 20 20 69 6d 6d 65 64 69 61 74 65 6c  e.    immediatel
e390: 79 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 0a 0a  y deleted.</p>..
e3a0: 20 20 20 20 3c 70 3e 5e 49 74 20 69 73 20 70 6f      <p>^It is po
e3b0: 73 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20 6c  ssible for the l
e3c0: 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 2d 74  ibrary compile-t
e3d0: 69 6d 65 20 43 20 70 72 65 70 72 6f 63 65 73 73  ime C preprocess
e3e0: 6f 72 20 73 79 6d 62 6f 6c 0a 20 20 20 20 5b 53  or symbol.    [S
e3f0: 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45  QLITE_TEMP_STORE
e400: 5d 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68  ] to override th
e410: 69 73 20 70 72 61 67 6d 61 20 73 65 74 74 69 6e  is pragma settin
e420: 67 2e 0a 20 20 20 20 5e 28 54 68 65 20 66 6f 6c  g..    ^(The fol
e430: 6c 6f 77 69 6e 67 20 74 61 62 6c 65 20 73 75 6d  lowing table sum
e440: 6d 61 72 69 7a 65 73 0a 20 20 20 20 74 68 65 20  marizes.    the 
e450: 69 6e 74 65 72 61 63 74 69 6f 6e 20 6f 66 20 74  interaction of t
e460: 68 65 20 5b 53 51 4c 49 54 45 5f 54 45 4d 50 5f  he [SQLITE_TEMP_
e470: 53 54 4f 52 45 5d 20 70 72 65 70 72 6f 63 65 73  STORE] preproces
e480: 73 6f 72 20 6d 61 63 72 6f 20 61 6e 64 20 74 68  sor macro and th
e490: 65 0a 20 20 20 20 74 65 6d 70 5f 73 74 6f 72 65  e.    temp_store
e4a0: 20 70 72 61 67 6d 61 3a 3c 2f 70 3e 0a 0a 20 20   pragma:</p>..  
e4b0: 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20    <blockquote>. 
e4c0: 20 20 20 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61     <table cellpa
e4d0: 64 64 69 6e 67 3d 22 32 22 20 62 6f 72 64 65 72  dding="2" border
e4e0: 3d 22 31 22 3e 0a 20 20 20 20 3c 74 72 3e 3c 74  ="1">.    <tr><t
e4f0: 68 20 76 61 6c 69 67 6e 3d 22 62 6f 74 74 6f 6d  h valign="bottom
e500: 22 3e 5b 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53  ">[SQLITE_TEMP_S
e510: 54 4f 52 45 5d 3c 2f 74 68 3e 0a 20 20 20 20 20  TORE]</th>.     
e520: 20 20 20 3c 74 68 20 76 61 6c 69 67 6e 3d 22 62     <th valign="b
e530: 6f 74 74 6f 6d 22 3e 50 52 41 47 4d 41 3c 62 72  ottom">PRAGMA<br
e540: 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 74 68 3e  >temp_store</th>
e550: 0a 20 20 20 20 20 20 20 20 3c 74 68 3e 53 74 6f  .        <th>Sto
e560: 72 61 67 65 20 75 73 65 64 20 66 6f 72 3c 62 72  rage used for<br
e570: 3e 54 45 4d 50 20 74 61 62 6c 65 73 20 61 6e 64  >TEMP tables and
e580: 20 69 6e 64 69 63 65 73 3c 2f 74 68 3e 3c 2f 74   indices</th></t
e590: 72 3e 0a 20 20 20 20 3c 74 72 3e 3c 74 64 20 61  r>.    <tr><td a
e5a0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
e5b0: 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 74 64  /td>.        <td
e5c0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
e5d0: 3c 65 6d 3e 61 6e 79 3c 2f 65 6d 3e 3c 2f 74 64  <em>any</em></td
e5e0: 3e 0a 20 20 20 20 20 20 20 20 3c 74 64 20 61 6c  >.        <td al
e5f0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66 69 6c  ign="center">fil
e600: 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 20 20  e</td></tr>.    
e610: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  <tr><td align="c
e620: 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 0a 20 20  enter">1</td>.  
e630: 20 20 20 20 20 20 3c 74 64 20 61 6c 69 67 6e 3d        <td align=
e640: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 0a  "center">0</td>.
e650: 20 20 20 20 20 20 20 20 3c 74 64 20 61 6c 69 67          <td alig
e660: 6e 3d 22 63 65 6e 74 65 72 22 3e 66 69 6c 65 3c  n="center">file<
e670: 2f 74 64 3e 3c 2f 74 72 3e 0a 20 20 20 20 3c 74  /td></tr>.    <t
e680: 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  r><td align="cen
e690: 74 65 72 22 3e 31 3c 2f 74 64 3e 0a 20 20 20 20  ter">1</td>.    
e6a0: 20 20 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63      <td align="c
e6b0: 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 0a 20 20  enter">1</td>.  
e6c0: 20 20 20 20 20 20 3c 74 64 20 61 6c 69 67 6e 3d        <td align=
e6d0: 22 63 65 6e 74 65 72 22 3e 66 69 6c 65 3c 2f 74  "center">file</t
e6e0: 64 3e 3c 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e  d></tr>.    <tr>
e6f0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
e700: 72 22 3e 31 3c 2f 74 64 3e 0a 20 20 20 20 20 20  r">1</td>.      
e710: 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e    <td align="cen
e720: 74 65 72 22 3e 32 3c 2f 74 64 3e 0a 20 20 20 20  ter">2</td>.    
e730: 20 20 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63      <td align="c
e740: 65 6e 74 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74  enter">memory</t
e750: 64 3e 3c 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e  d></tr>.    <tr>
e760: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
e770: 72 22 3e 32 3c 2f 74 64 3e 0a 20 20 20 20 20 20  r">2</td>.      
e780: 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e    <td align="cen
e790: 74 65 72 22 3e 30 3c 2f 74 64 3e 0a 20 20 20 20  ter">0</td>.    
e7a0: 20 20 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63      <td align="c
e7b0: 65 6e 74 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74  enter">memory</t
e7c0: 64 3e 3c 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e  d></tr>.    <tr>
e7d0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
e7e0: 72 22 3e 32 3c 2f 74 64 3e 0a 20 20 20 20 20 20  r">2</td>.      
e7f0: 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e    <td align="cen
e800: 74 65 72 22 3e 31 3c 2f 74 64 3e 0a 20 20 20 20  ter">1</td>.    
e810: 20 20 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63      <td align="c
e820: 65 6e 74 65 72 22 3e 66 69 6c 65 3c 2f 74 64 3e  enter">file</td>
e830: 3c 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e 3c 74  </tr>.    <tr><t
e840: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
e850: 3e 32 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20  >2</td>.        
e860: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
e870: 72 22 3e 32 3c 2f 74 64 3e 0a 20 20 20 20 20 20  r">2</td>.      
e880: 20 20 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e    <td align="cen
e890: 74 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e  ter">memory</td>
e8a0: 3c 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e 3c 74  </tr>.    <tr><t
e8b0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
e8c0: 3e 33 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20  >3</td>.        
e8d0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
e8e0: 72 22 3e 3c 65 6d 3e 61 6e 79 3c 2f 65 6d 3e 3c  r"><em>any</em><
e8f0: 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 74 64  /td>.        <td
e900: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
e910: 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e  memory</td></tr>
e920: 0a 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20  .    </table>.  
e930: 20 20 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29    </blockquote>)
e940: 5e 0a 7d 0a 0a 4c 65 67 61 63 79 50 72 61 67 6d  ^.}..LegacyPragm
e950: 61 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72  a temp_store_dir
e960: 65 63 74 6f 72 79 20 7b 0a 20 20 20 20 3c 70 3e  ectory {.    <p>
e970: 3c 62 3e 50 52 41 47 4d 41 20 74 65 6d 70 5f 73  <b>PRAGMA temp_s
e980: 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 3b 0a  tore_directory;.
e990: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
e9a0: 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65   temp_store_dire
e9b0: 63 74 6f 72 79 20 3d 20 27 3c 2f 62 3e 3c 69 3e  ctory = '</b><i>
e9c0: 64 69 72 65 63 74 6f 72 79 2d 6e 61 6d 65 3c 2f  directory-name</
e9d0: 69 3e 3c 62 3e 27 3b 3c 2f 62 3e 3c 2f 70 3e 0a  i><b>';</b></p>.
e9e0: 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20      <p>Query or 
e9f0: 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65  change the value
ea00: 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
ea10: 5f 74 65 6d 70 5f 64 69 72 65 63 74 6f 72 79 5d  _temp_directory]
ea20: 20 67 6c 6f 62 61 6c 0a 20 20 20 20 76 61 72 69   global.    vari
ea30: 61 62 6c 65 2c 20 77 68 69 63 68 20 6d 61 6e 79  able, which many
ea40: 20 6f 70 65 72 61 74 69 6e 67 2d 73 79 73 74 65   operating-syste
ea50: 6d 20 69 6e 74 65 72 66 61 63 65 20 62 61 63 6b  m interface back
ea60: 65 6e 64 73 20 75 73 65 20 74 6f 0a 20 20 20 20  ends use to.    
ea70: 64 65 74 65 72 6d 69 6e 65 20 77 68 65 72 65 20  determine where 
ea80: 74 6f 20 73 74 6f 72 65 20 5b 74 65 6d 70 6f 72  to store [tempor
ea90: 61 72 79 20 74 61 62 6c 65 73 5d 20 61 6e 64 20  ary tables] and 
eaa0: 69 6e 64 69 63 65 73 2e 3c 2f 70 3e 0a 0a 20 20  indices.</p>..  
eab0: 20 20 3c 70 3e 57 68 65 6e 20 74 68 65 20 74 65    <p>When the te
eac0: 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f  mp_store_directo
ead0: 72 79 20 73 65 74 74 69 6e 67 20 69 73 20 63 68  ry setting is ch
eae0: 61 6e 67 65 64 2c 20 61 6c 6c 20 65 78 69 73 74  anged, all exist
eaf0: 69 6e 67 20 74 65 6d 70 6f 72 61 72 79 0a 20 20  ing temporary.  
eb00: 20 20 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65    tables, indice
eb10: 73 2c 20 74 72 69 67 67 65 72 73 2c 20 61 6e 64  s, triggers, and
eb20: 20 76 69 65 77 65 72 73 20 69 6e 20 74 68 65 20   viewers in the 
eb30: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
eb40: 69 6f 6e 20 74 68 61 74 0a 20 20 20 20 69 73 73  ion that.    iss
eb50: 75 65 64 20 74 68 65 20 70 72 61 67 6d 61 20 61  ued the pragma a
eb60: 72 65 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 64  re immediately d
eb70: 65 6c 65 74 65 64 2e 20 20 49 6e 0a 20 20 20 20  eleted.  In.    
eb80: 70 72 61 63 74 69 63 65 2c 20 74 65 6d 70 5f 73  practice, temp_s
eb90: 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20 73  tore_directory s
eba0: 68 6f 75 6c 64 20 62 65 20 73 65 74 20 69 6d 6d  hould be set imm
ebb0: 65 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 74  ediately after t
ebc0: 68 65 20 66 69 72 73 74 0a 20 20 20 20 64 61 74  he first.    dat
ebd0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
ebe0: 20 66 6f 72 20 61 20 70 72 6f 63 65 73 73 20 69   for a process i
ebf0: 73 20 6f 70 65 6e 65 64 2e 20 20 49 66 20 74 68  s opened.  If th
ec00: 65 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72  e temp_store_dir
ec10: 65 63 74 6f 72 79 0a 20 20 20 20 69 73 20 63 68  ectory.    is ch
ec20: 61 6e 67 65 64 20 66 6f 72 20 6f 6e 65 20 64 61  anged for one da
ec30: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
ec40: 6e 20 77 68 69 6c 65 20 6f 74 68 65 72 20 64 61  n while other da
ec50: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
ec60: 6e 73 0a 20 20 20 20 61 72 65 20 6f 70 65 6e 20  ns.    are open 
ec70: 69 6e 20 74 68 65 20 73 61 6d 65 20 70 72 6f 63  in the same proc
ec80: 65 73 73 2c 20 74 68 65 6e 20 74 68 65 20 62 65  ess, then the be
ec90: 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69  havior is undefi
eca0: 6e 65 64 20 61 6e 64 0a 20 20 20 20 70 72 6f 62  ned and.    prob
ecb0: 61 62 6c 79 20 75 6e 64 65 73 69 72 61 62 6c 65  ably undesirable
ecc0: 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 43 68  .</p>..    <p>Ch
ecd0: 61 6e 67 69 6e 67 20 74 68 65 20 74 65 6d 70 5f  anging the temp_
ece0: 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20  store_directory 
ecf0: 73 65 74 74 69 6e 67 20 69 73 20 3c 75 3e 6e 6f  setting is <u>no
ed00: 74 3c 2f 75 3e 20 74 68 72 65 61 64 73 61 66 65  t</u> threadsafe
ed10: 2e 0a 20 20 20 20 4e 65 76 65 72 20 63 68 61 6e  ..    Never chan
ed20: 67 65 20 74 68 65 20 74 65 6d 70 5f 73 74 6f 72  ge the temp_stor
ed30: 65 5f 64 69 72 65 63 74 6f 72 79 20 73 65 74 74  e_directory sett
ed40: 69 6e 67 20 69 66 20 61 6e 6f 74 68 65 72 20 74  ing if another t
ed50: 68 72 65 61 64 0a 20 20 20 20 77 69 74 68 69 6e  hread.    within
ed60: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
ed70: 20 69 73 20 72 75 6e 6e 69 6e 67 20 61 6e 79 20   is running any 
ed80: 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
ed90: 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
eda0: 65 2e 0a 20 20 20 20 44 6f 69 6e 67 20 73 6f 20  e..    Doing so 
edb0: 72 65 73 75 6c 74 73 20 69 6e 20 75 6e 64 65 66  results in undef
edc0: 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 20 20  ined behavior.  
edd0: 43 68 61 6e 67 69 6e 67 20 74 68 65 20 74 65 6d  Changing the tem
ede0: 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
edf0: 79 0a 20 20 20 20 73 65 74 74 69 6e 67 20 77 72  y.    setting wr
ee00: 69 74 65 73 20 74 6f 20 74 68 65 20 5b 73 71 6c  ites to the [sql
ee10: 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65 63 74  ite3_temp_direct
ee20: 6f 72 79 5d 20 67 6c 6f 62 61 6c 0a 20 20 20 20  ory] global.    
ee30: 76 61 72 69 61 62 6c 65 20 61 6e 64 20 74 68 61  variable and tha
ee40: 74 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c  t global variabl
ee50: 65 20 69 73 20 6e 6f 74 20 70 72 6f 74 65 63 74  e is not protect
ee60: 65 64 20 62 79 20 61 20 6d 75 74 65 78 2e 3c 2f  ed by a mutex.</
ee70: 70 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 65 20 76  p>..    <p>The v
ee80: 61 6c 75 65 20 3c 69 3e 64 69 72 65 63 74 6f 72  alue <i>director
ee90: 79 2d 6e 61 6d 65 3c 2f 69 3e 20 73 68 6f 75 6c  y-name</i> shoul
eea0: 64 20 62 65 20 65 6e 63 6c 6f 73 65 64 20 69 6e  d be enclosed in
eeb0: 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 2e 0a   single quotes..
eec0: 20 20 20 20 54 6f 20 72 65 76 65 72 74 20 74 68      To revert th
eed0: 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 74  e directory to t
eee0: 68 65 20 64 65 66 61 75 6c 74 2c 20 73 65 74 20  he default, set 
eef0: 74 68 65 20 3c 69 3e 64 69 72 65 63 74 6f 72 79  the <i>directory
ef00: 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 0a 20 20 20  -name</i> to.   
ef10: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
ef20: 2c 20 65 2e 67 2e 2c 20 3c 69 3e 50 52 41 47 4d  , e.g., <i>PRAGM
ef30: 41 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72  A temp_store_dir
ef40: 65 63 74 6f 72 79 20 3d 20 27 27 3c 2f 69 3e 2e  ectory = ''</i>.
ef50: 20 20 41 6e 0a 20 20 20 20 65 72 72 6f 72 20 69    An.    error i
ef60: 73 20 72 61 69 73 65 64 20 69 66 20 3c 69 3e 64  s raised if <i>d
ef70: 69 72 65 63 74 6f 72 79 2d 6e 61 6d 65 3c 2f 69  irectory-name</i
ef80: 3e 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 20 6f  > is not found o
ef90: 72 20 69 73 20 6e 6f 74 0a 20 20 20 20 77 72 69  r is not.    wri
efa0: 74 61 62 6c 65 2e 20 3c 2f 70 3e 0a 0a 20 20 20  table. </p>..   
efb0: 20 3c 70 3e 54 68 65 20 64 65 66 61 75 6c 74 20   <p>The default 
efc0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 65  directory for te
efd0: 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 64 65  mporary files de
efe0: 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 4f 53 2e  pends on the OS.
eff0: 20 20 53 6f 6d 65 0a 20 20 20 20 4f 53 20 69 6e    Some.    OS in
f000: 74 65 72 66 61 63 65 73 20 6d 61 79 20 63 68 6f  terfaces may cho
f010: 6f 73 65 20 74 6f 20 69 67 6e 6f 72 65 20 74 68  ose to ignore th
f020: 69 73 20 76 61 72 69 61 62 6c 65 20 61 6e 64 20  is variable and 
f030: 70 6c 61 63 65 20 74 65 6d 70 6f 72 61 72 79 0a  place temporary.
f040: 20 20 20 20 66 69 6c 65 73 20 69 6e 20 73 6f 6d      files in som
f050: 65 20 6f 74 68 65 72 20 64 69 72 65 63 74 6f 72  e other director
f060: 79 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  y different from
f070: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 73   the directory s
f080: 70 65 63 69 66 69 65 64 0a 20 20 20 20 68 65 72  pecified.    her
f090: 65 2e 20 20 49 6e 20 74 68 61 74 20 73 65 6e 73  e.  In that sens
f0a0: 65 2c 20 74 68 69 73 20 70 72 61 67 6d 61 20 69  e, this pragma i
f0b0: 73 20 6f 6e 6c 79 20 61 64 76 69 73 6f 72 79 2e  s only advisory.
f0c0: 3c 2f 70 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41  </p>..    DISCLA
f0d0: 49 4d 45 52 0a 7d 0a 4c 65 67 61 63 79 50 72 61  IMER.}.LegacyPra
f0e0: 67 6d 61 20 64 61 74 61 5f 73 74 6f 72 65 5f 64  gma data_store_d
f0f0: 69 72 65 63 74 6f 72 79 20 7b 0a 20 20 20 20 3c  irectory {.    <
f100: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 64 61 74 61  p><b>PRAGMA data
f110: 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79  _store_directory
f120: 3b 0a 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  ;.      <br>PRAG
f130: 4d 41 20 64 61 74 61 5f 73 74 6f 72 65 5f 64 69  MA data_store_di
f140: 72 65 63 74 6f 72 79 20 3d 20 27 3c 2f 62 3e 3c  rectory = '</b><
f150: 69 3e 64 69 72 65 63 74 6f 72 79 2d 6e 61 6d 65  i>directory-name
f160: 3c 2f 69 3e 3c 62 3e 27 3b 3c 2f 62 3e 3c 2f 70  </i><b>';</b></p
f170: 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f  >.    <p>Query o
f180: 72 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c  r change the val
f190: 75 65 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  ue of the [sqlit
f1a0: 65 33 5f 64 61 74 61 5f 64 69 72 65 63 74 6f 72  e3_data_director
f1b0: 79 5d 20 67 6c 6f 62 61 6c 0a 20 20 20 20 76 61  y] global.    va
f1c0: 72 69 61 62 6c 65 2c 20 77 68 69 63 68 20 77 69  riable, which wi
f1d0: 6e 64 6f 77 73 20 6f 70 65 72 61 74 69 6e 67 2d  ndows operating-
f1e0: 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65  system interface
f1f0: 20 62 61 63 6b 65 6e 64 73 20 75 73 65 20 74 6f   backends use to
f200: 0a 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 77  .    determine w
f210: 68 65 72 65 20 74 6f 20 73 74 6f 72 65 20 64 61  here to store da
f220: 74 61 62 61 73 65 20 66 69 6c 65 73 20 73 70 65  tabase files spe
f230: 63 69 66 69 65 64 20 75 73 69 6e 67 20 61 20 72  cified using a r
f240: 65 6c 61 74 69 76 65 0a 20 20 20 20 70 61 74 68  elative.    path
f250: 6e 61 6d 65 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c  name.</p>..    <
f260: 70 3e 43 68 61 6e 67 69 6e 67 20 74 68 65 20 64  p>Changing the d
f270: 61 74 61 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  ata_store_direct
f280: 6f 72 79 20 73 65 74 74 69 6e 67 20 69 73 20 3c  ory setting is <
f290: 75 3e 6e 6f 74 3c 2f 75 3e 20 74 68 72 65 61 64  u>not</u> thread
f2a0: 73 61 66 65 2e 0a 20 20 20 20 4e 65 76 65 72 20  safe..    Never 
f2b0: 63 68 61 6e 67 65 20 74 68 65 20 64 61 74 61 5f  change the data_
f2c0: 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20  store_directory 
f2d0: 73 65 74 74 69 6e 67 20 69 66 20 61 6e 6f 74 68  setting if anoth
f2e0: 65 72 20 74 68 72 65 61 64 0a 20 20 20 20 77 69  er thread.    wi
f2f0: 74 68 69 6e 20 74 68 65 20 61 70 70 6c 69 63 61  thin the applica
f300: 74 69 6f 6e 20 69 73 20 72 75 6e 6e 69 6e 67 20  tion is running 
f310: 61 6e 79 20 53 51 4c 69 74 65 20 69 6e 74 65 72  any SQLite inter
f320: 66 61 63 65 20 61 74 20 74 68 65 20 73 61 6d 65  face at the same
f330: 20 74 69 6d 65 2e 0a 20 20 20 20 44 6f 69 6e 67   time..    Doing
f340: 20 73 6f 20 72 65 73 75 6c 74 73 20 69 6e 20 75   so results in u
f350: 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f  ndefined behavio
f360: 72 2e 20 20 43 68 61 6e 67 69 6e 67 20 74 68 65  r.  Changing the
f370: 20 64 61 74 61 5f 73 74 6f 72 65 5f 64 69 72 65   data_store_dire
f380: 63 74 6f 72 79 0a 20 20 20 20 73 65 74 74 69 6e  ctory.    settin
f390: 67 20 77 72 69 74 65 73 20 74 6f 20 74 68 65 20  g writes to the 
f3a0: 5b 73 71 6c 69 74 65 33 5f 64 61 74 61 5f 64 69  [sqlite3_data_di
f3b0: 72 65 63 74 6f 72 79 5d 20 67 6c 6f 62 61 6c 0a  rectory] global.
f3c0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 61 6e 64      variable and
f3d0: 20 74 68 61 74 20 67 6c 6f 62 61 6c 20 76 61 72   that global var
f3e0: 69 61 62 6c 65 20 69 73 20 6e 6f 74 20 70 72 6f  iable is not pro
f3f0: 74 65 63 74 65 64 20 62 79 20 61 20 6d 75 74 65  tected by a mute
f400: 78 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 54  x.</p>..    <p>T
f410: 68 69 73 20 66 61 63 69 6c 69 74 79 20 69 73 20  his facility is 
f420: 70 72 6f 76 69 64 65 64 20 66 6f 72 20 57 69 6e  provided for Win
f430: 52 54 20 77 68 69 63 68 20 64 6f 65 73 20 6e 6f  RT which does no
f440: 74 20 68 61 76 65 20 61 6e 20 4f 53 0a 20 20 20  t have an OS.   
f450: 20 6d 65 63 68 61 6e 69 73 6d 20 66 6f 72 20 72   mechanism for r
f460: 65 61 64 69 6e 67 20 6f 72 20 63 68 61 6e 67 69  eading or changi
f470: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 77  ng the current w
f480: 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 79  orking directory
f490: 2e 0a 20 20 20 20 54 68 65 20 75 73 65 20 6f 66  ..    The use of
f4a0: 20 74 68 69 73 20 70 72 61 67 6d 61 20 69 6e 20   this pragma in 
f4b0: 61 6e 79 20 6f 74 68 65 72 20 63 6f 6e 74 65 78  any other contex
f4c0: 74 20 69 73 20 64 69 73 63 6f 75 72 61 67 65 64  t is discouraged
f4d0: 20 61 6e 64 20 6d 61 79 0a 20 20 20 20 62 65 20   and may.    be 
f4e0: 64 69 73 61 6c 6c 6f 77 65 64 20 69 6e 20 66 75  disallowed in fu
f4f0: 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e 3c 2f  ture releases.</
f500: 70 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41 49 4d  p>..    DISCLAIM
f510: 45 52 0a 7d 0a 0a 50 72 61 67 6d 61 20 74 68 72  ER.}..Pragma thr
f520: 65 61 64 73 20 7b 0a 20 20 20 20 3c 70 3e 3c 62  eads {.    <p><b
f530: 3e 50 52 41 47 4d 41 20 74 68 72 65 61 64 73 3b  >PRAGMA threads;
f540: 0a 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d  .      <br>PRAGM
f550: 41 20 74 68 72 65 61 64 73 20 3d 20 3c 2f 62 3e  A threads = </b>
f560: 3c 69 3e 4e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e  <i>N</i><b>;</b>
f570: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72  </p>.    <p>Quer
f580: 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20  y or change the 
f590: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 0a 20 20  value of the .  
f5a0: 20 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74    [sqlite3_limit
f5b0: 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49 4d  ](db,[SQLITE_LIM
f5c0: 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
f5d0: 53 5d 2c 2e 2e 2e 29 20 6c 69 6d 69 74 20 66 6f  S],...) limit fo
f5e0: 72 0a 20 20 20 20 74 68 65 20 63 75 72 72 65 6e  r.    the curren
f5f0: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
f600: 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 6c 69 6d  ction.  This lim
f610: 69 74 20 73 65 74 73 20 61 6e 20 75 70 70 65 72  it sets an upper
f620: 20 62 6f 75 6e 64 0a 20 20 20 20 6f 6e 20 74 68   bound.    on th
f630: 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69  e number of auxi
f640: 6c 69 61 72 79 20 74 68 72 65 61 64 73 20 74 68  liary threads th
f650: 61 74 20 61 20 5b 70 72 65 70 61 72 65 64 20 73  at a [prepared s
f660: 74 61 74 65 6d 65 6e 74 5d 20 69 73 0a 20 20 20  tatement] is.   
f670: 20 61 6c 6c 6f 77 65 64 20 74 6f 20 6c 61 75 6e   allowed to laun
f680: 63 68 20 74 6f 20 61 73 73 69 73 74 20 77 69 74  ch to assist wit
f690: 68 20 61 20 71 75 65 72 79 2e 20 20 54 68 65 20  h a query.  The 
f6a0: 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 20 69 73  default limit is
f6b0: 20 30 0a 20 20 20 20 75 6e 6c 65 73 73 20 69 74   0.    unless it
f6c0: 20 69 73 20 63 68 61 6e 67 65 64 20 75 73 69 6e   is changed usin
f6d0: 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 44 45  g the [SQLITE_DE
f6e0: 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52  FAULT_WORKER_THR
f6f0: 45 41 44 53 5d 0a 20 20 20 20 63 6f 6d 70 69 6c  EADS].    compil
f700: 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 20 20  e-time option.  
f710: 57 68 65 6e 20 74 68 65 20 6c 69 6d 69 74 20 69  When the limit i
f720: 73 20 7a 65 72 6f 2c 20 74 68 61 74 20 6d 65 61  s zero, that mea
f730: 6e 73 20 6e 6f 0a 20 20 20 20 61 75 78 69 6c 69  ns no.    auxili
f740: 61 72 79 20 74 68 72 65 61 64 73 20 77 69 6c 6c  ary threads will
f750: 20 62 65 20 6c 61 75 6e 63 68 65 64 2e 3c 2f 70   be launched.</p
f760: 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70  >..    <p>This p
f770: 72 61 67 6d 61 20 69 73 20 61 20 74 68 69 6e 20  ragma is a thin 
f780: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
f790: 68 65 0a 20 20 20 20 5b 73 71 6c 69 74 65 33 5f  he.    [sqlite3_
f7a0: 6c 69 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54  limit](db,[SQLIT
f7b0: 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54  E_LIMIT_WORKER_T
f7c0: 48 52 45 41 44 53 5d 2c 2e 2e 2e 29 20 69 6e 74  HREADS],...) int
f7d0: 65 72 66 61 63 65 2e 0a 20 20 20 20 3c 2f 70 3e  erface..    </p>
f7e0: 0a 7d 0a 0a 50 72 61 67 6d 61 20 63 6f 6c 6c 61  .}..Pragma colla
f7f0: 74 69 6f 6e 5f 6c 69 73 74 20 7b 0a 20 20 20 20  tion_list {.    
f800: 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20 63  <p>^(<b>PRAGMA c
f810: 6f 6c 6c 61 74 69 6f 6e 5f 6c 69 73 74 3b 3c 2f  ollation_list;</
f820: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 52 65  b></p>.    <p>Re
f830: 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74  turn a list of t
f840: 68 65 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  he collating seq
f850: 75 65 6e 63 65 73 20 64 65 66 69 6e 65 64 20 66  uences defined f
f860: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 0a 20  or the current. 
f870: 20 20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e     database conn
f880: 65 63 74 69 6f 6e 2e 3c 2f 70 3e 29 5e 0a 7d 0a  ection.</p>)^.}.
f890: 0a 50 72 61 67 6d 61 20 64 61 74 61 62 61 73 65  .Pragma database
f8a0: 5f 6c 69 73 74 20 7b 0a 20 20 20 20 3c 70 3e 5e  _list {.    <p>^
f8b0: 28 3c 62 3e 50 52 41 47 4d 41 20 64 61 74 61 62  (<b>PRAGMA datab
f8c0: 61 73 65 5f 6c 69 73 74 3b 3c 2f 62 3e 3c 2f 70  ase_list;</b></p
f8d0: 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72  >.    <p>This pr
f8e0: 61 67 6d 61 20 77 6f 72 6b 73 20 6c 69 6b 65 20  agma works like 
f8f0: 61 20 71 75 65 72 79 20 74 6f 20 72 65 74 75 72  a query to retur
f900: 6e 20 6f 6e 65 20 72 6f 77 20 66 6f 72 20 65 61  n one row for ea
f910: 63 68 20 64 61 74 61 62 61 73 65 0a 20 20 20 20  ch database.    
f920: 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20  attached to the 
f930: 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73 65  current database
f940: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 29 5e 0a 20   connection.)^. 
f950: 20 20 20 5e 28 54 68 65 20 73 65 63 6f 6e 64 20     ^(The second 
f960: 63 6f 6c 75 6d 6e 20 69 73 20 22 6d 61 69 6e 22  column is "main"
f970: 20 66 6f 72 20 74 68 65 20 6d 61 69 6e 20 64 61   for the main da
f980: 74 61 62 61 73 65 20 66 69 6c 65 2c 20 22 74 65  tabase file, "te
f990: 6d 70 22 0a 20 20 20 20 66 6f 72 20 74 68 65 20  mp".    for the 
f9a0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 75 73  database file us
f9b0: 65 64 20 74 6f 20 73 74 6f 72 65 20 54 45 4d 50  ed to store TEMP
f9c0: 20 6f 62 6a 65 63 74 73 2c 20 6f 72 20 74 68 65   objects, or the
f9d0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 0a 20 20 20   name of the.   
f9e0: 20 41 54 54 41 43 48 65 64 20 64 61 74 61 62 61   ATTACHed databa
f9f0: 73 65 20 66 6f 72 20 6f 74 68 65 72 20 64 61 74  se for other dat
fa00: 61 62 61 73 65 20 66 69 6c 65 73 2e 29 5e 0a 20  abase files.)^. 
fa10: 20 20 20 5e 28 54 68 65 20 74 68 69 72 64 20 63     ^(The third c
fa20: 6f 6c 75 6d 6e 20 69 73 20 74 68 65 20 6e 61 6d  olumn is the nam
fa30: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
fa40: 65 20 66 69 6c 65 20 69 74 73 65 6c 66 2c 20 6f  e file itself, o
fa50: 72 20 61 6e 20 65 6d 70 74 79 0a 20 20 20 20 73  r an empty.    s
fa60: 74 72 69 6e 67 20 69 66 20 74 68 65 20 64 61 74  tring if the dat
fa70: 61 62 61 73 65 20 69 73 20 6e 6f 74 20 61 73 73  abase is not ass
fa80: 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 66  ociated with a f
fa90: 69 6c 65 2e 29 5e 3c 2f 70 3e 0a 7d 0a 0a 50 72  ile.)^</p>.}..Pr
faa0: 61 67 6d 61 20 66 6f 72 65 69 67 6e 5f 6b 65 79  agma foreign_key
fab0: 5f 6c 69 73 74 20 7b 0a 20 20 20 20 3c 70 3e 5e  _list {.    <p>^
fac0: 28 3c 62 3e 50 52 41 47 4d 41 20 66 6f 72 65 69  (<b>PRAGMA forei
fad0: 67 6e 5f 6b 65 79 5f 6c 69 73 74 28 3c 2f 62 3e  gn_key_list(</b>
fae0: 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
faf0: 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a  ><b>);</b></p>..
fb00: 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67      <p>This prag
fb10: 6d 61 20 72 65 74 75 72 6e 73 20 6f 6e 65 20 72  ma returns one r
fb20: 6f 77 20 66 6f 72 20 65 61 63 68 20 5b 66 6f 72  ow for each [for
fb30: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
fb40: 69 6e 74 5d 0a 20 20 20 20 63 72 65 61 74 65 64  int].    created
fb50: 20 62 79 20 61 20 52 45 46 45 52 45 4e 43 45 53   by a REFERENCES
fb60: 20 63 6c 61 75 73 65 20 69 6e 20 74 68 65 20 43   clause in the C
fb70: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
fb80: 65 6d 65 6e 74 20 6f 66 0a 20 20 20 20 74 61 62  ement of.    tab
fb90: 6c 65 20 22 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d  le "<i>table-nam
fba0: 65 3c 2f 69 3e 22 2e 29 5e 0a 7d 0a 0a 50 72 61  e</i>".)^.}..Pra
fbb0: 67 6d 61 20 66 6f 72 65 69 67 6e 5f 6b 65 79 5f  gma foreign_key_
fbc0: 63 68 65 63 6b 20 7b 0a 20 20 20 20 3c 70 3e 5e  check {.    <p>^
fbd0: 28 3c 62 3e 50 52 41 47 4d 41 20 44 42 2e 66 6f  (<b>PRAGMA DB.fo
fbe0: 72 65 69 67 6e 5f 6b 65 79 5f 63 68 65 63 6b 3b  reign_key_check;
fbf0: 0a 20 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41  .        <br>PRA
fc00: 47 4d 41 20 44 42 2e 66 6f 72 65 69 67 6e 5f 6b  GMA DB.foreign_k
fc10: 65 79 5f 63 68 65 63 6b 28 3c 2f 62 3e 3c 69 3e  ey_check(</b><i>
fc20: 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  table-name</i><b
fc30: 3e 29 3b 3c 2f 62 3e 29 5e 3c 2f 62 3e 3c 2f 70  >);</b>)^</b></p
fc40: 3e 0a 0a 20 20 20 20 3c 70 3e 5e 28 54 68 65 20  >..    <p>^(The 
fc50: 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 63 68 65 63  foreign_key_chec
fc60: 6b 20 70 72 61 67 6d 61 20 63 68 65 63 6b 73 20  k pragma checks 
fc70: 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 6f 72  the database, or
fc80: 20 74 68 65 20 74 61 62 6c 65 0a 20 20 20 20 63   the table.    c
fc90: 61 6c 6c 65 64 20 22 3c 69 3e 74 61 62 6c 65 2d  alled "<i>table-
fca0: 6e 61 6d 65 3c 2f 69 3e 22 2c 20 66 6f 72 20 0a  name</i>", for .
fcb0: 20 20 20 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79      [foreign key
fcc0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 74 68   constraints] th
fcd0: 61 74 20 61 72 65 20 76 69 6f 6c 61 74 65 64 20  at are violated 
fce0: 61 6e 64 20 72 65 74 75 72 6e 73 20 6f 6e 65 20  and returns one 
fcf0: 72 6f 77 20 6f 66 0a 20 20 20 20 6f 75 74 70 75  row of.    outpu
fd00: 74 20 66 6f 72 20 65 61 63 68 20 76 69 6f 6c 61  t for each viola
fd10: 74 69 6f 6e 2e 29 5e 20 20 5e 54 68 65 72 65 20  tion.)^  ^There 
fd20: 61 72 65 20 66 6f 75 72 20 63 6f 6c 75 6d 6e 73  are four columns
fd30: 20 69 6e 20 65 61 63 68 20 72 65 73 75 6c 74 20   in each result 
fd40: 72 6f 77 2e 0a 20 20 20 20 5e 54 68 65 20 66 69  row..    ^The fi
fd50: 72 73 74 20 63 6f 6c 75 6d 6e 20 69 73 20 74 68  rst column is th
fd60: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
fd70: 62 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ble that contain
fd80: 73 20 74 68 65 20 52 45 46 45 52 45 4e 43 45 53  s the REFERENCES
fd90: 0a 20 20 20 20 63 6c 61 75 73 65 2e 20 20 5e 54  .    clause.  ^T
fda0: 68 65 20 73 65 63 6f 6e 64 20 63 6f 6c 75 6d 6e  he second column
fdb0: 20 69 73 20 74 68 65 20 5b 72 6f 77 69 64 5d 20   is the [rowid] 
fdc0: 6f 66 20 74 68 65 20 72 6f 77 20 74 68 61 74 0a  of the row that.
fdd0: 20 20 20 20 63 6f 6e 74 61 69 6e 73 20 74 68 65      contains the
fde0: 20 69 6e 76 61 6c 69 64 20 52 45 46 45 52 45 4e   invalid REFEREN
fdf0: 43 45 53 20 63 6c 61 75 73 65 2c 20 6f 72 20 4e  CES clause, or N
fe00: 55 4c 4c 20 69 66 20 74 68 65 20 63 68 69 6c 64  ULL if the child
fe10: 20 74 61 62 6c 65 20 69 73 20 61 0a 20 20 20 20   table is a.    
fe20: 5b 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5d 20  [WITHOUT ROWID] 
fe30: 74 61 62 6c 65 2e 20 20 5e 54 68 65 20 74 68 69  table.  ^The thi
fe40: 72 64 20 63 6f 6c 75 6d 6e 20 69 73 20 74 68 65  rd column is the
fe50: 20 6e 61 6d 65 0a 20 20 20 20 6f 66 20 74 68 65   name.    of the
fe60: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 72   table that is r
fe70: 65 66 65 72 72 65 64 20 74 6f 2e 20 5e 54 68 65  eferred to. ^The
fe80: 20 66 6f 75 72 74 68 20 63 6f 6c 75 6d 6e 20 69   fourth column i
fe90: 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66 0a 20  s the index of. 
fea0: 20 20 20 74 68 65 20 73 70 65 63 69 66 69 63 20     the specific 
feb0: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
fec0: 74 72 61 69 6e 74 20 74 68 61 74 20 66 61 69 6c  traint that fail
fed0: 65 64 2e 20 20 5e 54 68 65 20 66 6f 75 72 74 68  ed.  ^The fourth
fee0: 20 63 6f 6c 75 6d 6e 0a 20 20 20 20 69 6e 20 74   column.    in t
fef0: 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65  he output of the
ff00: 20 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 63 68 65   foreign_key_che
ff10: 63 6b 20 70 72 61 67 6d 61 20 69 73 20 74 68 65  ck pragma is the
ff20: 20 73 61 6d 65 20 69 6e 74 65 67 65 72 20 61 73   same integer as
ff30: 0a 20 20 20 20 74 68 65 20 66 69 72 73 74 20 63  .    the first c
ff40: 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 6f 75 74  olumn in the out
ff50: 70 75 74 20 6f 66 20 74 68 65 20 5b 66 6f 72 65  put of the [fore
ff60: 69 67 6e 5f 6b 65 79 5f 6c 69 73 74 20 70 72 61  ign_key_list pra
ff70: 67 6d 61 5d 2e 0a 20 20 20 20 5e 28 57 68 65 6e  gma]..    ^(When
ff80: 20 61 20 22 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d   a "<i>table-nam
ff90: 65 3c 2f 69 3e 22 20 69 73 20 73 70 65 63 69 66  e</i>" is specif
ffa0: 69 65 64 2c 20 74 68 65 20 6f 6e 6c 79 20 66 6f  ied, the only fo
ffb0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
ffc0: 61 69 6e 74 73 0a 20 20 20 20 63 68 65 63 6b 65  aints.    checke
ffd0: 64 20 61 72 65 20 74 68 6f 73 65 20 63 72 65 61  d are those crea
ffe0: 74 65 64 20 62 79 20 52 45 46 45 52 45 4e 43 45  ted by REFERENCE
fff0: 53 20 63 6c 61 75 73 65 73 20 69 6e 20 74 68 65  S clauses in the
10000 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
10010 45 20 73 74 61 74 65 6d 65 6e 74 20 66 6f 72 20  E statement for 
10020 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
10030 3e 2e 29 5e 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67  >.)^</p>.}..Prag
10040 6d 61 20 66 72 65 65 6c 69 73 74 5f 63 6f 75 6e  ma freelist_coun
10050 74 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c 62 3e  t {.    <p>^(<b>
10060 50 52 41 47 4d 41 20 44 42 2e 66 72 65 65 6c 69  PRAGMA DB.freeli
10070 73 74 5f 63 6f 75 6e 74 3b 3c 2f 62 3e 3c 2f 70  st_count;</b></p
10080 3e 0a 20 20 20 20 3c 70 3e 52 65 74 75 72 6e 20  >.    <p>Return 
10090 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e  the number of un
100a0 75 73 65 64 20 70 61 67 65 73 20 69 6e 20 74 68  used pages in th
100b0 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  e database file.
100c0 29 5e 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61  )^</p>.}..Pragma
100d0 20 69 6e 64 65 78 5f 69 6e 66 6f 20 7b 0a 20 20   index_info {.  
100e0 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41    <p>^(<b>PRAGMA
100f0 20 44 42 2e 69 6e 64 65 78 5f 69 6e 66 6f 28 3c   DB.index_info(<
10100 2f 62 3e 3c 69 3e 69 6e 64 65 78 2d 6e 61 6d 65  /b><i>index-name
10110 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70  </i><b>);</b></p
10120 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72  >.    <p>This pr
10130 61 67 6d 61 20 72 65 74 75 72 6e 73 20 6f 6e 65  agma returns one
10140 20 72 6f 77 20 66 6f 72 20 65 61 63 68 20 6b 65   row for each ke
10150 79 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20  y column in the 
10160 6e 61 6d 65 64 20 69 6e 64 65 78 2e 29 5e 0a 20  named index.)^. 
10170 20 20 20 41 20 6b 65 79 20 63 6f 6c 75 6d 6e 20     A key column 
10180 69 73 20 61 20 63 6f 6c 75 6d 6e 20 74 68 61 74  is a column that
10190 20 69 73 20 61 63 74 75 61 6c 6c 79 20 6e 61 6d   is actually nam
101a0 65 64 20 69 6e 20 74 68 65 20 5b 43 52 45 41 54  ed in the [CREAT
101b0 45 20 49 4e 44 45 58 5d 0a 20 20 20 20 69 6e 64  E INDEX].    ind
101c0 65 78 20 73 74 61 74 65 6d 65 6e 74 20 6f 72 20  ex statement or 
101d0 5b 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69  [UNIQUE constrai
101e0 6e 74 5d 20 6f 72 20 5b 50 52 49 4d 41 52 59 20  nt] or [PRIMARY 
101f0 4b 45 59 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20  KEY constraint] 
10200 74 68 61 74 0a 20 20 20 20 63 72 65 61 74 65 64  that.    created
10210 20 74 68 65 20 69 6e 64 65 78 2e 20 20 49 6e 64   the index.  Ind
10220 65 78 20 65 6e 74 72 69 65 73 20 61 6c 73 6f 20  ex entries also 
10230 75 73 75 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 20  usually contain 
10240 61 75 78 69 6c 69 61 72 79 0a 20 20 20 20 63 6f  auxiliary.    co
10250 6c 75 6d 6e 73 20 74 68 61 74 20 70 6f 69 6e 74  lumns that point
10260 20 62 61 63 6b 20 74 6f 20 74 68 65 20 74 61 62   back to the tab
10270 6c 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 64  le row being ind
10280 65 78 65 64 2e 20 20 5e 54 68 65 20 61 75 78 69  exed.  ^The auxi
10290 6c 69 61 72 79 0a 20 20 20 20 69 6e 64 65 78 2d  liary.    index-
102a0 63 6f 6c 75 6d 6e 73 20 61 72 65 20 6e 6f 74 20  columns are not 
102b0 73 68 6f 77 6e 20 62 79 20 74 68 65 20 69 6e 64  shown by the ind
102c0 65 78 5f 69 6e 66 6f 20 70 72 61 67 6d 61 2c 20  ex_info pragma, 
102d0 62 75 74 20 74 68 65 79 20 61 72 65 0a 20 20 20  but they are.   
102e0 20 6c 69 73 74 65 64 20 62 79 20 74 68 65 20 5b   listed by the [
102f0 69 6e 64 65 78 5f 78 69 6e 66 6f 20 70 72 61 67  index_xinfo prag
10300 6d 61 5d 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70  ma].</p>..    <p
10310 3e 4f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20  >Output columns 
10320 66 72 6f 6d 20 74 68 65 20 69 6e 64 65 78 5f 69  from the index_i
10330 6e 66 6f 20 70 72 61 67 6d 61 20 61 72 65 20 61  nfo pragma are a
10340 73 20 66 6f 6c 6c 6f 77 73 3a 0a 20 20 20 20 3c  s follows:.    <
10350 6f 6c 3e 0a 20 20 20 20 3c 6c 69 3e 5e 28 54 68  ol>.    <li>^(Th
10360 65 20 72 61 6e 6b 20 6f 66 20 74 68 65 20 63 6f  e rank of the co
10370 6c 75 6d 6e 20 77 69 74 68 69 6e 20 74 68 65 20  lumn within the 
10380 69 6e 64 65 78 2e 20 20 28 30 20 6d 65 61 6e 73  index.  (0 means
10390 20 6c 65 66 74 2d 6d 6f 73 74 2e 29 29 5e 0a 20   left-most.))^. 
103a0 20 20 20 3c 6c 69 3e 5e 54 68 65 20 72 61 6e 6b     <li>^The rank
103b0 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 77   of the column w
103c0 69 74 68 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ithin the table 
103d0 62 65 69 6e 67 20 69 6e 64 65 78 65 64 2e 0a 20  being indexed.. 
103e0 20 20 20 3c 6c 69 3e 5e 54 68 65 20 6e 61 6d 65     <li>^The name
103f0 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 62   of the column b
10400 65 69 6e 67 20 69 6e 64 65 78 65 64 2e 0a 20 20  eing indexed..  
10410 20 20 3c 2f 6f 6c 3e 0a 7d 0a 0a 50 72 61 67 6d    </ol>.}..Pragm
10420 61 20 69 6e 64 65 78 5f 78 69 6e 66 6f 20 7b 0a  a index_xinfo {.
10430 20 20 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47      <p>^(<b>PRAG
10440 4d 41 20 44 42 2e 69 6e 64 65 78 5f 78 69 6e 66  MA DB.index_xinf
10450 6f 28 3c 2f 62 3e 3c 69 3e 69 6e 64 65 78 2d 6e  o(</b><i>index-n
10460 61 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e  ame</i><b>);</b>
10470 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73  </p>.    <p>This
10480 20 70 72 61 67 6d 61 20 72 65 74 75 72 6e 73 20   pragma returns 
10490 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
104a0 74 20 65 76 65 72 79 20 63 6f 6c 75 6d 6e 20 69  t every column i
104b0 6e 20 61 6e 20 69 6e 64 65 78 2e 29 5e 0a 20 20  n an index.)^.  
104c0 20 20 5e 28 55 6e 6c 69 6b 65 20 74 68 69 73 20    ^(Unlike this 
104d0 5b 69 6e 64 65 78 5f 69 6e 66 6f 20 70 72 61 67  [index_info prag
104e0 6d 61 5d 2c 20 74 68 69 73 20 70 72 61 67 6d 61  ma], this pragma
104f0 20 72 65 74 75 72 6e 73 20 69 6e 66 6f 72 6d 61   returns informa
10500 74 69 6f 6e 20 61 62 6f 75 74 0a 20 20 20 20 65  tion about.    e
10510 76 65 72 79 20 63 6f 6c 75 6d 6e 20 69 6e 20 74  very column in t
10520 68 65 20 69 6e 64 65 78 2c 20 6e 6f 74 20 6a 75  he index, not ju
10530 73 74 20 74 68 65 20 6b 65 79 20 63 6f 6c 75 6d  st the key colum
10540 6e 73 2e 29 5e 0a 20 20 20 20 28 41 20 6b 65 79  ns.)^.    (A key
10550 20 63 6f 6c 75 6d 6e 20 69 73 20 61 20 63 6f 6c   column is a col
10560 75 6d 6e 20 74 68 61 74 20 69 73 20 61 63 74 75  umn that is actu
10570 61 6c 6c 79 20 6e 61 6d 65 64 20 69 6e 20 74 68  ally named in th
10580 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45 58 5d  e [CREATE INDEX]
10590 0a 20 20 20 20 69 6e 64 65 78 20 73 74 61 74 65  .    index state
105a0 6d 65 6e 74 20 6f 72 20 5b 55 4e 49 51 55 45 20  ment or [UNIQUE 
105b0 63 6f 6e 73 74 72 61 69 6e 74 5d 20 6f 72 20 5b  constraint] or [
105c0 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73  PRIMARY KEY cons
105d0 74 72 61 69 6e 74 5d 20 74 68 61 74 0a 20 20 20  traint] that.   
105e0 20 63 72 65 61 74 65 64 20 74 68 65 20 69 6e 64   created the ind
105f0 65 78 2e 20 20 41 75 78 69 6c 69 61 72 79 20 63  ex.  Auxiliary c
10600 6f 6c 75 6d 6e 73 20 61 72 65 20 61 64 64 69 74  olumns are addit
10610 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 73 20 6e 65  ional columns ne
10620 65 64 65 64 20 74 6f 0a 20 20 20 20 6c 6f 63 61  eded to.    loca
10630 74 65 20 74 68 65 20 74 61 62 6c 65 20 65 6e 74  te the table ent
10640 72 79 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f  ry that correspo
10650 6e 64 73 20 74 6f 20 65 61 63 68 20 69 6e 64 65  nds to each inde
10660 78 20 65 6e 74 72 79 2e 29 0a 0a 20 20 20 20 3c  x entry.)..    <
10670 70 3e 4f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  p>Output columns
10680 20 66 72 6f 6d 20 74 68 65 20 69 6e 64 65 78 5f   from the index_
10690 78 69 6e 66 6f 20 70 72 61 67 6d 61 20 61 72 65  xinfo pragma are
106a0 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 20 20 20   as follows:.   
106b0 20 3c 6f 6c 3e 0a 20 20 20 20 3c 6c 69 3e 5e 28   <ol>.    <li>^(
106c0 54 68 65 20 72 61 6e 6b 20 6f 66 20 74 68 65 20  The rank of the 
106d0 63 6f 6c 75 6d 6e 20 77 69 74 68 69 6e 20 74 68  column within th
106e0 65 20 69 6e 64 65 78 2e 20 28 30 20 6d 65 61 6e  e index. (0 mean
106f0 73 20 6c 65 66 74 2d 6d 6f 73 74 2e 0a 20 20 20  s left-most..   
10700 20 20 20 20 20 20 4b 65 79 20 63 6f 6c 75 6d 6e        Key column
10710 73 20 63 6f 6d 65 20 62 65 66 6f 72 65 20 61 75  s come before au
10720 78 69 6c 69 61 72 79 20 63 6f 6c 75 6d 6e 73 2e  xiliary columns.
10730 29 29 5e 0a 20 20 20 20 3c 6c 69 3e 5e 54 68 65  ))^.    <li>^The
10740 20 72 61 6e 6b 20 6f 66 20 74 68 65 20 63 6f 6c   rank of the col
10750 75 6d 6e 20 77 69 74 68 69 6e 20 74 68 65 20 74  umn within the t
10760 61 62 6c 65 20 62 65 69 6e 67 20 69 6e 64 65 78  able being index
10770 65 64 2c 20 6f 72 20 2d 31 20 69 66 0a 20 20 20  ed, or -1 if.   
10780 20 20 20 20 20 20 74 68 65 20 69 6e 64 65 78 2d        the index-
10790 63 6f 6c 75 6d 6e 20 69 73 20 74 68 65 20 5b 72  column is the [r
107a0 6f 77 69 64 5d 20 6f 66 20 74 68 65 20 74 61 62  owid] of the tab
107b0 6c 65 20 62 65 69 6e 67 20 69 6e 64 65 78 65 64  le being indexed
107c0 2e 0a 20 20 20 20 3c 6c 69 3e 5e 54 68 65 20 6e  ..    <li>^The n
107d0 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  ame of the colum
107e0 6e 20 62 65 69 6e 67 20 69 6e 64 65 78 65 64 2c  n being indexed,
107f0 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 65 20   or NULL if the 
10800 69 6e 64 65 78 2d 63 6f 6c 75 6d 6e 0a 20 20 20  index-column.   
10810 20 20 20 20 20 20 69 73 20 74 68 65 20 5b 72 6f        is the [ro
10820 77 69 64 5d 20 6f 66 20 74 68 65 20 74 61 62 6c  wid] of the tabl
10830 65 20 62 65 69 6e 67 20 69 6e 64 65 78 65 64 2e  e being indexed.
10840 0a 20 20 20 20 3c 6c 69 3e 5e 31 20 69 66 20 74  .    <li>^1 if t
10850 68 65 20 69 6e 64 65 78 2d 63 6f 6c 75 6d 6e 20  he index-column 
10860 69 73 20 73 6f 72 74 65 64 20 69 6e 20 72 65 76  is sorted in rev
10870 65 72 73 65 20 28 44 45 53 43 29 20 6f 72 64 65  erse (DESC) orde
10880 72 20 62 79 20 74 68 65 0a 20 20 20 20 20 20 20  r by the.       
10890 20 20 69 6e 64 65 78 20 61 6e 64 20 30 20 6f 74    index and 0 ot
108a0 68 65 72 77 69 73 65 2e 0a 20 20 20 20 3c 6c 69  herwise..    <li
108b0 3e 5e 54 68 65 20 6e 61 6d 65 20 66 6f 72 20 74  >^The name for t
108c0 68 65 20 5b 63 6f 6c 6c 61 74 69 6e 67 20 73 65  he [collating se
108d0 71 75 65 6e 63 65 5d 0a 20 20 20 20 20 20 20 20  quence].        
108e0 20 75 73 65 64 20 74 6f 20 63 6f 6d 70 61 72 65   used to compare
108f0 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 69   values in the i
10900 6e 64 65 78 2d 63 6f 6c 75 6d 6e 2e 0a 20 20 20  ndex-column..   
10910 20 3c 6c 69 3e 5e 31 20 69 66 20 74 68 65 20 69   <li>^1 if the i
10920 6e 64 65 78 2d 63 6f 6c 75 6d 6e 20 69 73 20 61  ndex-column is a
10930 20 6b 65 79 20 63 6f 6c 75 6d 6e 20 61 6e 64 20   key column and 
10940 30 20 69 66 20 74 68 65 20 69 6e 64 65 78 2d 63  0 if the index-c
10950 6f 6c 75 6d 6e 0a 20 20 20 20 20 20 20 20 20 69  olumn.         i
10960 73 20 61 6e 20 61 75 78 69 6c 69 61 72 79 20 63  s an auxiliary c
10970 6f 6c 75 6d 6e 2e 0a 20 20 20 20 3c 2f 6f 6c 3e  olumn..    </ol>
10980 0a 7d 0a 0a 50 72 61 67 6d 61 20 69 6e 64 65 78  .}..Pragma index
10990 5f 6c 69 73 74 20 7b 0a 20 20 20 20 3c 70 3e 5e  _list {.    <p>^
109a0 28 3c 62 3e 50 52 41 47 4d 41 20 44 42 2e 69 6e  (<b>PRAGMA DB.in
109b0 64 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c 69 3e  dex_list(</b><i>
109c0 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  table-name</i><b
109d0 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  >);</b></p>.    
109e0 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20 72  <p>This pragma r
109f0 65 74 75 72 6e 73 20 6f 6e 65 20 72 6f 77 20 66  eturns one row f
10a00 6f 72 20 65 61 63 68 20 69 6e 64 65 78 20 61 73  or each index as
10a10 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
10a20 65 0a 20 20 20 20 67 69 76 65 6e 20 74 61 62 6c  e.    given tabl
10a30 65 2e 29 5e 0a 20 20 20 20 3c 70 3e 4f 75 74 70  e.)^.    <p>Outp
10a40 75 74 20 63 6f 6c 75 6d 6e 73 20 66 72 6f 6d 20  ut columns from 
10a50 74 68 65 20 69 6e 64 65 78 5f 6c 69 73 74 20 70  the index_list p
10a60 72 61 67 6d 61 20 61 72 65 20 61 73 20 66 6f 6c  ragma are as fol
10a70 6c 6f 77 73 3a 0a 20 20 20 20 3c 6f 6c 3e 0a 20  lows:.    <ol>. 
10a80 20 20 20 3c 6c 69 3e 5e 28 41 20 73 65 71 75 65     <li>^(A seque
10a90 6e 63 65 20 6e 75 6d 62 65 72 20 61 73 73 69 67  nce number assig
10aa0 6e 65 64 20 74 6f 20 65 61 63 68 20 69 6e 64 65  ned to each inde
10ab0 78 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 74  x for internal t
10ac0 72 61 63 6b 69 6e 67 0a 20 20 20 20 20 20 20 20  racking.        
10ad0 20 20 70 75 72 70 6f 73 65 73 2e 29 5e 0a 20 20    purposes.)^.  
10ae0 20 20 3c 6c 69 3e 5e 28 54 68 65 20 6e 61 6d 65    <li>^(The name
10af0 20 6f 66 20 74 68 65 20 69 6e 64 65 78 2e 29 5e   of the index.)^
10b00 0a 20 20 20 20 3c 6c 69 3e 5e 28 22 31 22 20 69  .    <li>^("1" i
10b10 66 20 74 68 65 20 69 6e 64 65 78 20 69 73 20 55  f the index is U
10b20 4e 49 51 55 45 20 61 6e 64 20 22 30 22 20 69 66  NIQUE and "0" if
10b30 20 6e 6f 74 2e 29 5e 0a 20 20 20 20 3c 6c 69 3e   not.)^.    <li>
10b40 5e 28 22 63 22 20 69 66 20 74 68 65 20 69 6e 64  ^("c" if the ind
10b50 65 78 20 77 61 73 20 63 72 65 61 74 65 64 20 62  ex was created b
10b60 79 20 61 20 5b 43 52 45 41 54 45 20 49 4e 44 45  y a [CREATE INDE
10b70 58 5d 20 73 74 61 74 65 6d 65 6e 74 2c 0a 20 20  X] statement,.  
10b80 20 20 20 20 20 20 20 20 22 75 22 20 69 66 20 74          "u" if t
10b90 68 65 20 69 6e 64 65 78 20 77 61 73 20 63 72 65  he index was cre
10ba0 61 74 65 64 20 62 79 20 61 20 5b 55 4e 49 51 55  ated by a [UNIQU
10bb0 45 20 63 6f 6e 73 74 72 61 69 6e 74 5d 2c 20 6f  E constraint], o
10bc0 72 0a 20 20 20 20 20 20 20 20 20 20 22 70 6b 22  r.          "pk"
10bd0 20 69 66 20 74 68 65 20 69 6e 64 65 78 20 77 61   if the index wa
10be0 73 20 63 72 65 61 74 65 64 20 62 79 20 61 20 5b  s created by a [
10bf0 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73  PRIMARY KEY cons
10c00 74 72 61 69 6e 74 5d 2e 29 5e 0a 20 20 20 20 3c  traint].)^.    <
10c10 6c 69 3e 5e 28 22 31 22 20 69 66 20 74 68 65 20  li>^("1" if the 
10c20 69 6e 64 65 78 20 69 73 20 61 20 5b 70 61 72 74  index is a [part
10c30 69 61 6c 20 69 6e 64 65 78 5d 20 61 6e 64 20 22  ial index] and "
10c40 30 22 20 69 66 20 6e 6f 74 2e 29 5e 0a 20 20 20  0" if not.)^.   
10c50 20 3c 2f 6f 6c 3e 0a 20 20 20 20 3c 2f 70 3e 0a   </ol>.    </p>.
10c60 7d 0a 0a 54 65 73 74 50 72 61 67 6d 61 20 73 74  }..TestPragma st
10c70 61 74 73 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c  ats {.    <p>^(<
10c80 62 3e 50 52 41 47 4d 41 20 73 74 61 74 73 3b 3c  b>PRAGMA stats;<
10c90 2f 62 3e 29 5e 20 3c 2f 70 3e 0a 20 20 20 20 3c  /b>)^ </p>.    <
10ca0 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20 72 65  p>This pragma re
10cb0 74 75 72 6e 73 20 61 75 78 69 6c 69 61 72 79 20  turns auxiliary 
10cc0 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
10cd0 74 20 74 61 62 6c 65 73 20 61 6e 64 0a 20 20 20  t tables and.   
10ce0 20 69 6e 64 69 63 65 73 2e 20 20 54 68 65 20 72   indices.  The r
10cf0 65 74 75 72 6e 65 64 20 69 6e 66 6f 72 6d 61 74  eturned informat
10d00 69 6f 6e 20 69 73 20 75 73 65 64 20 64 75 72 69  ion is used duri
10d10 6e 67 20 74 65 73 74 69 6e 67 20 74 6f 20 68 65  ng testing to he
10d20 6c 70 0a 20 20 20 20 76 65 72 69 66 79 20 74 68  lp.    verify th
10d30 61 74 20 74 68 65 20 71 75 65 72 79 20 70 6c 61  at the query pla
10d40 6e 6e 65 72 20 69 73 20 6f 70 65 72 61 74 69 6e  nner is operatin
10d50 67 20 63 6f 72 72 65 63 74 6c 79 2e 20 20 54 68  g correctly.  Th
10d60 65 20 66 6f 72 6d 61 74 0a 20 20 20 20 61 6e 64  e format.    and
10d70 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 69 73   meaning of this
10d80 20 70 72 61 67 6d 61 20 77 69 6c 6c 20 6c 69 6b   pragma will lik
10d90 65 6c 79 20 63 68 61 6e 67 65 20 66 72 6f 6d 20  ely change from 
10da0 6f 6e 65 20 72 65 6c 65 61 73 65 0a 20 20 20 20  one release.    
10db0 74 6f 20 74 68 65 20 6e 65 78 74 2e 20 42 65 63  to the next. Bec
10dc0 61 75 73 65 20 6f 66 20 69 74 73 20 76 6f 6c 61  ause of its vola
10dd0 74 69 6c 69 74 79 2c 20 74 68 65 20 62 65 68 61  tility, the beha
10de0 76 69 6f 72 20 61 6e 64 20 6f 75 74 70 75 74 0a  vior and output.
10df0 20 20 20 20 66 6f 72 6d 61 74 20 6f 66 20 74 68      format of th
10e00 69 73 20 70 72 61 67 6d 61 20 61 72 65 20 64 65  is pragma are de
10e10 6c 69 62 65 72 61 74 65 6c 79 20 75 6e 64 6f 63  liberately undoc
10e20 75 6d 65 6e 74 65 64 2e 3c 2f 70 3e 0a 0a 20 20  umented.</p>..  
10e30 20 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d 0a 0a    DISCLAIMER.}..
10e40 50 72 61 67 6d 61 20 70 61 67 65 5f 63 6f 75 6e  Pragma page_coun
10e50 74 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c 62 3e  t {.    <p>^(<b>
10e60 50 52 41 47 4d 41 20 44 42 2e 70 61 67 65 5f 63  PRAGMA DB.page_c
10e70 6f 75 6e 74 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  ount;</b></p>.  
10e80 20 20 3c 70 3e 52 65 74 75 72 6e 20 74 68 65 20    <p>Return the 
10e90 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20  total number of 
10ea0 70 61 67 65 73 20 69 6e 20 74 68 65 20 64 61 74  pages in the dat
10eb0 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 29  abase file.</p>)
10ec0 5e 0a 7d 0a 0a 50 72 61 67 6d 61 20 74 61 62 6c  ^.}..Pragma tabl
10ed0 65 5f 69 6e 66 6f 20 7b 0a 20 20 20 20 3c 70 3e  e_info {.    <p>
10ee0 5e 28 3c 62 3e 50 52 41 47 4d 41 20 44 42 2e 74  ^(<b>PRAGMA DB.t
10ef0 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69  able_info(</b><i
10f00 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c  >table-name</i><
10f10 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  b>);</b></p>.   
10f20 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20   <p>This pragma 
10f30 72 65 74 75 72 6e 73 20 6f 6e 65 20 72 6f 77 20  returns one row 
10f40 66 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20  for each column 
10f50 69 6e 20 74 68 65 20 6e 61 6d 65 64 20 74 61 62  in the named tab
10f60 6c 65 2e 29 5e 0a 20 20 20 20 5e 43 6f 6c 75 6d  le.)^.    ^Colum
10f70 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ns in the result
10f80 20 73 65 74 20 69 6e 63 6c 75 64 65 20 74 68 65   set include the
10f90 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20   column name,.  
10fa0 20 20 64 61 74 61 20 74 79 70 65 2c 20 77 68 65    data type, whe
10fb0 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
10fc0 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 4e 55  column can be NU
10fd0 4c 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61  LL, and the defa
10fe0 75 6c 74 0a 20 20 20 20 76 61 6c 75 65 20 66 6f  ult.    value fo
10ff0 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20 20 5e  r the column.  ^
11000 54 68 65 20 22 70 6b 22 20 63 6f 6c 75 6d 6e 20  The "pk" column 
11010 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  in the result se
11020 74 20 69 73 20 7a 65 72 6f 0a 20 20 20 20 66 6f  t is zero.    fo
11030 72 20 63 6f 6c 75 6d 6e 73 20 74 68 61 74 20 61  r columns that a
11040 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74  re not part of t
11050 68 65 20 70 72 69 6d 61 72 79 20 6b 65 79 2c 20  he primary key, 
11060 61 6e 64 20 69 73 20 74 68 65 20 69 6e 64 65 78  and is the index
11070 20 6f 66 0a 20 20 20 20 74 68 65 20 63 6f 6c 75   of.    the colu
11080 6d 6e 20 69 6e 20 74 68 65 20 70 72 69 6d 61 72  mn in the primar
11090 79 20 6b 65 79 20 66 6f 72 20 63 6f 6c 75 6d 6e  y key for column
110a0 73 20 74 68 61 74 20 61 72 65 20 70 61 72 74 20  s that are part 
110b0 6f 66 20 74 68 65 20 70 72 69 6d 61 72 79 0a 20  of the primary. 
110c0 20 20 20 6b 65 79 2e 3c 2f 70 3e 0a 20 20 20 20     key.</p>.    
110d0 3c 70 3e 5e 54 68 65 20 74 61 62 6c 65 20 6e 61  <p>^The table na
110e0 6d 65 64 20 69 6e 20 74 68 65 20 74 61 62 6c 65  med in the table
110f0 5f 69 6e 66 6f 20 70 72 61 67 6d 61 20 63 61 6e  _info pragma can
11100 20 61 6c 73 6f 20 62 65 20 61 20 76 69 65 77 2e   also be a view.
11110 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 53 65 65 20  </p>.    <p>See 
11120 61 6c 73 6f 3a 20 5b 50 52 41 47 4d 41 20 74 61  also: [PRAGMA ta
11130 62 6c 65 5f 78 69 6e 66 6f 5d 0a 7d 0a 0a 50 72  ble_xinfo].}..Pr
11140 61 67 6d 61 20 74 61 62 6c 65 5f 78 69 6e 66 6f  agma table_xinfo
11150 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c 62 3e 50   {.    <p>^(<b>P
11160 52 41 47 4d 41 20 44 42 2e 74 61 62 6c 65 5f 78  RAGMA DB.table_x
11170 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c  info(</b><i>tabl
11180 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c  e-name</i><b>);<
11190 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54  /b></p>.    <p>T
111a0 68 69 73 20 70 72 61 67 6d 61 20 72 65 74 75 72  his pragma retur
111b0 6e 73 20 6f 6e 65 20 72 6f 77 20 66 6f 72 20 65  ns one row for e
111c0 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  ach column in th
111d0 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 2c 0a 20  e named table,. 
111e0 20 20 20 69 6e 63 6c 75 64 69 6e 67 20 5b 68 69     including [hi
111f0 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 5d 20 69 6e  dden columns] in
11200 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 2e   virtual tables.
11210 29 5e 0a 20 20 20 20 5e 54 68 65 20 6f 75 74 70  )^.    ^The outp
11220 75 74 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  ut is the same a
11230 73 20 66 6f 72 20 5b 50 52 41 47 4d 41 20 74 61  s for [PRAGMA ta
11240 62 6c 65 5f 69 6e 66 6f 5d 20 65 78 63 65 70 74  ble_info] except
11250 20 74 68 61 74 0a 20 20 20 20 68 69 64 64 65 6e   that.    hidden
11260 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 73 68 6f   columns are sho
11270 77 6e 20 72 61 74 68 65 72 20 74 68 61 6e 20 62  wn rather than b
11280 65 69 6e 67 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a  eing omitted..}.
11290 0a 44 61 6e 67 65 72 6f 75 73 50 72 61 67 6d 61  .DangerousPragma
112a0 20 7b 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e   {schema_version
112b0 7d 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50 52  } {.    <p><b>PR
112c0 41 47 4d 41 20 44 42 2e 73 63 68 65 6d 61 5f 76  AGMA DB.schema_v
112d0 65 72 73 69 6f 6e 3b 20 0a 20 20 20 20 20 20 3c  ersion; .      <
112e0 62 72 3e 50 52 41 47 4d 41 20 44 42 2e 73 63 68  br>PRAGMA DB.sch
112f0 65 6d 61 5f 76 65 72 73 69 6f 6e 20 3d 20 3c 2f  ema_version = </
11300 62 3e 3c 69 3e 69 6e 74 65 67 65 72 20 3c 2f 69  b><i>integer </i
11310 3e 3b 0a 0a 3c 70 3e 20 20 20 5e 54 68 65 20 73  >;..<p>   ^The s
11320 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 20 70 72  chema_version pr
11330 61 67 6d 61 20 77 69 6c 6c 20 74 6f 20 67 65 74  agma will to get
11340 20 6f 72 20 73 65 74 0a 20 20 20 20 20 20 20 74   or set.       t
11350 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
11360 73 63 68 65 6d 61 2d 76 65 72 73 69 6f 6e 20 69  schema-version i
11370 6e 74 65 67 65 72 20 61 74 20 6f 66 66 73 65 74  nteger at offset
11380 20 34 30 20 69 6e 20 74 68 65 0a 20 20 20 20 20   40 in the.     
11390 20 20 5b 64 61 74 61 62 61 73 65 20 68 65 61 64    [database head
113a0 65 72 5d 2e 20 0a 0a 3c 70 3e 20 20 20 20 5e 53  er]. ..<p>    ^S
113b0 51 4c 69 74 65 20 61 75 74 6f 6d 61 74 69 63 61  QLite automatica
113c0 6c 6c 79 20 69 6e 63 72 65 6d 65 6e 74 73 20 74  lly increments t
113d0 68 65 20 73 63 68 65 6d 61 2d 76 65 72 73 69 6f  he schema-versio
113e0 6e 20 77 68 65 6e 65 76 65 72 20 74 68 65 0a 20  n whenever the. 
113f0 20 20 20 20 20 20 73 63 68 65 6d 61 20 63 68 61        schema cha
11400 6e 67 65 73 2e 20 5e 41 73 20 65 61 63 68 20 53  nges. ^As each S
11410 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 72 75 6e  QL statement run
11420 73 2c 20 74 68 65 20 73 63 68 65 6d 61 20 76 65  s, the schema ve
11430 72 73 69 6f 6e 20 69 73 0a 20 20 20 20 20 20 20  rsion is.       
11440 63 68 65 63 6b 65 64 20 74 6f 20 65 6e 73 75 72  checked to ensur
11450 65 20 74 68 61 74 20 74 68 65 20 73 63 68 65 6d  e that the schem
11460 61 20 68 61 73 20 6e 6f 74 20 63 68 61 6e 67 65  a has not change
11470 64 20 73 69 6e 63 65 20 74 68 65 20 53 51 4c 0a  d since the SQL.
11480 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74         statement
11490 20 77 61 73 20 5b 73 71 6c 69 74 65 33 5f 70 72   was [sqlite3_pr
114a0 65 70 61 72 65 7c 70 72 65 70 61 72 65 64 5d 2e  epare|prepared].
114b0 0a 20 20 20 20 20 20 20 5e 53 75 62 76 65 72 74  .       ^Subvert
114c0 69 6e 67 20 74 68 69 73 20 6d 65 63 68 61 6e 69  ing this mechani
114d0 73 6d 20 62 79 20 75 73 69 6e 67 20 22 50 52 41  sm by using "PRA
114e0 47 4d 41 20 73 63 68 65 6d 61 5f 76 65 72 73 69  GMA schema_versi
114f0 6f 6e 22 0a 20 20 20 20 20 20 20 6d 61 79 20 63  on".       may c
11500 61 75 73 65 20 53 51 4c 20 73 74 61 74 65 6d 65  ause SQL stateme
11510 6e 74 20 74 6f 20 72 75 6e 20 75 73 69 6e 67 20  nt to run using 
11520 61 6e 20 6f 62 73 6f 6c 65 74 65 20 73 63 68 65  an obsolete sche
11530 6d 61 2c 0a 20 20 20 20 20 20 20 77 68 69 63 68  ma,.       which
11540 20 63 61 6e 20 6c 65 61 64 20 74 6f 20 69 6e 63   can lead to inc
11550 6f 72 72 65 63 74 20 61 6e 73 77 65 72 73 20 61  orrect answers a
11560 6e 64 2f 6f 72 0a 20 20 20 20 20 20 20 5b 63 66  nd/or.       [cf
11570 67 65 72 72 6f 72 73 7c 64 61 74 61 62 61 73 65  gerrors|database
11580 20 63 6f 72 72 75 70 74 69 6f 6e 5d 2e 0a 0a 20   corruption]... 
11590 20 20 20 20 20 20 44 49 53 43 4c 41 49 4d 45 52        DISCLAIMER
115a0 0a 0a 3c 70 3e 20 20 20 20 5e 46 6f 72 20 74 68  ..<p>    ^For th
115b0 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20 74 68  e purposes of th
115c0 69 73 20 70 72 61 67 6d 61 2c 20 74 68 65 20 5b  is pragma, the [
115d0 56 41 43 55 55 4d 5d 20 63 6f 6d 6d 61 6e 64 20  VACUUM] command 
115e0 69 73 20 63 6f 6e 73 69 64 65 72 65 64 0a 20 20  is considered.  
115f0 20 20 20 20 20 61 20 73 63 68 65 6d 61 20 63 68       a schema ch
11600 61 6e 67 65 2c 20 73 69 6e 63 65 20 5b 56 41 43  ange, since [VAC
11610 55 55 4d 5d 20 77 69 6c 6c 20 75 73 75 61 6c 20  UUM] will usual 
11620 61 6c 74 65 72 20 74 68 65 20 22 72 6f 6f 74 70  alter the "rootp
11630 61 67 65 22 0a 20 20 20 20 20 20 20 76 61 6c 75  age".       valu
11640 65 73 20 66 6f 72 20 65 6e 74 72 69 65 73 20 69  es for entries i
11650 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 6d 61  n the [sqlite_ma
11660 73 74 65 72 20 74 61 62 6c 65 5d 2e 0a 0a 0a 3c  ster table]....<
11670 70 3e 20 20 20 20 53 65 65 20 61 6c 73 6f 20 74  p>    See also t
11680 68 65 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 5f  he [application_
11690 69 64 20 70 72 61 67 6d 61 5d 20 61 6e 64 20 5b  id pragma] and [
116a0 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 70 72 61  user_version pra
116b0 67 6d 61 5d 2e 0a 7d 0a 0a 0a 50 72 61 67 6d 61  gma]..}...Pragma
116c0 20 7b 75 73 65 72 5f 76 65 72 73 69 6f 6e 7d 20   {user_version} 
116d0 7b 0a 20 20 20 20 20 20 3c 70 3e 3c 62 3e 50 52  {.      <p><b>PR
116e0 41 47 4d 41 20 44 42 2e 75 73 65 72 5f 76 65 72  AGMA DB.user_ver
116f0 73 69 6f 6e 3b 0a 20 20 20 20 20 20 3c 62 72 3e  sion;.      <br>
11700 50 52 41 47 4d 41 20 44 42 2e 75 73 65 72 5f 76  PRAGMA DB.user_v
11710 65 72 73 69 6f 6e 20 3d 20 3c 2f 62 3e 3c 69 3e  ersion = </b><i>
11720 69 6e 74 65 67 65 72 20 3c 2f 69 3e 3c 62 3e 3b  integer </i><b>;
11730 3c 2f 62 3e 0a 0a 20 20 0a 3c 70 3e 20 20 20 20  </b>..  .<p>    
11740 5e 54 68 65 20 75 73 65 72 5f 76 65 72 73 69 6f  ^The user_versio
11750 6e 20 70 72 61 67 6d 61 20 77 69 6c 6c 20 74 6f  n pragma will to
11760 20 67 65 74 20 6f 72 20 73 65 74 0a 20 20 20 20   get or set.    
11770 20 20 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20     the value of 
11780 74 68 65 20 75 73 65 72 2d 76 65 72 73 69 6f 6e  the user-version
11790 20 69 6e 74 65 67 65 72 20 61 74 20 6f 66 66 73   integer at offs
117a0 65 74 20 36 30 20 69 6e 20 74 68 65 0a 20 20 20  et 60 in the.   
117b0 20 20 20 20 5b 64 61 74 61 62 61 73 65 20 68 65      [database he
117c0 61 64 65 72 5d 2e 20 20 54 68 65 20 75 73 65 72  ader].  The user
117d0 2d 76 65 72 73 69 6f 6e 20 69 73 20 61 6e 20 69  -version is an i
117e0 6e 74 65 67 65 72 20 74 68 61 74 20 69 73 0a 20  nteger that is. 
117f0 20 20 20 20 20 20 61 76 61 69 6c 61 62 6c 65 20        available 
11800 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  to applications 
11810 74 6f 20 75 73 65 20 68 6f 77 65 76 65 72 20 74  to use however t
11820 68 65 79 20 77 61 6e 74 2e 20 20 53 51 4c 69 74  hey want.  SQLit
11830 65 0a 20 20 20 20 20 20 20 6d 61 6b 65 73 20 6e  e.       makes n
11840 6f 20 75 73 65 20 6f 66 20 74 68 65 20 75 73 65  o use of the use
11850 72 2d 76 65 72 73 69 6f 6e 20 69 74 73 65 6c 66  r-version itself
11860 2e 0a 0a 3c 70 3e 20 20 20 20 53 65 65 20 61 6c  ...<p>    See al
11870 73 6f 20 74 68 65 20 5b 61 70 70 6c 69 63 61 74  so the [applicat
11880 69 6f 6e 5f 69 64 20 70 72 61 67 6d 61 5d 20 61  ion_id pragma] a
11890 6e 64 20 5b 73 63 68 65 6d 61 5f 76 65 72 73 69  nd [schema_versi
118a0 6f 6e 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 50  on pragma]..}..P
118b0 72 61 67 6d 61 20 63 6f 6d 70 69 6c 65 5f 6f 70  ragma compile_op
118c0 74 69 6f 6e 73 20 7b 0a 20 20 20 20 3c 70 3e 3c  tions {.    <p><
118d0 62 3e 50 52 41 47 4d 41 20 63 6f 6d 70 69 6c 65  b>PRAGMA compile
118e0 5f 6f 70 74 69 6f 6e 73 3b 3c 2f 62 3e 3c 2f 70  _options;</b></p
118f0 3e 0a 20 20 20 20 3c 70 3e 5e 54 68 69 73 20 70  >.    <p>^This p
11900 72 61 67 6d 61 20 72 65 74 75 72 6e 73 20 74 68  ragma returns th
11910 65 20 6e 61 6d 65 73 20 6f 66 20 5b 63 6f 6d 70  e names of [comp
11920 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
11930 5d 20 75 73 65 64 20 77 68 65 6e 0a 20 20 20 20  ] used when.    
11940 62 75 69 6c 64 69 6e 67 20 53 51 4c 69 74 65 2c  building SQLite,
11950 20 6f 6e 65 20 6f 70 74 69 6f 6e 20 70 65 72 20   one option per 
11960 72 6f 77 2e 20 20 5e 54 68 65 20 22 53 51 4c 49  row.  ^The "SQLI
11970 54 45 5f 22 20 70 72 65 66 69 78 20 69 73 20 6f  TE_" prefix is o
11980 6d 69 74 74 65 64 0a 20 20 20 20 66 72 6f 6d 20  mitted.    from 
11990 74 68 65 20 72 65 74 75 72 6e 65 64 20 6f 70 74  the returned opt
119a0 69 6f 6e 20 6e 61 6d 65 73 2e 20 20 53 65 65 20  ion names.  See 
119b0 61 6c 73 6f 20 74 68 65 0a 20 20 20 20 5b 73 71  also the.    [sq
119c0 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
119d0 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b  ion_get()] C/C++
119e0 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64 20 74   interface and t
119f0 68 65 0a 20 20 20 20 5b 73 71 6c 69 74 65 5f 63  he.    [sqlite_c
11a00 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
11a10 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ()] SQL function
11a20 73 2e 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61  s.</p>.}..Pragma
11a30 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b   integrity_check
11a40 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50 52 41   {.    <p><b>PRA
11a50 47 4d 41 20 44 42 2e 69 6e 74 65 67 72 69 74 79  GMA DB.integrity
11a60 5f 63 68 65 63 6b 3b 0a 20 20 20 20 20 20 3c 62  _check;.      <b
11a70 72 3e 50 52 41 47 4d 41 20 44 42 2e 69 6e 74 65  r>PRAGMA DB.inte
11a80 67 72 69 74 79 5f 63 68 65 63 6b 28 3c 2f 62 3e  grity_check(</b>
11a90 3c 69 3e 4e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e  <i>N</i><b>)</b>
11aa0 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 5e 54 68 69  </p>.    <p>^Thi
11ab0 73 20 70 72 61 67 6d 61 20 64 6f 65 73 20 61 6e  s pragma does an
11ac0 20 69 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b   integrity check
11ad0 20 6f 66 20 74 68 65 20 65 6e 74 69 72 65 20 64   of the entire d
11ae0 61 74 61 62 61 73 65 2e 20 20 5e 54 68 65 0a 20  atabase.  ^The. 
11af0 20 20 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65     integrity_che
11b00 63 6b 20 70 72 61 67 6d 61 0a 20 20 20 20 6c 6f  ck pragma.    lo
11b10 6f 6b 73 20 66 6f 72 20 6f 75 74 2d 6f 66 2d 6f  oks for out-of-o
11b20 72 64 65 72 20 72 65 63 6f 72 64 73 2c 20 6d 69  rder records, mi
11b30 73 73 69 6e 67 20 70 61 67 65 73 2c 20 6d 61 6c  ssing pages, mal
11b40 66 6f 72 6d 65 64 20 72 65 63 6f 72 64 73 2c 20  formed records, 
11b50 6d 69 73 73 69 6e 67 0a 20 20 20 20 69 6e 64 65  missing.    inde
11b60 78 20 65 6e 74 72 69 65 73 2c 20 61 6e 64 20 55  x entries, and U
11b70 4e 49 51 55 45 2c 20 43 48 45 43 4b 2c 20 61 6e  NIQUE, CHECK, an
11b80 64 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74  d NOT NULL const
11b90 72 61 69 6e 74 20 65 72 72 6f 72 73 2e 0a 20 20  raint errors..  
11ba0 20 20 5e 49 66 20 74 68 65 20 69 6e 74 65 67 72    ^If the integr
11bb0 69 74 79 5f 63 68 65 63 6b 20 70 72 61 67 6d 61  ity_check pragma
11bc0 20 66 69 6e 64 73 20 70 72 6f 62 6c 65 6d 73 2c   finds problems,
11bd0 20 73 74 72 69 6e 67 73 20 61 72 65 20 72 65 74   strings are ret
11be0 75 72 6e 65 64 0a 20 20 20 20 28 61 73 20 6d 75  urned.    (as mu
11bf0 6c 74 69 70 6c 65 20 72 6f 77 73 20 77 69 74 68  ltiple rows with
11c00 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e   a single column
11c10 20 70 65 72 20 72 6f 77 29 20 77 68 69 63 68 20   per row) which 
11c20 64 65 73 63 72 69 62 65 0a 20 20 20 20 74 68 65  describe.    the
11c30 20 70 72 6f 62 6c 65 6d 73 2e 20 20 5e 50 72 61   problems.  ^Pra
11c40 67 6d 61 20 69 6e 74 65 67 72 69 74 79 5f 63 68  gma integrity_ch
11c50 65 63 6b 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  eck will return 
11c60 61 74 20 6d 6f 73 74 20 3c 69 3e 4e 3c 2f 69 3e  at most <i>N</i>
11c70 0a 20 20 20 20 65 72 72 6f 72 73 20 62 65 66 6f  .    errors befo
11c80 72 65 20 74 68 65 20 61 6e 61 6c 79 73 69 73 20  re the analysis 
11c90 71 75 69 74 73 2c 20 77 69 74 68 20 4e 20 64 65  quits, with N de
11ca0 66 61 75 6c 74 69 6e 67 0a 20 20 20 20 74 6f 20  faulting.    to 
11cb0 31 30 30 2e 20 20 5e 49 66 20 70 72 61 67 6d 61  100.  ^If pragma
11cc0 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b   integrity_check
11cd0 20 66 69 6e 64 73 20 6e 6f 20 65 72 72 6f 72 73   finds no errors
11ce0 2c 20 61 0a 20 20 20 20 73 69 6e 67 6c 65 20 72  , a.    single r
11cf0 6f 77 20 77 69 74 68 20 74 68 65 20 76 61 6c 75  ow with the valu
11d00 65 20 27 6f 6b 27 20 69 73 20 72 65 74 75 72 6e  e 'ok' is return
11d10 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e  ed.</p>..    <p>
11d20 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
11d30 5f 63 68 65 63 6b 20 64 6f 65 73 20 6e 6f 74 20  _check does not 
11d40 66 69 6e 64 0a 20 20 20 20 5b 66 6f 72 65 69 67  find.    [foreig
11d50 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
11d60 7c 46 4f 52 45 49 47 4e 20 4b 45 59 5d 20 65 72  |FOREIGN KEY] er
11d70 72 6f 72 73 2e 20 20 0a 20 20 20 20 55 73 65 20  rors.  .    Use 
11d80 74 68 65 20 5b 50 52 41 47 4d 41 20 66 6f 72 65  the [PRAGMA fore
11d90 69 67 6e 5f 6b 65 79 5f 63 68 65 63 6b 5d 20 63  ign_key_check] c
11da0 6f 6d 6d 61 6e 64 20 66 6f 72 20 74 6f 20 66 69  ommand for to fi
11db0 6e 64 20 65 72 72 6f 72 73 20 69 6e 0a 20 20 20  nd errors in.   
11dc0 20 46 4f 52 45 49 47 4e 20 4b 45 59 20 63 6f 6e   FOREIGN KEY con
11dd0 73 74 72 61 69 6e 74 73 2e 3c 2f 70 3e 0a 0a 20  straints.</p>.. 
11de0 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 20 74     <p>See also t
11df0 68 65 20 5b 50 52 41 47 4d 41 20 71 75 69 63 6b  he [PRAGMA quick
11e00 5f 63 68 65 63 6b 5d 20 63 6f 6d 6d 61 6e 64 20  _check] command 
11e10 77 68 69 63 68 20 64 6f 65 73 20 6d 6f 73 74 20  which does most 
11e20 6f 66 20 74 68 65 0a 20 20 20 20 63 68 65 63 6b  of the.    check
11e30 69 6e 67 20 6f 66 20 50 52 41 47 4d 41 20 69 6e  ing of PRAGMA in
11e40 74 65 67 72 69 74 79 5f 63 68 65 63 6b 20 62 75  tegrity_check bu
11e50 74 20 72 75 6e 73 20 6d 75 63 68 20 66 61 73 74  t runs much fast
11e60 65 72 2e 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d  er.</p>.}..Pragm
11e70 61 20 71 75 69 63 6b 5f 63 68 65 63 6b 20 7b 0a  a quick_check {.
11e80 20 20 20 20 3c 70 3e 3c 62 3e 50 52 41 47 4d 41      <p><b>PRAGMA
11e90 20 44 42 2e 71 75 69 63 6b 5f 63 68 65 63 6b 3b   DB.quick_check;
11ea0 0a 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d  .      <br>PRAGM
11eb0 41 20 44 42 2e 71 75 69 63 6b 5f 63 68 65 63 6b  A DB.quick_check
11ec0 28 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c 62 3e  (</b><i>N</i><b>
11ed0 29 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  )</b></p>.    <p
11ee0 3e 5e 54 68 65 20 70 72 61 67 6d 61 20 69 73 20  >^The pragma is 
11ef0 6c 69 6b 65 20 5b 69 6e 74 65 67 72 69 74 79 5f  like [integrity_
11f00 63 68 65 63 6b 5d 20 65 78 63 65 70 74 20 74 68  check] except th
11f10 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 76  at it does not v
11f20 65 72 69 66 79 0a 20 20 20 20 55 4e 49 51 55 45  erify.    UNIQUE
11f30 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 6e 64   constraints and
11f40 20 64 6f 65 73 20 6e 6f 74 20 76 65 72 69 66 79   does not verify
11f50 0a 20 20 20 20 74 68 61 74 20 69 6e 64 65 78 20  .    that index 
11f60 63 6f 6e 74 65 6e 74 20 6d 61 74 63 68 65 73 20  content matches 
11f70 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 2e 20 20  table content.  
11f80 42 79 20 73 6b 69 70 70 69 6e 67 20 55 4e 49 51  By skipping UNIQ
11f90 55 45 0a 20 20 20 20 61 6e 64 20 69 6e 64 65 78  UE.    and index
11fa0 20 63 6f 6e 73 69 73 74 65 6e 63 79 20 63 68 65   consistency che
11fb0 63 6b 73 2c 20 71 75 69 63 6b 5f 63 68 65 63 6b  cks, quick_check
11fc0 20 69 73 20 61 62 6c 65 20 74 6f 20 72 75 6e 20   is able to run 
11fd0 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61 6e  much faster than
11fe0 0a 20 20 20 20 69 6e 74 65 67 72 69 74 79 5f 63  .    integrity_c
11ff0 68 65 63 6b 2e 20 20 5e 4f 74 68 65 72 77 69 73  heck.  ^Otherwis
12000 65 20 74 68 65 20 74 77 6f 20 70 72 61 67 6d 61  e the two pragma
12010 73 20 61 72 65 20 74 68 65 20 73 61 6d 65 2e 0a  s are the same..
12020 20 20 20 20 3c 2f 70 3e 0a 7d 0a 0a 44 65 62 75      </p>.}..Debu
12030 67 50 72 61 67 6d 61 20 70 61 72 73 65 72 5f 74  gPragma parser_t
12040 72 61 63 65 20 7b 0a 20 20 20 20 3c 70 3e 3c 62  race {.    <p><b
12050 3e 50 52 41 47 4d 41 20 70 61 72 73 65 72 5f 74  >PRAGMA parser_t
12060 72 61 63 65 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f  race = </b><i>bo
12070 6f 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 20 3c 2f  olean</i><b>; </
12080 62 3e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 49  b></p>..    <p>I
12090 66 20 53 51 4c 69 74 65 20 68 61 73 20 62 65 65  f SQLite has bee
120a0 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
120b0 74 68 65 20 5b 53 51 4c 49 54 45 5f 44 45 42 55  the [SQLITE_DEBU
120c0 47 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  G] compile-time.
120d0 20 20 20 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e      option, then
120e0 20 74 68 65 20 70 61 72 73 65 72 5f 74 72 61 63   the parser_trac
120f0 65 20 70 72 61 67 6d 61 20 63 61 6e 20 62 65 20  e pragma can be 
12100 75 73 65 64 20 74 6f 20 74 75 72 6e 20 6f 6e 20  used to turn on 
12110 74 72 61 63 69 6e 67 0a 20 20 20 20 66 6f 72 20  tracing.    for 
12120 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 75  the SQL parser u
12130 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62  sed internally b
12140 79 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 54 68  y SQLite..    Th
12150 69 73 20 66 65 61 74 75 72 65 20 69 73 20 75 73  is feature is us
12160 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
12170 20 53 51 4c 69 74 65 20 69 74 73 65 6c 66 2e 3c   SQLite itself.<
12180 2f 70 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41 49  /p>..    DISCLAI
12190 4d 45 52 0a 7d 0a 0a 44 65 62 75 67 50 72 61 67  MER.}..DebugPrag
121a0 6d 61 20 76 64 62 65 5f 74 72 61 63 65 20 7b 0a  ma vdbe_trace {.
121b0 20 20 20 20 3c 70 3e 3c 62 3e 50 52 41 47 4d 41      <p><b>PRAGMA
121c0 20 76 64 62 65 5f 74 72 61 63 65 20 3d 20 3c 2f   vdbe_trace = </
121d0 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e  b><i>boolean</i>
121e0 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20 20  <b>;</b></p>..  
121f0 20 20 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 68    <p>If SQLite h
12200 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64  as been compiled
12210 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54   with the [SQLIT
12220 45 5f 44 45 42 55 47 5d 20 63 6f 6d 70 69 6c 65  E_DEBUG] compile
12230 2d 74 69 6d 65 0a 20 20 20 20 6f 70 74 69 6f 6e  -time.    option
12240 2c 20 74 68 65 6e 20 74 68 65 20 76 64 62 65 5f  , then the vdbe_
12250 74 72 61 63 65 20 70 72 61 67 6d 61 20 63 61 6e  trace pragma can
12260 20 62 65 20 75 73 65 64 20 74 6f 20 63 61 75 73   be used to caus
12270 65 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e  e virtual machin
12280 65 0a 20 20 20 20 6f 70 63 6f 64 65 73 20 74 6f  e.    opcodes to
12290 20 62 65 20 70 72 69 6e 74 65 64 20 6f 6e 20 73   be printed on s
122a0 74 61 6e 64 61 72 64 20 6f 75 74 70 75 74 20 61  tandard output a
122b0 73 20 74 68 65 79 20 61 72 65 20 65 76 61 6c 75  s they are evalu
122c0 61 74 65 64 2e 0a 20 20 20 20 54 68 69 73 20 66  ated..    This f
122d0 65 61 74 75 72 65 20 69 73 20 75 73 65 64 20 66  eature is used f
122e0 6f 72 20 64 65 62 75 67 67 69 6e 67 20 53 51 4c  or debugging SQL
122f0 69 74 65 2e 20 20 53 65 65 20 74 68 65 20 0a 20  ite.  See the . 
12300 20 20 20 3c 61 20 68 72 65 66 3d 22 76 64 62 65     <a href="vdbe
12310 2e 68 74 6d 6c 23 74 72 61 63 65 22 3e 56 44 42  .html#trace">VDB
12320 45 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 3c  E documentation<
12330 2f 61 3e 20 66 6f 72 20 6d 6f 72 65 20 0a 20 20  /a> for more .  
12340 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f    information.</
12350 70 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41 49 4d  p>..    DISCLAIM
12360 45 52 0a 7d 0a 0a 44 65 62 75 67 50 72 61 67 6d  ER.}..DebugPragm
12370 61 20 76 64 62 65 5f 6c 69 73 74 69 6e 67 20 7b  a vdbe_listing {
12380 0a 20 20 20 20 3c 70 3e 3c 62 3e 50 52 41 47 4d  .    <p><b>PRAGM
12390 41 20 76 64 62 65 5f 6c 69 73 74 69 6e 67 20 3d  A vdbe_listing =
123a0 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c   </b><i>boolean<
123b0 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a  /i><b>;</b></p>.
123c0 0a 20 20 20 20 3c 70 3e 49 66 20 53 51 4c 69 74  .    <p>If SQLit
123d0 65 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69  e has been compi
123e0 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53 51  led with the [SQ
123f0 4c 49 54 45 5f 44 45 42 55 47 5d 20 63 6f 6d 70  LITE_DEBUG] comp
12400 69 6c 65 2d 74 69 6d 65 0a 20 20 20 20 6f 70 74  ile-time.    opt
12410 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 76 64  ion, then the vd
12420 62 65 5f 6c 69 73 74 69 6e 67 20 70 72 61 67 6d  be_listing pragm
12430 61 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  a can be used to
12440 20 63 61 75 73 65 20 61 20 63 6f 6d 70 6c 65 74   cause a complet
12450 65 0a 20 20 20 20 6c 69 73 74 69 6e 67 20 6f 66  e.    listing of
12460 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d 61 63   the virtual mac
12470 68 69 6e 65 20 6f 70 63 6f 64 65 73 20 74 6f 20  hine opcodes to 
12480 61 70 70 65 61 72 20 6f 6e 20 73 74 61 6e 64 61  appear on standa
12490 72 64 20 6f 75 74 70 75 74 0a 20 20 20 20 61 73  rd output.    as
124a0 20 65 61 63 68 20 73 74 61 74 65 6d 65 6e 74 20   each statement 
124b0 69 73 20 65 76 61 6c 75 61 74 65 64 2e 0a 20 20  is evaluated..  
124c0 20 20 57 69 74 68 20 6c 69 73 74 69 6e 67 20 69    With listing i
124d0 73 20 6f 6e 2c 20 74 68 65 20 65 6e 74 69 72 65  s on, the entire
124e0 20 63 6f 6e 74 65 6e 74 20 6f 66 20 61 20 70 72   content of a pr
124f0 6f 67 72 61 6d 20 69 73 20 70 72 69 6e 74 65 64  ogram is printed
12500 0a 20 20 20 20 6a 75 73 74 20 70 72 69 6f 72 20  .    just prior 
12510 74 6f 20 62 65 67 69 6e 6e 69 6e 67 20 65 78 65  to beginning exe
12520 63 75 74 69 6f 6e 2e 20 20 54 68 65 20 73 74 61  cution.  The sta
12530 74 65 6d 65 6e 74 0a 20 20 20 20 65 78 65 63 75  tement.    execu
12540 74 65 73 20 6e 6f 72 6d 61 6c 6c 79 20 61 66 74  tes normally aft
12550 65 72 20 74 68 65 20 6c 69 73 74 69 6e 67 20 69  er the listing i
12560 73 20 70 72 69 6e 74 65 64 2e 0a 20 20 20 20 54  s printed..    T
12570 68 69 73 20 66 65 61 74 75 72 65 20 69 73 20 75  his feature is u
12580 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
12590 67 20 53 51 4c 69 74 65 20 69 74 73 65 6c 66 2e  g SQLite itself.
125a0 20 20 53 65 65 20 74 68 65 20 0a 20 20 20 20 3c    See the .    <
125b0 61 20 68 72 65 66 3d 22 76 64 62 65 2e 68 74 6d  a href="vdbe.htm
125c0 6c 23 74 72 61 63 65 22 3e 56 44 42 45 20 64 6f  l#trace">VDBE do
125d0 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 61 3e 20  cumentation</a> 
125e0 66 6f 72 20 6d 6f 72 65 20 0a 20 20 20 20 69 6e  for more .    in
125f0 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
12600 20 20 20 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d      DISCLAIMER.}
12610 0a 0a 44 65 62 75 67 50 72 61 67 6d 61 20 76 64  ..DebugPragma vd
12620 62 65 5f 64 65 62 75 67 20 7b 0a 20 20 20 20 3c  be_debug {.    <
12630 70 3e 3c 62 3e 50 52 41 47 4d 41 20 76 64 62 65  p><b>PRAGMA vdbe
12640 5f 64 65 62 75 67 20 3d 20 3c 2f 62 3e 3c 69 3e  _debug = </b><i>
12650 62 6f 6f 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c  boolean</i><b>;<
12660 2f 62 3e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e  /b></p>..    <p>
12670 49 66 20 53 51 4c 69 74 65 20 68 61 73 20 62 65  If SQLite has be
12680 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
12690 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 44 45 42   the [SQLITE_DEB
126a0 55 47 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  UG] compile-time
126b0 0a 20 20 20 20 6f 70 74 69 6f 6e 2c 20 74 68 65  .    option, the
126c0 6e 20 74 68 65 20 76 64 62 65 5f 64 65 62 75 67  n the vdbe_debug
126d0 20 70 72 61 67 6d 61 20 69 73 20 61 20 73 68 6f   pragma is a sho
126e0 72 74 68 61 6e 64 20 66 6f 72 20 74 68 72 65 65  rthand for three
126f0 20 6f 74 68 65 72 0a 20 20 20 20 64 65 62 75 67   other.    debug
12700 2d 6f 6e 6c 79 20 70 72 61 67 6d 61 73 3a 20 76  -only pragmas: v
12710 64 62 65 5f 61 64 64 6f 70 74 72 61 63 65 2c 20  dbe_addoptrace, 
12720 76 64 62 65 5f 6c 69 73 74 69 6e 67 2c 20 61 6e  vdbe_listing, an
12730 64 20 76 64 62 65 5f 74 72 61 63 65 2e 0a 20 20  d vdbe_trace..  
12740 20 20 54 68 69 73 20 66 65 61 74 75 72 65 20 69    This feature i
12750 73 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  s used for debug
12760 67 69 6e 67 20 53 51 4c 69 74 65 20 69 74 73 65  ging SQLite itse
12770 6c 66 2e 20 20 53 65 65 20 74 68 65 20 0a 20 20  lf.  See the .  
12780 20 20 3c 61 20 68 72 65 66 3d 22 76 64 62 65 2e    <a href="vdbe.
12790 68 74 6d 6c 23 74 72 61 63 65 22 3e 56 44 42 45  html#trace">VDBE
127a0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f   documentation</
127b0 61 3e 20 66 6f 72 20 6d 6f 72 65 20 0a 20 20 20  a> for more .   
127c0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70   information.</p
127d0 3e 0a 0a 20 20 20 20 44 49 53 43 4c 41 49 4d 45  >..    DISCLAIME
127e0 52 0a 7d 0a 44 65 62 75 67 50 72 61 67 6d 61 20  R.}.DebugPragma 
127f0 76 64 62 65 5f 61 64 64 6f 70 74 72 61 63 65 20  vdbe_addoptrace 
12800 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50 52 41 47  {.    <p><b>PRAG
12810 4d 41 20 76 64 62 65 5f 61 64 64 6f 70 74 72 61  MA vdbe_addoptra
12820 63 65 20 3d 20 3c 2f 62 3e 3c 69 3e 62 6f 6f 6c  ce = </b><i>bool
12830 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c  ean</i><b>;</b><
12840 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 49 66 20 53  /p>..    <p>If S
12850 51 4c 69 74 65 20 68 61 73 20 62 65 65 6e 20 63  QLite has been c
12860 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
12870 20 5b 53 51 4c 49 54 45 5f 44 45 42 55 47 5d 20   [SQLITE_DEBUG] 
12880 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 20  compile-time.   
12890 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68   option, then th
128a0 65 20 76 64 62 65 5f 61 64 64 6f 70 74 72 61 63  e vdbe_addoptrac
128b0 65 20 70 72 61 67 6d 61 20 63 61 6e 20 62 65 20  e pragma can be 
128c0 75 73 65 64 20 74 6f 20 63 61 75 73 65 20 61 20  used to cause a 
128d0 63 6f 6d 70 6c 65 74 65 0a 20 20 20 20 56 44 42  complete.    VDB
128e0 45 20 6f 70 63 6f 64 65 73 20 74 6f 20 62 65 20  E opcodes to be 
128f0 64 69 73 70 6c 61 79 65 64 20 61 73 20 74 68 65  displayed as the
12900 79 20 61 72 65 20 63 72 65 61 74 65 64 20 64 75  y are created du
12910 72 69 6e 67 20 63 6f 64 65 20 67 65 6e 65 72 61  ring code genera
12920 74 69 6f 6e 2e 0a 20 20 20 20 54 68 69 73 20 66  tion..    This f
12930 65 61 74 75 72 65 20 69 73 20 75 73 65 64 20 66  eature is used f
12940 6f 72 20 64 65 62 75 67 67 69 6e 67 20 53 51 4c  or debugging SQL
12950 69 74 65 20 69 74 73 65 6c 66 2e 20 20 53 65 65  ite itself.  See
12960 20 74 68 65 20 0a 20 20 20 20 3c 61 20 68 72 65   the .    <a hre
12970 66 3d 22 76 64 62 65 2e 68 74 6d 6c 23 74 72 61  f="vdbe.html#tra
12980 63 65 22 3e 56 44 42 45 20 64 6f 63 75 6d 65 6e  ce">VDBE documen
12990 74 61 74 69 6f 6e 3c 2f 61 3e 20 66 6f 72 20 6d  tation</a> for m
129a0 6f 72 65 20 0a 20 20 20 20 69 6e 66 6f 72 6d 61  ore .    informa
129b0 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 20 20 20 20 44  tion.</p>..    D
129c0 49 53 43 4c 41 49 4d 45 52 0a 7d 0a 0a 50 72 61  ISCLAIMER.}..Pra
129d0 67 6d 61 20 77 61 6c 5f 63 68 65 63 6b 70 6f 69  gma wal_checkpoi
129e0 6e 74 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50  nt {.    <p><b>P
129f0 52 41 47 4d 41 20 44 42 2e 77 61 6c 5f 63 68 65  RAGMA DB.wal_che
12a00 63 6b 70 6f 69 6e 74 3b 3c 2f 62 3e 3c 62 72 3e  ckpoint;</b><br>
12a10 0a 20 20 20 20 20 20 20 3c 62 3e 50 52 41 47 4d  .       <b>PRAGM
12a20 41 20 44 42 2e 77 61 6c 5f 63 68 65 63 6b 70 6f  A DB.wal_checkpo
12a30 69 6e 74 28 50 41 53 53 49 56 45 29 3b 3c 2f 62  int(PASSIVE);</b
12a40 3e 3c 62 72 3e 0a 20 20 20 20 20 20 20 3c 62 3e  ><br>.       <b>
12a50 50 52 41 47 4d 41 20 44 42 2e 77 61 6c 5f 63 68  PRAGMA DB.wal_ch
12a60 65 63 6b 70 6f 69 6e 74 28 46 55 4c 4c 29 3b 3c  eckpoint(FULL);<
12a70 2f 62 3e 3c 62 72 3e 0a 20 20 20 20 20 20 20 3c  /b><br>.       <
12a80 62 3e 50 52 41 47 4d 41 20 44 42 2e 77 61 6c 5f  b>PRAGMA DB.wal_
12a90 63 68 65 63 6b 70 6f 69 6e 74 28 52 45 53 54 41  checkpoint(RESTA
12aa0 52 54 29 3b 3c 2f 62 3e 3c 62 72 3e 0a 20 20 20  RT);</b><br>.   
12ab0 20 20 20 20 3c 62 3e 50 52 41 47 4d 41 20 44 42      <b>PRAGMA DB
12ac0 2e 77 61 6c 5f 63 68 65 63 6b 70 6f 69 6e 74 28  .wal_checkpoint(
12ad0 54 52 55 4e 43 41 54 45 29 3b 3c 2f 62 3e 0a 20  TRUNCATE);</b>. 
12ae0 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 5e    </p>..    <p>^
12af0 49 66 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68  If the [write-ah
12b00 65 61 64 20 6c 6f 67 5d 20 69 73 20 65 6e 61 62  ead log] is enab
12b10 6c 65 64 20 28 76 69 61 20 74 68 65 20 5b 6a 6f  led (via the [jo
12b20 75 72 6e 61 6c 5f 6d 6f 64 65 20 70 72 61 67 6d  urnal_mode pragm
12b30 61 5d 29 2c 0a 20 20 20 20 74 68 69 73 20 70 72  a]),.    this pr
12b40 61 67 6d 61 20 63 61 75 73 65 73 20 61 20 5b 63  agma causes a [c
12b50 68 65 63 6b 70 6f 69 6e 74 5d 20 6f 70 65 72 61  heckpoint] opera
12b60 74 69 6f 6e 20 74 6f 20 72 75 6e 20 6f 6e 20 64  tion to run on d
12b70 61 74 61 62 61 73 65 0a 20 20 20 20 3c 69 3e 64  atabase.    <i>d
12b80 61 74 61 62 61 73 65 3c 2f 69 3e 2c 20 6f 72 20  atabase</i>, or 
12b90 6f 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20  on all attached 
12ba0 64 61 74 61 62 61 73 65 73 20 69 66 20 3c 69 3e  databases if <i>
12bb0 64 61 74 61 62 61 73 65 3c 2f 69 3e 0a 20 20 20  database</i>.   
12bc0 20 69 73 20 6f 6d 69 74 74 65 64 2e 20 20 5e 49   is omitted.  ^I
12bd0 66 20 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c  f [write-ahead l
12be0 6f 67 5d 20 6d 6f 64 65 20 69 73 20 64 69 73 61  og] mode is disa
12bf0 62 6c 65 64 2c 20 74 68 69 73 20 70 72 61 67 6d  bled, this pragm
12c00 61 20 69 73 20 61 0a 20 20 20 20 68 61 72 6d 6c  a is a.    harml
12c10 65 73 73 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a  ess no-op.</p>..
12c20 20 20 20 20 3c 70 3e 5e 49 6e 76 6f 6b 69 6e 67      <p>^Invoking
12c30 20 74 68 69 73 0a 20 20 20 20 70 72 61 67 6d 61   this.    pragma
12c40 20 77 69 74 68 6f 75 74 20 61 6e 20 61 72 67 75   without an argu
12c50 6d 65 6e 74 20 69 73 20 65 71 75 69 76 61 6c 65  ment is equivale
12c60 6e 74 20 74 6f 20 63 61 6c 6c 69 6e 67 20 74 68  nt to calling th
12c70 65 0a 20 20 20 20 5b 73 71 6c 69 74 65 33 5f 77  e.    [sqlite3_w
12c80 61 6c 5f 63 68 65 63 6b 70 6f 69 6e 74 28 29 5d  al_checkpoint()]
12c90 20 43 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70   C interface.</p
12ca0 3e 0a 20 20 20 20 5e 28 49 6e 76 6f 6b 69 6e 67  >.    ^(Invoking
12cb0 20 74 68 69 73 20 70 72 61 67 6d 61 20 77 69 74   this pragma wit
12cc0 68 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 69 73  h an argument is
12cd0 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 63   equivalent to c
12ce0 61 6c 6c 69 6e 67 20 74 68 65 0a 20 20 20 20 5b  alling the.    [
12cf0 73 71 6c 69 74 65 33 5f 77 61 6c 5f 63 68 65 63  sqlite3_wal_chec
12d00 6b 70 6f 69 6e 74 5f 76 32 28 29 5d 20 43 20 69  kpoint_v2()] C i
12d10 6e 74 65 72 66 61 63 65 20 77 69 74 68 20 61 20  nterface with a 
12d20 0a 20 20 20 20 5b 53 51 4c 49 54 45 5f 43 48 45  .    [SQLITE_CHE
12d30 43 4b 50 4f 49 4e 54 5f 50 41 53 53 49 56 45 20  CKPOINT_PASSIVE 
12d40 7c 20 33 72 64 20 70 61 72 61 6d 65 74 65 72 5d  | 3rd parameter]
12d50 0a 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69  .    correspondi
12d60 6e 67 20 74 6f 20 74 68 65 20 61 72 67 75 6d 65  ng to the argume
12d70 6e 74 3a 29 5e 0a 0a 20 20 20 20 3c 64 6c 3e 0a  nt:)^..    <dl>.
12d80 20 20 20 20 5e 28 3c 64 74 3e 50 41 53 53 49 56      ^(<dt>PASSIV
12d90 45 3c 64 64 3e 0a 20 20 20 20 20 20 43 68 65 63  E<dd>.      Chec
12da0 6b 70 6f 69 6e 74 20 61 73 20 6d 61 6e 79 20 66  kpoint as many f
12db0 72 61 6d 65 73 20 61 73 20 70 6f 73 73 69 62 6c  rames as possibl
12dc0 65 20 77 69 74 68 6f 75 74 20 77 61 69 74 69 6e  e without waitin
12dd0 67 20 66 6f 72 20 61 6e 79 20 64 61 74 61 62 61  g for any databa
12de0 73 65 20 0a 20 20 20 20 20 20 72 65 61 64 65 72  se .      reader
12df0 73 20 6f 72 20 77 72 69 74 65 72 73 20 74 6f 20  s or writers to 
12e00 66 69 6e 69 73 68 2e 20 53 79 6e 63 20 74 68 65  finish. Sync the
12e10 20 64 62 20 66 69 6c 65 20 69 66 20 61 6c 6c 20   db file if all 
12e20 66 72 61 6d 65 73 20 69 6e 20 74 68 65 20 6c 6f  frames in the lo
12e30 67 0a 20 20 20 20 20 20 61 72 65 20 63 68 65 63  g.      are chec
12e40 6b 70 6f 69 6e 74 65 64 2e 29 5e 20 5e 28 54 68  kpointed.)^ ^(Th
12e50 69 73 20 6d 6f 64 65 20 69 73 20 74 68 65 20 73  is mode is the s
12e60 61 6d 65 20 61 73 20 63 61 6c 6c 69 6e 67 20 74  ame as calling t
12e70 68 65 0a 20 20 20 20 20 20 5b 73 71 6c 69 74 65  he.      [sqlite
12e80 33 5f 77 61 6c 5f 63 68 65 63 6b 70 6f 69 6e 74  3_wal_checkpoint
12e90 28 29 5d 20 43 20 69 6e 74 65 72 66 61 63 65 2e  ()] C interface.
12ea0 29 5e 20 5e 28 54 68 65 0a 20 20 20 20 20 20 5b  )^ ^(The.      [
12eb0 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e  sqlite3_busy_han
12ec0 64 6c 65 72 7c 62 75 73 79 2d 68 61 6e 64 6c 65  dler|busy-handle
12ed0 72 20 63 61 6c 6c 62 61 63 6b 5d 20 69 73 20 6e  r callback] is n
12ee0 65 76 65 72 20 69 6e 76 6f 6b 65 64 20 69 6e 0a  ever invoked in.
12ef0 20 20 20 20 20 20 74 68 69 73 20 6d 6f 64 65 2e        this mode.
12f00 29 5e 0a 20 20 20 0a 20 20 20 20 5e 28 3c 64 74  )^.   .    ^(<dt
12f10 3e 46 55 4c 4c 3c 64 64 3e 0a 20 20 20 20 20 20  >FULL<dd>.      
12f20 54 68 69 73 20 6d 6f 64 65 20 62 6c 6f 63 6b 73  This mode blocks
12f30 20 0a 20 20 20 20 20 20 28 69 6e 76 6f 6b 65 73   .      (invokes
12f40 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 75   the [sqlite3_bu
12f50 73 79 5f 68 61 6e 64 6c 65 72 7c 62 75 73 79 2d  sy_handler|busy-
12f60 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b  handler callback
12f70 5d 29 0a 20 20 20 20 20 20 75 6e 74 69 6c 20 74  ]).      until t
12f80 68 65 72 65 20 69 73 20 6e 6f 0a 20 20 20 20 20  here is no.     
12f90 20 64 61 74 61 62 61 73 65 20 77 72 69 74 65 72   database writer
12fa0 20 61 6e 64 20 61 6c 6c 20 72 65 61 64 65 72 73   and all readers
12fb0 20 61 72 65 20 72 65 61 64 69 6e 67 20 66 72 6f   are reading fro
12fc0 6d 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  m the most recen
12fd0 74 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 20  t database.     
12fe0 20 73 6e 61 70 73 68 6f 74 2e 20 49 74 20 74 68   snapshot. It th
12ff0 65 6e 20 63 68 65 63 6b 70 6f 69 6e 74 73 20 61  en checkpoints a
13000 6c 6c 20 66 72 61 6d 65 73 20 69 6e 20 74 68 65  ll frames in the
13010 20 6c 6f 67 20 66 69 6c 65 20 61 6e 64 20 73 79   log file and sy
13020 6e 63 73 20 74 68 65 0a 20 20 20 20 20 20 64 61  ncs the.      da
13030 74 61 62 61 73 65 20 66 69 6c 65 2e 29 5e 20 5e  tabase file.)^ ^
13040 28 46 55 4c 4c 20 62 6c 6f 63 6b 73 20 63 6f 6e  (FULL blocks con
13050 63 75 72 72 65 6e 74 20 77 72 69 74 65 72 73 20  current writers 
13060 77 68 69 6c 65 20 69 74 20 69 73 0a 20 20 20 20  while it is.    
13070 20 20 72 75 6e 6e 69 6e 67 2c 20 62 75 74 20 72    running, but r
13080 65 61 64 65 72 73 20 63 61 6e 20 70 72 6f 63 65  eaders can proce
13090 65 64 2e 29 5e 0a 20 20 20 0a 20 20 20 20 5e 28  ed.)^.   .    ^(
130a0 3c 64 74 3e 52 45 53 54 41 52 54 3c 64 64 3e 0a  <dt>RESTART<dd>.
130b0 20 20 20 20 20 20 54 68 69 73 20 6d 6f 64 65 20        This mode 
130c0 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 77  works the same w
130d0 61 79 20 61 73 20 46 55 4c 4c 20 77 69 74 68 20  ay as FULL with 
130e0 74 68 65 20 61 64 64 69 74 69 6f 6e 20 74 68 61  the addition tha
130f0 74 20 61 66 74 65 72 20 0a 20 20 20 20 20 20 63  t after .      c
13100 68 65 63 6b 70 6f 69 6e 74 69 6e 67 20 74 68 65  heckpointing the
13110 20 6c 6f 67 20 66 69 6c 65 20 69 74 20 62 6c 6f   log file it blo
13120 63 6b 73 20 28 63 61 6c 6c 73 20 74 68 65 20 0a  cks (calls the .
13130 20 20 20 20 20 20 5b 73 71 6c 69 74 65 33 5f 62        [sqlite3_b
13140 75 73 79 5f 68 61 6e 64 6c 65 72 7c 62 75 73 79  usy_handler|busy
13150 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63  -handler callbac
13160 6b 5d 29 0a 20 20 20 20 20 20 75 6e 74 69 6c 20  k]).      until 
13170 61 6c 6c 20 72 65 61 64 65 72 73 20 61 72 65 20  all readers are 
13180 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 74 68  finished with th
13190 65 20 6c 6f 67 20 66 69 6c 65 2e 29 5e 20 54 68  e log file.)^ Th
131a0 69 73 20 65 6e 73 75 72 65 73 20 0a 20 20 20 20  is ensures .    
131b0 20 20 74 68 61 74 20 74 68 65 20 6e 65 78 74 20    that the next 
131c0 63 6c 69 65 6e 74 20 74 6f 20 77 72 69 74 65 20  client to write 
131d0 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
131e0 66 69 6c 65 20 72 65 73 74 61 72 74 73 20 74 68  file restarts th
131f0 65 20 6c 6f 67 20 66 69 6c 65 20 0a 20 20 20 20  e log file .    
13200 20 20 66 72 6f 6d 20 74 68 65 20 62 65 67 69 6e    from the begin
13210 6e 69 6e 67 2e 20 5e 28 52 45 53 54 41 52 54 20  ning. ^(RESTART 
13220 62 6c 6f 63 6b 73 20 63 6f 6e 63 75 72 72 65 6e  blocks concurren
13230 74 20 77 72 69 74 65 72 73 20 77 68 69 6c 65 20  t writers while 
13240 69 74 20 69 73 0a 20 20 20 20 20 20 72 75 6e 6e  it is.      runn
13250 69 6e 67 2c 20 62 75 74 20 61 6c 6c 6f 77 65 64  ing, but allowed
13260 20 72 65 61 64 65 72 73 20 74 6f 20 70 72 6f 63   readers to proc
13270 65 65 64 2e 29 5e 0a 20 20 20 0a 20 20 20 20 5e  eed.)^.   .    ^
13280 28 3c 64 74 3e 54 52 55 4e 43 41 54 45 3c 64 64  (<dt>TRUNCATE<dd
13290 3e 0a 20 20 20 20 20 20 54 68 69 73 20 6d 6f 64  >.      This mod
132a0 65 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65  e works the same
132b0 20 77 61 79 20 61 73 20 52 45 53 54 41 52 54 20   way as RESTART 
132c0 77 69 74 68 20 74 68 65 20 0a 20 20 20 20 20 20  with the .      
132d0 61 64 64 69 74 69 6f 6e 20 74 68 61 74 20 74 68  addition that th
132e0 65 20 57 41 4c 20 66 69 6c 65 20 69 73 20 74 72  e WAL file is tr
132f0 75 6e 63 61 74 65 64 20 74 6f 20 7a 65 72 6f 20  uncated to zero 
13300 62 79 74 65 73 20 75 70 6f 6e 20 73 75 63 63 65  bytes upon succe
13310 73 73 66 75 6c 0a 20 20 20 20 20 20 63 6f 6d 70  ssful.      comp
13320 6c 65 74 69 6f 6e 2e 29 5e 0a 20 20 20 20 3c 2f  letion.)^.    </
13330 64 6c 3e 0a 0a 0a 20 20 20 20 3c 70 3e 5e 54 68  dl>...    <p>^Th
13340 65 20 77 61 6c 5f 63 68 65 63 6b 70 6f 69 6e 74  e wal_checkpoint
13350 20 70 72 61 67 6d 61 20 72 65 74 75 72 6e 73 20   pragma returns 
13360 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 77 69 74  a single row wit
13370 68 20 74 68 72 65 65 0a 20 20 20 20 69 6e 74 65  h three.    inte
13380 67 65 72 20 63 6f 6c 75 6d 6e 73 2e 20 20 5e 54  ger columns.  ^T
13390 68 65 20 66 69 72 73 74 20 63 6f 6c 75 6d 6e 20  he first column 
133a0 69 73 20 75 73 75 61 6c 6c 79 20 30 20 62 75 74  is usually 0 but
133b0 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 31 20 69   will be.    1 i
133c0 66 20 61 20 52 45 53 54 41 52 54 20 6f 72 20 46  f a RESTART or F
133d0 55 4c 4c 20 6f 72 20 54 52 55 4e 43 41 54 45 20  ULL or TRUNCATE 
133e0 63 68 65 63 6b 70 6f 69 6e 74 20 77 61 73 20 62  checkpoint was b
133f0 6c 6f 63 6b 65 64 20 66 72 6f 6d 20 63 6f 6d 70  locked from comp
13400 6c 65 74 69 6e 67 2c 0a 20 20 20 20 66 6f 72 20  leting,.    for 
13410 65 78 61 6d 70 6c 65 20 62 65 63 61 75 73 65 20  example because 
13420 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f  another thread o
13430 72 20 70 72 6f 63 65 73 73 20 77 61 73 20 61 63  r process was ac
13440 74 69 76 65 6c 79 0a 20 20 20 20 75 73 69 6e 67  tively.    using
13450 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
13460 5e 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  ^In other words,
13470 20 74 68 65 20 66 69 72 73 74 20 63 6f 6c 75 6d   the first colum
13480 6e 20 69 73 20 30 20 69 66 20 74 68 65 0a 20 20  n is 0 if the.  
13490 20 20 65 71 75 69 76 61 6c 65 6e 74 20 63 61 6c    equivalent cal
134a0 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 77 61  l to [sqlite3_wa
134b0 6c 5f 63 68 65 63 6b 70 6f 69 6e 74 5f 76 32 28  l_checkpoint_v2(
134c0 29 5d 20 77 6f 75 6c 64 20 68 61 76 65 20 72 65  )] would have re
134d0 74 75 72 6e 65 64 0a 20 20 20 20 5b 53 51 4c 49  turned.    [SQLI
134e0 54 45 5f 4f 4b 5d 20 6f 72 20 31 20 69 66 20 74  TE_OK] or 1 if t
134f0 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 63 61  he equivalent ca
13500 6c 6c 20 77 6f 75 6c 64 20 68 61 76 65 20 72 65  ll would have re
13510 74 75 72 6e 65 64 20 5b 53 51 4c 49 54 45 5f 42  turned [SQLITE_B
13520 55 53 59 5d 2e 0a 20 20 20 20 5e 54 68 65 20 73  USY]..    ^The s
13530 65 63 6f 6e 64 20 63 6f 6c 75 6d 6e 20 69 73 20  econd column is 
13540 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 6f  the number of mo
13550 64 69 66 69 65 64 20 70 61 67 65 73 20 74 68 61  dified pages tha
13560 74 20 68 61 76 65 20 62 65 65 6e 0a 20 20 20 20  t have been.    
13570 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 77  written to the w
13580 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20 66  rite-ahead log f
13590 69 6c 65 2e 0a 20 20 20 20 5e 54 68 65 20 74 68  ile..    ^The th
135a0 69 72 64 20 63 6f 6c 75 6d 6e 20 69 73 20 74 68  ird column is th
135b0 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65  e number of page
135c0 73 20 69 6e 20 74 68 65 20 77 72 69 74 65 2d 61  s in the write-a
135d0 68 65 61 64 20 6c 6f 67 20 66 69 6c 65 0a 20 20  head log file.  
135e0 20 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e    that have been
135f0 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 6d 6f   successfully mo
13600 76 65 64 20 62 61 63 6b 20 69 6e 74 6f 20 74 68  ved back into th
13610 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
13620 61 74 0a 20 20 20 20 74 68 65 20 63 6f 6e 63 6c  at.    the concl
13630 75 73 69 6f 6e 20 6f 66 20 74 68 65 20 63 68 65  usion of the che
13640 63 6b 70 6f 69 6e 74 2e 0a 20 20 20 5e 54 68 65  ckpoint..   ^The
13650 20 73 65 63 6f 6e 64 20 61 6e 64 20 74 68 69 72   second and thir
13660 64 20 63 6f 6c 75 6d 6e 20 61 72 65 20 2d 31 20  d column are -1 
13670 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 0a 20  if there is no. 
13680 20 20 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c     write-ahead l
13690 6f 67 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20  og, for example 
136a0 69 66 20 74 68 69 73 20 70 72 61 67 6d 61 20 69  if this pragma i
136b0 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 20 61 20 64  s invoked on a d
136c0 61 74 61 62 61 73 65 0a 20 20 20 20 63 6f 6e 6e  atabase.    conn
136d0 65 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 6e  ection that is n
136e0 6f 74 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d  ot in [WAL mode]
136f0 2e 3c 2f 70 3e 0a 7d 0a 0a 50 72 61 67 6d 61 20  .</p>.}..Pragma 
13700 77 61 6c 5f 61 75 74 6f 63 68 65 63 6b 70 6f 69  wal_autocheckpoi
13710 6e 74 20 7b 0a 20 20 20 20 3c 70 3e 3c 62 3e 50  nt {.    <p><b>P
13720 52 41 47 4d 41 20 77 61 6c 5f 61 75 74 6f 63 68  RAGMA wal_autoch
13730 65 63 6b 70 6f 69 6e 74 3b 3c 62 72 3e 0a 20 20  eckpoint;<br>.  
13740 20 20 20 20 20 20 20 20 50 52 41 47 4d 41 20 77          PRAGMA w
13750 61 6c 5f 61 75 74 6f 63 68 65 63 6b 70 6f 69 6e  al_autocheckpoin
13760 74 3d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c 62  t=</b><i>N</i><b
13770 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20 20 20 20  >;</b></p>..    
13780 3c 70 3e 5e 54 68 69 73 20 70 72 61 67 6d 61 20  <p>^This pragma 
13790 71 75 65 72 69 65 73 20 6f 72 20 73 65 74 73 20  queries or sets 
137a0 74 68 65 20 5b 77 72 69 74 65 2d 61 68 65 61 64  the [write-ahead
137b0 20 6c 6f 67 5d 20 0a 20 20 20 20 5b 63 68 65 63   log] .    [chec
137c0 6b 70 6f 69 6e 74 69 6e 67 20 7c 20 61 75 74 6f  kpointing | auto
137d0 2d 63 68 65 63 6b 70 6f 69 6e 74 5d 20 69 6e 74  -checkpoint] int
137e0 65 72 76 61 6c 2e 0a 20 20 20 20 5e 57 68 65 6e  erval..    ^When
137f0 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68 65 61   the [write-ahea
13800 64 20 6c 6f 67 5d 20 69 73 20 65 6e 61 62 6c 65  d log] is enable
13810 64 20 28 76 69 61 20 74 68 65 0a 20 20 20 20 5b  d (via the.    [
13820 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 70 72 61  journal_mode pra
13830 67 6d 61 5d 29 20 61 20 63 68 65 63 6b 70 6f 69  gma]) a checkpoi
13840 6e 74 20 77 69 6c 6c 20 62 65 20 72 75 6e 20 61  nt will be run a
13850 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68 65  utomatically whe
13860 6e 65 76 65 72 0a 20 20 20 20 74 68 65 20 77 72  never.    the wr
13870 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20 65 71  ite-ahead log eq
13880 75 61 6c 73 20 6f 72 20 65 78 63 65 65 64 73 20  uals or exceeds 
13890 3c 69 3e 4e 3c 2f 69 3e 20 70 61 67 65 73 20 69  <i>N</i> pages i
138a0 6e 20 6c 65 6e 67 74 68 2e 0a 20 20 20 20 5e 53  n length..    ^S
138b0 65 74 74 69 6e 67 20 74 68 65 20 61 75 74 6f 2d  etting the auto-
138c0 63 68 65 63 6b 70 6f 69 6e 74 20 73 69 7a 65 20  checkpoint size 
138d0 74 6f 20 7a 65 72 6f 20 6f 72 20 61 20 6e 65 67  to zero or a neg
138e0 61 74 69 76 65 20 76 61 6c 75 65 0a 20 20 20 20  ative value.    
138f0 74 75 72 6e 73 20 61 75 74 6f 2d 63 68 65 63 6b  turns auto-check
13900 70 6f 69 6e 74 69 6e 67 20 6f 66 66 2e 3c 2f 70  pointing off.</p
13910 3e 0a 20 20 20 20 0a 20 20 20 20 3c 70 3e 5e 54  >.    .    <p>^T
13920 68 69 73 20 70 72 61 67 6d 61 20 69 73 20 61 20  his pragma is a 
13930 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
13940 68 65 0a 20 20 20 20 5b 73 71 6c 69 74 65 33 5f  he.    [sqlite3_
13950 77 61 6c 5f 61 75 74 6f 63 68 65 63 6b 70 6f 69  wal_autocheckpoi
13960 6e 74 28 29 5d 20 43 20 69 6e 74 65 72 66 61 63  nt()] C interfac
13970 65 2e 0a 20 20 20 20 5e 41 6c 6c 20 61 75 74 6f  e..    ^All auto
13980 6d 61 74 69 63 20 63 68 65 63 6b 70 6f 69 6e 74  matic checkpoint
13990 73 20 61 72 65 20 5b 73 71 6c 69 74 65 33 5f 77  s are [sqlite3_w
139a0 61 6c 5f 63 68 65 63 6b 70 6f 69 6e 74 5f 76 32  al_checkpoint_v2
139b0 7c 50 41 53 53 49 56 45 5d 2e 3c 2f 70 3e 0a 0a  |PASSIVE].</p>..
139c0 20 20 20 20 3c 70 3e 5e 41 75 74 6f 63 68 65 63      <p>^Autochec
139d0 6b 70 6f 69 6e 74 69 6e 67 20 69 73 20 65 6e 61  kpointing is ena
139e0 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20  bled by default 
139f0 77 69 74 68 20 61 6e 20 69 6e 74 65 72 76 61 6c  with an interval
13a00 0a 20 20 20 20 6f 66 20 31 30 30 30 20 6f 72 20  .    of 1000 or 
13a10 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  [SQLITE_DEFAULT_
13a20 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49  WAL_AUTOCHECKPOI
13a30 4e 54 5d 2e 3c 2f 70 3e 0a 0a 7d 0a 0a 50 72 61  NT].</p>..}..Pra
13a40 67 6d 61 20 69 67 6e 6f 72 65 5f 63 68 65 63 6b  gma ignore_check
13a50 5f 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 0a 20  _constraints {. 
13a60 20 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d     <p>^(<b>PRAGM
13a70 41 20 69 67 6e 6f 72 65 5f 63 68 65 63 6b 5f 63  A ignore_check_c
13a80 6f 6e 73 74 72 61 69 6e 74 73 20 20 3d 20 3c 2f  onstraints  = </
13a90 62 3e 3c 69 3e 62 6f 6f 6c 65 61 6e 3c 2f 69 3e  b><i>boolean</i>
13aa0 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 0a 20 20  <b>;</b></p>..  
13ab0 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61    <p>This pragma
13ac0 20 65 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61   enables or disa
13ad0 62 6c 65 73 20 74 68 65 20 65 6e 66 6f 72 63 65  bles the enforce
13ae0 6d 65 6e 74 20 6f 66 20 43 48 45 43 4b 20 63 6f  ment of CHECK co
13af0 6e 73 74 72 61 69 6e 74 73 2e 29 5e 0a 20 20 20  nstraints.)^.   
13b00 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 73 65   ^The default se
13b10 74 74 69 6e 67 20 69 73 20 6f 66 66 2c 20 6d 65  tting is off, me
13b20 61 6e 69 6e 67 20 74 68 61 74 20 43 48 45 43 4b  aning that CHECK
13b30 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65   constraints are
13b40 0a 20 20 20 20 65 6e 66 6f 72 63 65 64 20 62 79  .    enforced by
13b50 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 7d 0a   default.</p>.}.
13b60 0a 44 61 6e 67 65 72 6f 75 73 50 72 61 67 6d 61  .DangerousPragma
13b70 20 77 72 69 74 61 62 6c 65 5f 73 63 68 65 6d 61   writable_schema
13b80 20 7b 0a 20 20 20 20 3c 70 3e 5e 28 3c 62 3e 50   {.    <p>^(<b>P
13b90 52 41 47 4d 41 20 77 72 69 74 61 62 6c 65 5f 73  RAGMA writable_s
13ba0 63 68 65 6d 61 20 20 3d 20 3c 2f 62 3e 3c 69 3e  chema  = </b><i>
13bb0 62 6f 6f 6c 65 61 6e 3c 2f 69 3e 3c 62 3e 3b 3c  boolean</i><b>;<
13bc0 2f 62 3e 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e  /b></p>..    <p>
13bd0 57 68 65 6e 20 74 68 69 73 20 70 72 61 67 6d 61  When this pragma
13be0 20 69 73 20 6f 6e 2c 20 61 6e 64 20 74 68 65 20   is on, and the 
13bf0 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  [SQLITE_DBCONFIG
13c00 5f 44 45 46 45 4e 53 49 56 45 5d 20 66 6c 61 67  _DEFENSIVE] flag
13c10 0a 20 20 20 20 69 73 20 6f 66 66 2c 20 74 68 65  .    is off, the
13c20 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 5f 6d 61  n the [sqlite_ma
13c30 73 74 65 72 5d 20 74 61 62 6c 65 0a 20 20 20 20  ster] table.    
13c40 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20 75  can be changed u
13c50 73 69 6e 67 20 6f 72 64 69 6e 61 72 79 20 5b 55  sing ordinary [U
13c60 50 44 41 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d  PDATE], [INSERT]
13c70 2c 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 0a 20  , and [DELETE]. 
13c80 20 20 20 73 74 61 74 65 6d 65 6e 74 73 2e 29 5e     statements.)^
13c90 20 20 5e 3c 77 61 72 6e 69 6e 67 3e 3c 62 3e 57    ^<warning><b>W
13ca0 61 72 6e 69 6e 67 3a 3c 2f 62 3e 0a 20 20 20 20  arning:</b>.    
13cb0 6d 69 73 75 73 65 20 6f 66 20 74 68 69 73 20 70  misuse of this p
13cc0 72 61 67 6d 61 20 63 61 6e 20 65 61 73 69 6c 79  ragma can easily
13cd0 20 72 65 73 75 6c 74 20 69 6e 0a 20 20 20 20 61   result in.    a
13ce0 20 5b 63 66 67 65 72 72 6f 72 73 7c 63 6f 72 72   [cfgerrors|corr
13cf0 75 70 74 20 64 61 74 61 62 61 73 65 20 66 69 6c  upt database fil
13d00 65 5d 2e 3c 2f 77 61 72 6e 69 6e 67 3e 0a 7d 0a  e].</warning>.}.
13d10 0a 45 6e 61 62 6c 65 50 72 61 67 6d 61 20 66 75  .EnablePragma fu
13d20 6e 63 74 69 6f 6e 5f 6c 69 73 74 20 7b 0a 20 20  nction_list {.  
13d30 20 20 3c 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41    <p>^(<b>PRAGMA
13d40 20 66 75 6e 63 74 69 6f 6e 5f 6c 69 73 74 3b 3c   function_list;<
13d50 2f 62 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73 20  /b>.    <p>This 
13d60 70 72 61 67 6d 61 20 72 65 74 75 72 6e 73 20 61  pragma returns a
13d70 20 6c 69 73 74 20 6f 66 20 53 51 4c 20 66 75 6e   list of SQL fun
13d80 63 74 69 6f 6e 73 0a 20 20 20 20 6b 6e 6f 77 6e  ctions.    known
13d90 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
13da0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 29 5e 0a 0a   connection.)^..
13db0 20 20 20 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d      DISCLAIMER.}
13dc0 20 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53 50 45   SQLITE_INTROSPE
13dd0 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 09 0a 0a  CTION_PRAGMAS...
13de0 45 6e 61 62 6c 65 50 72 61 67 6d 61 20 70 72 61  EnablePragma pra
13df0 67 6d 61 5f 6c 69 73 74 20 7b 0a 20 20 20 20 3c  gma_list {.    <
13e00 70 3e 5e 28 3c 62 3e 50 52 41 47 4d 41 20 70 72  p>^(<b>PRAGMA pr
13e10 61 67 6d 61 5f 6c 69 73 74 3b 3c 2f 62 3e 0a 20  agma_list;</b>. 
13e20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d     <p>This pragm
13e30 61 20 72 65 74 75 72 6e 73 20 61 20 6c 69 73 74  a returns a list
13e40 20 6f 66 20 50 52 41 47 4d 41 20 63 6f 6d 6d 61   of PRAGMA comma
13e50 6e 64 73 0a 20 20 20 20 6b 6e 6f 77 6e 20 74 6f  nds.    known to
13e60 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
13e70 6e 6e 65 63 74 69 6f 6e 2e 29 5e 0a 0a 20 20 20  nnection.)^..   
13e80 20 44 49 53 43 4c 41 49 4d 45 52 0a 7d 20 53 51   DISCLAIMER.} SQ
13e90 4c 49 54 45 5f 49 4e 54 52 4f 53 50 45 43 54 49  LITE_INTROSPECTI
13ea0 4f 4e 5f 50 52 41 47 4d 41 53 0a 0a 45 6e 61 62  ON_PRAGMAS..Enab
13eb0 6c 65 50 72 61 67 6d 61 20 6d 6f 64 75 6c 65 5f  lePragma module_
13ec0 6c 69 73 74 20 7b 0a 20 20 20 20 3c 70 3e 5e 28  list {.    <p>^(
13ed0 3c 62 3e 50 52 41 47 4d 41 20 6d 6f 64 75 6c 65  <b>PRAGMA module
13ee0 5f 6c 69 73 74 3b 3c 2f 62 3e 0a 20 20 20 20 3c  _list;</b>.    <
13ef0 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20 72 65  p>This pragma re
13f00 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20  turns a list of 
13f10 0a 20 20 20 20 5b 76 69 72 74 75 61 6c 20 74 61  .    [virtual ta
13f20 62 6c 65 5d 20 6d 6f 64 75 6c 65 73 20 72 65 67  ble] modules reg
13f30 69 73 74 65 72 65 64 20 77 69 74 68 20 74 68 65  istered with the
13f40 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
13f50 74 69 6f 6e 2e 29 5e 0a 0a 20 20 20 20 44 49 53  tion.)^..    DIS
13f60 43 4c 41 49 4d 45 52 0a 7d 20 53 51 4c 49 54 45  CLAIMER.} SQLITE
13f70 5f 49 4e 54 52 4f 53 50 45 43 54 49 4f 4e 5f 50  _INTROSPECTION_P
13f80 52 41 47 4d 41 53 0a 0a 53 65 63 74 69 6f 6e 20  RAGMAS..Section 
13f90 7b 4c 69 73 74 20 4f 66 20 50 52 41 47 4d 41 73  {List Of PRAGMAs
13fa0 7d 20 7b 74 6f 63 7d 20 7b 7b 70 72 61 67 6d 61  } {toc} {{pragma
13fb0 20 6c 69 73 74 7d 7d 0a 73 65 74 20 6c 78 20 7b   list}}.set lx {
13fc0 7d 0a 66 6f 72 65 61 63 68 20 70 72 61 67 20 5b  }.foreach prag [
13fd0 61 72 72 61 79 20 6e 61 6d 65 73 20 50 72 61 67  array names Prag
13fe0 6d 61 52 65 66 5d 20 7b 0a 20 20 73 65 74 20 72  maRef] {.  set r
13ff0 65 66 20 24 50 72 61 67 6d 61 52 65 66 28 24 70  ef $PragmaRef($p
14000 72 61 67 29 0a 20 20 69 66 20 7b 5b 69 6e 66 6f  rag).  if {[info
14010 20 65 78 69 73 74 73 20 50 72 61 67 6d 61 4c 65   exists PragmaLe
14020 67 61 63 79 28 24 70 72 61 67 29 5d 7d 20 7b 0a  gacy($prag)]} {.
14030 20 20 20 20 6c 61 70 70 65 6e 64 20 6c 78 20 5b      lappend lx [
14040 6c 69 73 74 20 22 50 52 41 47 4d 41 20 24 72 65  list "PRAGMA $re
14050 66 22 20 24 70 72 61 67 20 33 5d 0a 20 20 7d 20  f" $prag 3].  } 
14060 65 6c 73 65 69 66 20 7b 5b 69 6e 66 6f 20 65 78  elseif {[info ex
14070 69 73 74 73 20 50 72 61 67 6d 61 44 65 62 75 67  ists PragmaDebug
14080 28 24 70 72 61 67 29 5d 7d 20 7b 0a 20 20 20 20  ($prag)]} {.    
14090 6c 61 70 70 65 6e 64 20 6c 78 20 5b 6c 69 73 74  lappend lx [list
140a0 20 22 50 52 41 47 4d 41 20 24 72 65 66 22 20 24   "PRAGMA $ref" $
140b0 70 72 61 67 20 34 5d 0a 20 20 7d 20 65 6c 73 65  prag 4].  } else
140c0 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
140d0 20 50 72 61 67 6d 61 54 65 73 74 28 24 70 72 61   PragmaTest($pra
140e0 67 29 5d 7d 20 7b 0a 20 20 20 20 6c 61 70 70 65  g)]} {.    lappe
140f0 6e 64 20 6c 78 20 5b 6c 69 73 74 20 22 50 52 41  nd lx [list "PRA
14100 47 4d 41 20 24 72 65 66 22 20 24 70 72 61 67 20  GMA $ref" $prag 
14110 35 5d 0a 20 20 7d 20 65 6c 73 65 69 66 20 7b 5b  5].  } elseif {[
14120 69 6e 66 6f 20 65 78 69 73 74 73 20 50 72 61 67  info exists Prag
14130 6d 61 45 6e 61 62 6c 65 28 24 70 72 61 67 29 5d  maEnable($prag)]
14140 7d 20 7b 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  } {.    lappend 
14150 6c 78 20 5b 6c 69 73 74 20 22 50 52 41 47 4d 41  lx [list "PRAGMA
14160 20 24 72 65 66 22 20 24 70 72 61 67 20 34 5d 0a   $ref" $prag 4].
14170 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 6c    } else {.    l
14180 61 70 70 65 6e 64 20 6c 78 20 5b 6c 69 73 74 20  append lx [list 
14190 22 50 52 41 47 4d 41 20 24 72 65 66 22 20 24 70  "PRAGMA $ref" $p
141a0 72 61 67 20 30 5d 0a 20 20 7d 0a 7d 0a 68 64 5f  rag 0].  }.}.hd_
141b0 6c 69 73 74 5f 6f 66 5f 6c 69 6e 6b 73 20 7b 7d  list_of_links {}
141c0 20 32 35 30 20 5b 6c 73 6f 72 74 20 2d 69 6e 64   250 [lsort -ind
141d0 65 78 20 31 20 24 6c 78 5d 0a 3c 2f 74 63 6c 3e  ex 1 $lx].</tcl>
141e0 0a 3c 70 3e 4e 6f 74 65 73 3a 0a 3c 6f 6c 3e 0a  .<p>Notes:.<ol>.
141f0 3c 6c 69 3e 50 72 61 67 6d 61 73 20 77 68 6f 73  <li>Pragmas whos
14200 65 20 6e 61 6d 65 73 20 61 72 65 20 3c 73 3e 73  e names are <s>s
14210 74 72 75 63 6b 20 74 68 72 6f 75 67 68 3c 2f 73  truck through</s
14220 3e 0a 61 72 65 20 64 65 70 72 65 63 61 74 65 64  >.are deprecated
14230 2e 20 44 6f 20 6e 6f 74 20 75 73 65 20 74 68 65  . Do not use the
14240 6d 2e 20 54 68 65 79 20 65 78 69 73 74 0a 66 6f  m. They exist.fo
14250 72 20 68 69 73 74 6f 72 69 63 61 6c 20 63 6f 6d  r historical com
14260 70 61 74 69 62 69 6c 69 74 79 2e 0a 3c 6c 69 3e  patibility..<li>
14270 54 68 65 73 65 20 70 72 61 67 6d 61 73 20 61 72  These pragmas ar
14280 65 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  e only available
14290 20 69 6e 20 62 75 69 6c 64 73 20 75 73 69 6e 67   in builds using
142a0 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 0a 63 6f   non-standard.co
142b0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
142c0 6e 73 2e 0a 3c 6c 69 3e 54 68 65 73 65 20 70 72  ns..<li>These pr
142d0 61 67 6d 61 73 20 61 72 65 20 75 73 65 64 20 66  agmas are used f
142e0 6f 72 20 74 65 73 74 69 6e 67 20 53 51 4c 69 74  or testing SQLit
142f0 65 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 72 65  e and are not re
14300 63 6f 6d 6d 65 6e 64 65 64 0a 66 6f 72 20 75 73  commended.for us
14310 65 20 69 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  e in application
14320 20 70 72 6f 67 72 61 6d 73 2e 3c 2f 6f 6c 3e 3c   programs.</ol><
14330 2f 70 3e 0a 3c 74 63 6c 3e 0a 66 6f 72 65 61 63  /p>.<tcl>.foreac
14340 68 20 70 72 61 67 20 5b 6c 73 6f 72 74 20 5b 61  h prag [lsort [a
14350 72 72 61 79 20 6e 61 6d 65 73 20 50 72 61 67 6d  rray names Pragm
14360 61 42 6f 64 79 5d 5d 20 7b 0a 20 20 68 64 5f 66  aBody]] {.  hd_f
14370 72 61 67 6d 65 6e 74 20 70 72 61 67 6d 61 5f 24  ragment pragma_$
14380 70 72 61 67 0a 0a 20 20 68 64 5f 70 75 74 73 20  prag..  hd_puts 
14390 22 3c 68 20 5f 69 64 3d 70 72 61 67 6d 61 5f 24  "<h _id=pragma_$
143a0 70 72 61 67 20 73 74 79 6c 65 3d 5c 22 64 69 73  prag style=\"dis
143b0 70 6c 61 79 3a 6e 6f 6e 65 5c 22 3e 20 50 52 41  play:none\"> PRA
143c0 47 4d 41 20 22 0a 20 20 68 64 5f 70 75 74 73 20  GMA ".  hd_puts 
143d0 5b 6a 6f 69 6e 20 24 50 72 61 67 6d 61 4b 65 79  [join $PragmaKey
143e0 73 28 24 70 72 61 67 29 20 22 2c 20 22 5d 0a 20  s($prag) ", "]. 
143f0 20 68 64 5f 70 75 74 73 20 22 3c 2f 68 3e 22 0a   hd_puts "</h>".
14400 0a 20 20 66 6f 72 65 61 63 68 20 78 20 24 50 72  .  foreach x $Pr
14410 61 67 6d 61 4b 65 79 73 28 24 70 72 61 67 29 20  agmaKeys($prag) 
14420 7b 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f 72 64  {.    hd_keyword
14430 73 20 2a 24 78 20 22 50 52 41 47 4d 41 20 24 78  s *$x "PRAGMA $x
14440 22 20 22 24 78 20 70 72 61 67 6d 61 22 0a 20 20  " "$x pragma".  
14450 7d 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 68 72  }.  hd_puts "<hr
14460 3e 22 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65 20  >".  hd_resolve 
14470 24 50 72 61 67 6d 61 42 6f 64 79 28 24 70 72 61  $PragmaBody($pra
14480 67 29 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 68 72 3e  g).}.</tcl>.<hr>
14490 0a                                               .