/ Hex Artifact Content
Login

Artifact 053ddb73646701353a5b1c9ca6274d5900739b45:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 66 6f 72 6d 61 74 63 68  ate the formatch
0030: 6e 67 2e 68 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a  ng.html file..#.
0040: 73 65 74 20 72 63 73 69 64 20 7b 24 49 64 3a 20  set rcsid {$Id: 
0050: 66 6f 72 6d 61 74 63 68 6e 67 2e 74 63 6c 2c 76  formatchng.tcl,v
0060: 20 31 2e 31 34 20 32 30 30 35 2f 30 33 2f 32 33   1.14 2005/03/23
0070: 20 30 31 3a 30 35 3a 31 34 20 64 72 68 20 45 78   01:05:14 drh Ex
0080: 70 20 24 20 7d 0a 73 6f 75 72 63 65 20 63 6f 6d  p $ }.source com
0090: 6d 6f 6e 2e 74 63 6c 0a 68 65 61 64 65 72 20 7b  mon.tcl.header {
00a0: 46 69 6c 65 20 46 6f 72 6d 61 74 20 43 68 61 6e  File Format Chan
00b0: 67 65 73 20 69 6e 20 53 51 4c 69 74 65 7d 0a 70  ges in SQLite}.p
00c0: 75 74 73 20 7b 0a 3c 68 32 3e 46 69 6c 65 20 46  uts {.<h2>File F
00d0: 6f 72 6d 61 74 20 43 68 61 6e 67 65 73 20 69 6e  ormat Changes in
00e0: 20 53 51 4c 69 74 65 3c 2f 68 32 3e 0a 0a 3c 70   SQLite</h2>..<p
00f0: 3e 0a 45 76 65 72 79 20 65 66 66 6f 72 74 20 69  >.Every effort i
0100: 73 20 6d 61 64 65 20 74 6f 20 6b 65 65 70 20 53  s made to keep S
0110: 51 4c 69 74 65 20 66 75 6c 6c 79 20 62 61 63 6b  QLite fully back
0120: 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 6c 65  wards compatible
0130: 20 66 72 6f 6d 0a 6f 6e 65 20 72 65 6c 65 61 73   from.one releas
0140: 65 20 74 6f 20 74 68 65 20 6e 65 78 74 2e 20 20  e to the next.  
0150: 52 61 72 65 6c 79 2c 20 68 6f 77 65 76 65 72 2c  Rarely, however,
0160: 20 73 6f 6d 65 0a 65 6e 68 61 6e 63 65 6d 65 6e   some.enhancemen
0170: 74 73 20 6f 72 20 62 75 67 20 66 69 78 65 73 20  ts or bug fixes 
0180: 6d 61 79 20 72 65 71 75 69 72 65 20 61 20 63 68  may require a ch
0190: 61 6e 67 65 20 74 6f 0a 74 68 65 20 75 6e 64 65  ange to.the unde
01a0: 72 6c 79 69 6e 67 20 66 69 6c 65 20 66 6f 72 6d  rlying file form
01b0: 61 74 2e 20 20 57 68 65 6e 20 74 68 69 73 20 68  at.  When this h
01c0: 61 70 70 65 6e 73 20 61 6e 64 20 79 6f 75 0a 6d  appens and you.m
01d0: 75 73 74 20 63 6f 6e 76 65 72 74 20 74 68 65 20  ust convert the 
01e0: 63 6f 6e 74 65 6e 74 73 20 6f 66 20 79 6f 75 72  contents of your
01f0: 0a 64 61 74 61 62 61 73 65 73 20 69 6e 74 6f 20  .databases into 
0200: 61 20 70 6f 72 74 61 62 6c 65 20 41 53 43 49 49  a portable ASCII
0210: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
0220: 75 73 69 6e 67 20 74 68 65 20 6f 6c 64 20 76 65  using the old ve
0230: 72 73 69 6f 6e 0a 6f 66 20 74 68 65 20 6c 69 62  rsion.of the lib
0240: 72 61 72 79 20 74 68 65 6e 20 72 65 6c 6f 61 64  rary then reload
0250: 20 74 68 65 20 64 61 74 61 20 75 73 69 6e 67 20   the data using 
0260: 74 68 65 20 6e 65 77 20 76 65 72 73 69 6f 6e 20  the new version 
0270: 6f 66 20 74 68 65 0a 6c 69 62 72 61 72 79 2e 0a  of the.library..
0280: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 59 6f 75 20 63 61  </p>..<p>.You ca
0290: 6e 20 74 65 6c 6c 20 69 66 20 79 6f 75 20 73 68  n tell if you sh
02a0: 6f 75 6c 64 20 72 65 6c 6f 61 64 20 79 6f 75 72  ould reload your
02b0: 20 64 61 74 61 62 61 73 65 73 20 62 79 20 63 6f   databases by co
02c0: 6d 70 61 72 69 6e 67 20 74 68 65 0a 76 65 72 73  mparing the.vers
02d0: 69 6f 6e 20 6e 75 6d 62 65 72 73 20 6f 66 20 74  ion numbers of t
02e0: 68 65 20 6f 6c 64 20 61 6e 64 20 6e 65 77 20 6c  he old and new l
02f0: 69 62 72 61 72 69 65 73 2e 20 20 49 66 20 74 68  ibraries.  If th
0300: 65 20 66 69 72 73 74 20 64 69 67 69 74 0a 6f 66  e first digit.of
0310: 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d   the version num
0320: 62 65 72 20 69 73 20 64 69 66 66 65 72 65 6e 74  ber is different
0330: 2c 20 74 68 65 6e 20 61 20 72 65 6c 6f 61 64 20  , then a reload 
0340: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
0350: 77 69 6c 6c 0a 62 65 20 72 65 71 75 69 72 65 64  will.be required
0360: 2e 20 20 49 66 20 74 68 65 20 73 65 63 6f 6e 64  .  If the second
0370: 20 64 69 67 69 74 20 63 68 61 6e 67 65 73 2c 20   digit changes, 
0380: 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  newer versions o
0390: 66 20 53 51 4c 69 74 65 0a 77 69 6c 6c 20 62 65  f SQLite.will be
03a0: 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20 61 6e   able to read an
03b0: 64 20 77 72 69 74 65 20 6f 6c 64 65 72 20 64 61  d write older da
03c0: 74 61 62 61 73 65 20 66 69 6c 65 73 2c 20 62 75  tabase files, bu
03d0: 74 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73  t older versions
03e0: 0a 6f 66 20 74 68 65 20 6c 69 62 72 61 72 79 20  .of the library 
03f0: 6d 61 79 20 68 61 76 65 20 64 69 66 66 69 63 75  may have difficu
0400: 6c 74 79 20 72 65 61 64 69 6e 67 20 6f 72 20 77  lty reading or w
0410: 72 69 74 69 6e 67 20 6e 65 77 65 72 20 64 61 74  riting newer dat
0420: 61 62 61 73 65 0a 66 69 6c 65 73 2e 0a 46 6f 72  abase.files..For
0430: 20 65 78 61 6d 70 6c 65 2c 20 75 70 67 72 61 64   example, upgrad
0440: 69 6e 67 20 66 72 6f 6d 0a 76 65 72 73 69 6f 6e  ing from.version
0450: 20 32 2e 38 2e 31 34 20 74 6f 20 33 2e 30 2e 30   2.8.14 to 3.0.0
0460: 20 72 65 71 75 69 72 65 73 20 61 20 72 65 6c 6f   requires a relo
0470: 61 64 2e 20 20 47 6f 69 6e 67 20 66 72 6f 6d 0a  ad.  Going from.
0480: 76 65 72 73 69 6f 6e 20 33 2e 30 2e 38 20 74 6f  version 3.0.8 to
0490: 20 33 2e 31 2e 30 20 69 73 20 62 61 63 6b 77 61   3.1.0 is backwa
04a0: 72 64 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 62  rds compatible b
04b0: 75 74 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69  ut not necessari
04c0: 6c 79 0a 66 6f 72 77 61 72 64 73 20 63 6f 6d 70  ly.forwards comp
04d0: 61 74 69 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70  atible..</p>..<p
04e0: 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  >.The following 
04f0: 74 61 62 6c 65 20 73 75 6d 6d 61 72 69 7a 65 73  table summarizes
0500: 20 74 68 65 20 53 51 4c 69 74 65 20 66 69 6c 65   the SQLite file
0510: 20 66 6f 72 6d 61 74 20 63 68 61 6e 67 65 73 20   format changes 
0520: 74 68 61 74 20 68 61 76 65 0a 6f 63 63 75 72 72  that have.occurr
0530: 65 64 20 73 69 6e 63 65 20 76 65 72 73 69 6f 6e  ed since version
0540: 20 31 2e 30 2e 30 3a 0a 3c 2f 70 3e 0a 0a 3c 62   1.0.0:.</p>..<b
0550: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c  lockquote>.<tabl
0560: 65 20 62 6f 72 64 65 72 3d 32 20 63 65 6c 6c 70  e border=2 cellp
0570: 61 64 64 69 6e 67 3d 35 3e 0a 3c 74 72 3e 0a 20  adding=5>.<tr>. 
0580: 20 3c 74 68 3e 56 65 72 73 69 6f 6e 20 43 68 61   <th>Version Cha
0590: 6e 67 65 3c 2f 74 68 3e 0a 20 20 3c 74 68 3e 41  nge</th>.  <th>A
05a0: 70 70 72 6f 78 2e 20 44 61 74 65 3c 2f 74 68 3e  pprox. Date</th>
05b0: 0a 20 20 3c 74 68 3e 44 65 73 63 72 69 70 74 69  .  <th>Descripti
05c0: 6f 6e 20 4f 66 20 46 69 6c 65 20 46 6f 72 6d 61  on Of File Forma
05d0: 74 20 43 68 61 6e 67 65 3c 2f 74 68 3e 0a 3c 2f  t Change</th>.</
05e0: 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76  tr>.<tr>.  <td v
05f0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 31 2e 30 2e  align="top">1.0.
0600: 33 32 20 74 6f 20 32 2e 30 2e 30 3c 2f 74 64 3e  32 to 2.0.0</td>
0610: 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  .  <td valign="t
0620: 6f 70 22 3e 32 30 30 31 2d 53 65 70 2d 32 30 3c  op">2001-Sep-20<
0630: 2f 74 64 3e 0a 20 20 3c 74 64 3e 56 65 72 73 69  /td>.  <td>Versi
0640: 6f 6e 20 31 2e 30 2e 58 20 6f 66 20 53 51 4c 69  on 1.0.X of SQLi
0650: 74 65 20 75 73 65 64 20 74 68 65 20 47 44 42 4d  te used the GDBM
0660: 20 6c 69 62 72 61 72 79 20 61 73 20 69 74 73 20   library as its 
0670: 62 61 63 6b 65 6e 64 0a 20 20 69 6e 74 65 72 66  backend.  interf
0680: 61 63 65 20 74 6f 20 74 68 65 20 64 69 73 6b 2e  ace to the disk.
0690: 20 20 42 65 67 69 6e 6e 69 6e 67 20 69 6e 20 76    Beginning in v
06a0: 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2c 20 47 44  ersion 2.0.0, GD
06b0: 42 4d 20 77 61 73 20 72 65 70 6c 61 63 65 64 0a  BM was replaced.
06c0: 20 20 62 79 20 61 20 63 75 73 74 6f 6d 20 42 2d    by a custom B-
06d0: 54 72 65 65 20 6c 69 62 72 61 72 79 20 77 72 69  Tree library wri
06e0: 74 74 65 6e 20 65 73 70 65 63 69 61 6c 6c 79 20  tten especially 
06f0: 66 6f 72 20 53 51 4c 69 74 65 2e 20 20 54 68 65  for SQLite.  The
0700: 20 6e 65 77 0a 20 20 42 2d 54 72 65 65 20 62 61   new.  B-Tree ba
0710: 63 6b 65 6e 64 20 69 73 20 74 77 69 63 65 20 61  ckend is twice a
0720: 73 20 66 61 73 74 20 61 73 20 47 44 42 4d 2c 20  s fast as GDBM, 
0730: 73 75 70 70 6f 72 74 73 20 61 74 6f 6d 69 63 20  supports atomic 
0740: 63 6f 6d 6d 69 74 73 20 61 6e 64 0a 20 20 72 6f  commits and.  ro
0750: 6c 6c 62 61 63 6b 2c 20 61 6e 64 20 73 74 6f 72  llback, and stor
0760: 65 73 20 61 6e 20 65 6e 74 69 72 65 20 64 61 74  es an entire dat
0770: 61 62 61 73 65 20 69 6e 20 61 20 73 69 6e 67 6c  abase in a singl
0780: 65 20 64 69 73 6b 20 66 69 6c 65 20 69 6e 73 74  e disk file inst
0790: 65 61 64 0a 20 20 75 73 69 6e 67 20 61 20 73 65  ead.  using a se
07a0: 70 61 72 61 74 65 20 66 69 6c 65 20 66 6f 72 20  parate file for 
07b0: 65 61 63 68 20 74 61 62 6c 65 20 61 73 20 47 44  each table as GD
07c0: 42 4d 20 64 6f 65 73 2e 20 20 54 68 65 20 74 77  BM does.  The tw
07d0: 6f 0a 20 20 66 69 6c 65 20 66 6f 72 6d 61 74 73  o.  file formats
07e0: 20 61 72 65 20 6e 6f 74 20 65 76 65 6e 20 72 65   are not even re
07f0: 6d 6f 74 65 6c 79 20 73 69 6d 69 6c 61 72 2e 3c  motely similar.<
0800: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
0810: 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f    <td valign="to
0820: 70 22 3e 32 2e 30 2e 38 20 74 6f 20 32 2e 31 2e  p">2.0.8 to 2.1.
0830: 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c  0</td>.  <td val
0840: 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 31 2d 4e  ign="top">2001-N
0850: 6f 76 2d 31 32 3c 2f 74 64 3e 0a 20 20 3c 74 64  ov-12</td>.  <td
0860: 3e 54 68 65 20 73 61 6d 65 20 62 61 73 69 63 20  >The same basic 
0870: 42 2d 54 72 65 65 20 66 6f 72 6d 61 74 20 69 73  B-Tree format is
0880: 20 75 73 65 64 20 62 75 74 20 74 68 65 20 64 65   used but the de
0890: 74 61 69 6c 73 20 6f 66 20 74 68 65 20 0a 20 20  tails of the .  
08a0: 69 6e 64 65 78 20 6b 65 79 73 20 77 65 72 65 20  index keys were 
08b0: 63 68 61 6e 67 65 64 20 69 6e 20 6f 72 64 65 72  changed in order
08c0: 20 74 6f 20 70 72 6f 76 69 64 65 20 62 65 74 74   to provide bett
08d0: 65 72 20 71 75 65 72 79 20 0a 20 20 6f 70 74 69  er query .  opti
08e0: 6d 69 7a 61 74 69 6f 6e 20 6f 70 70 6f 72 74 75  mization opportu
08f0: 6e 69 74 69 65 73 2e 20 20 53 6f 6d 65 20 6f 66  nities.  Some of
0900: 20 74 68 65 20 68 65 61 64 65 72 73 20 77 65 72   the headers wer
0910: 65 20 61 6c 73 6f 20 63 68 61 6e 67 65 64 20 69  e also changed i
0920: 6e 20 6f 72 64 65 72 0a 20 20 74 6f 20 69 6e 63  n order.  to inc
0930: 72 65 61 73 65 20 74 68 65 20 6d 61 78 69 6d 75  rease the maximu
0940: 6d 20 73 69 7a 65 20 6f 66 20 61 20 72 6f 77 20  m size of a row 
0950: 66 72 6f 6d 20 36 34 4b 42 20 74 6f 20 32 34 4d  from 64KB to 24M
0960: 42 2e 3c 70 3e 0a 0a 20 20 54 68 69 73 20 63 68  B.<p>..  This ch
0970: 61 6e 67 65 20 69 73 20 61 6e 20 65 78 63 65 70  ange is an excep
0980: 74 69 6f 6e 20 74 6f 20 74 68 65 20 76 65 72 73  tion to the vers
0990: 69 6f 6e 20 6e 75 6d 62 65 72 20 72 75 6c 65 20  ion number rule 
09a0: 64 65 73 63 72 69 62 65 64 20 61 62 6f 76 65 0a  described above.
09b0: 20 20 69 6e 20 74 68 61 74 20 69 74 20 69 73 20    in that it is 
09c0: 6e 65 69 74 68 65 72 20 66 6f 72 77 61 72 64 73  neither forwards
09d0: 20 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f   or backwards co
09e0: 6d 70 61 74 69 62 6c 65 2e 20 20 41 20 63 6f 6d  mpatible.  A com
09f0: 70 6c 65 74 65 0a 20 20 72 65 6c 6f 61 64 20 6f  plete.  reload o
0a00: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  f the database i
0a10: 73 20 72 65 71 75 69 72 65 64 2e 20 20 54 68 69  s required.  Thi
0a20: 73 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 65 78  s is the only ex
0a30: 63 65 70 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f  ception.</td>.</
0a40: 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76  tr>.<tr>.  <td v
0a50: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 2e 31 2e  align="top">2.1.
0a60: 37 20 74 6f 20 32 2e 32 2e 30 3c 2f 74 64 3e 0a  7 to 2.2.0</td>.
0a70: 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f    <td valign="to
0a80: 70 22 3e 32 30 30 31 2d 44 65 63 2d 32 31 3c 2f  p">2001-Dec-21</
0a90: 74 64 3e 0a 20 20 3c 74 64 3e 42 65 67 69 6e 6e  td>.  <td>Beginn
0aa0: 69 6e 67 20 77 69 74 68 20 76 65 72 73 69 6f 6e  ing with version
0ab0: 20 32 2e 32 2e 30 2c 20 53 51 4c 69 74 65 20 6e   2.2.0, SQLite n
0ac0: 6f 20 6c 6f 6e 67 65 72 20 62 75 69 6c 64 73 20  o longer builds 
0ad0: 61 6e 20 69 6e 64 65 78 20 66 6f 72 0a 20 20 61  an index for.  a
0ae0: 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  n INTEGER PRIMAR
0af0: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 20 20 49  Y KEY column.  I
0b00: 6e 73 74 65 61 64 2c 20 69 74 20 75 73 65 73 20  nstead, it uses 
0b10: 74 68 61 74 20 63 6f 6c 75 6d 6e 20 61 73 20 74  that column as t
0b20: 68 65 20 61 63 74 75 61 6c 0a 20 20 42 2d 54 72  he actual.  B-Tr
0b30: 65 65 20 6b 65 79 20 66 6f 72 20 74 68 65 20 6d  ee key for the m
0b40: 61 69 6e 20 74 61 62 6c 65 2e 3c 70 3e 56 65 72  ain table.<p>Ver
0b50: 73 69 6f 6e 20 32 2e 32 2e 30 20 61 6e 64 20 6c  sion 2.2.0 and l
0b60: 61 74 65 72 20 6f 66 20 74 68 65 20 6c 69 62 72  ater of the libr
0b70: 61 72 79 0a 20 20 77 69 6c 6c 20 61 75 74 6f 6d  ary.  will autom
0b80: 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74 20  atically detect 
0b90: 77 68 65 6e 20 69 74 20 69 73 20 72 65 61 64 69  when it is readi
0ba0: 6e 67 20 61 20 32 2e 31 2e 78 20 64 61 74 61 62  ng a 2.1.x datab
0bb0: 61 73 65 20 61 6e 64 20 77 69 6c 6c 0a 20 20 64  ase and will.  d
0bc0: 69 73 61 62 6c 65 20 74 68 65 20 6e 65 77 20 49  isable the new I
0bd0: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
0be0: 45 59 20 66 65 61 74 75 72 65 2e 20 20 20 49 6e  EY feature.   In
0bf0: 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 76 65   other words, ve
0c00: 72 73 69 6f 6e 0a 20 20 32 2e 32 2e 78 20 69 73  rsion.  2.2.x is
0c10: 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61   backwards compa
0c20: 74 69 62 6c 65 20 74 6f 20 76 65 72 73 69 6f 6e  tible to version
0c30: 20 32 2e 31 2e 78 2e 20 20 42 75 74 20 76 65 72   2.1.x.  But ver
0c40: 73 69 6f 6e 20 32 2e 31 2e 78 20 69 73 20 6e 6f  sion 2.1.x is no
0c50: 74 0a 20 20 66 6f 72 77 61 72 64 20 63 6f 6d 70  t.  forward comp
0c60: 61 74 69 62 6c 65 20 77 69 74 68 20 76 65 72 73  atible with vers
0c70: 69 6f 6e 20 32 2e 32 2e 78 2e 20 49 66 20 79 6f  ion 2.2.x. If yo
0c80: 75 20 74 72 79 20 74 6f 20 6f 70 65 6e 0a 20 20  u try to open.  
0c90: 61 20 32 2e 32 2e 78 20 64 61 74 61 62 61 73 65  a 2.2.x database
0ca0: 20 77 69 74 68 20 61 6e 20 6f 6c 64 65 72 20 32   with an older 2
0cb0: 2e 31 2e 78 20 6c 69 62 72 61 72 79 20 61 6e 64  .1.x library and
0cc0: 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20 63   that database c
0cd0: 6f 6e 74 61 69 6e 73 0a 20 20 61 6e 20 49 4e 54  ontains.  an INT
0ce0: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
0cf0: 2c 20 79 6f 75 20 77 69 6c 6c 20 6c 69 6b 65 6c  , you will likel
0d00: 79 20 67 65 74 20 61 20 63 6f 72 65 64 75 6d 70  y get a coredump
0d10: 2e 20 20 49 66 20 74 68 65 20 64 61 74 61 62 61  .  If the databa
0d20: 73 65 0a 20 20 73 63 68 65 6d 61 20 64 6f 65 73  se.  schema does
0d30: 20 6e 6f 74 20 63 6f 6e 74 61 69 6e 20 61 6e 79   not contain any
0d40: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
0d50: 20 4b 45 59 73 2c 20 74 68 65 6e 20 74 68 65 20   KEYs, then the 
0d60: 76 65 72 73 69 6f 6e 20 32 2e 31 2e 78 0a 20 20  version 2.1.x.  
0d70: 61 6e 64 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e  and version 2.2.
0d80: 78 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  x database files
0d90: 20 77 69 6c 6c 20 62 65 20 69 64 65 6e 74 69 63   will be identic
0da0: 61 6c 20 61 6e 64 20 63 6f 6d 70 6c 65 74 65 6c  al and completel
0db0: 79 0a 20 20 69 6e 74 65 72 63 68 61 6e 67 65 61  y.  interchangea
0dc0: 62 6c 65 2e 3c 2f 70 3e 0a 3c 2f 74 72 3e 0a 3c  ble.</p>.</tr>.<
0dd0: 74 72 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e  tr>.  <td valign
0de0: 3d 22 74 6f 70 22 3e 32 2e 32 2e 35 20 74 6f 20  ="top">2.2.5 to 
0df0: 32 2e 33 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64  2.3.0</td>.  <td
0e00: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30   valign="top">20
0e10: 30 32 2d 4a 61 6e 2d 33 30 3c 2f 74 64 3e 0a 20  02-Jan-30</td>. 
0e20: 20 3c 74 64 3e 42 65 67 69 6e 6e 69 6e 67 20 77   <td>Beginning w
0e30: 69 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 33 2e  ith version 2.3.
0e40: 30 2c 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72  0, SQLite suppor
0e50: 74 73 20 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e  ts some addition
0e60: 61 6c 20 73 79 6e 74 61 78 0a 20 20 28 74 68 65  al syntax.  (the
0e70: 20 22 4f 4e 20 43 4f 4e 46 4c 49 43 54 22 20 63   "ON CONFLICT" c
0e80: 6c 61 75 73 65 29 20 69 6e 20 74 68 65 20 43 52  lause) in the CR
0e90: 45 41 54 45 20 54 41 42 4c 45 20 61 6e 64 20 43  EATE TABLE and C
0ea0: 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74  REATE INDEX stat
0eb0: 65 6d 65 6e 74 73 0a 20 20 74 68 61 74 20 61 72  ements.  that ar
0ec0: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  e stored in the 
0ed0: 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61  SQLITE_MASTER ta
0ee0: 62 6c 65 2e 20 20 49 66 20 79 6f 75 20 63 72 65  ble.  If you cre
0ef0: 61 74 65 20 61 20 64 61 74 61 62 61 73 65 20 74  ate a database t
0f00: 68 61 74 0a 20 20 63 6f 6e 74 61 69 6e 73 20 74  hat.  contains t
0f10: 68 69 73 20 6e 65 77 20 73 79 6e 74 61 78 2c 20  his new syntax, 
0f20: 74 68 65 6e 20 74 72 79 20 74 6f 20 72 65 61 64  then try to read
0f30: 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20 75   that database u
0f40: 73 69 6e 67 20 76 65 72 73 69 6f 6e 20 32 2e 32  sing version 2.2
0f50: 2e 35 0a 20 20 6f 72 20 65 61 72 6c 69 65 72 2c  .5.  or earlier,
0f60: 20 74 68 65 20 70 61 72 73 65 72 20 77 69 6c 6c   the parser will
0f70: 20 6e 6f 74 20 75 6e 64 65 72 73 74 61 6e 64 20   not understand 
0f80: 74 68 65 20 6e 65 77 20 73 79 6e 74 61 78 20 61  the new syntax a
0f90: 6e 64 20 79 6f 75 20 77 69 6c 6c 20 67 65 74 0a  nd you will get.
0fa0: 20 20 61 6e 20 65 72 72 6f 72 2e 20 20 4f 74 68    an error.  Oth
0fb0: 65 72 77 69 73 65 2c 20 64 61 74 61 62 61 73 65  erwise, database
0fc0: 73 20 66 6f 72 20 32 2e 32 2e 78 20 61 6e 64 20  s for 2.2.x and 
0fd0: 32 2e 33 2e 78 20 61 72 65 20 69 6e 74 65 72 63  2.3.x are interc
0fe0: 68 61 6e 67 65 61 62 6c 65 2e 3c 2f 74 64 3e 0a  hangeable.</td>.
0ff0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64  </tr>.<tr>.  <td
1000: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 2e   valign="top">2.
1010: 33 2e 33 20 74 6f 20 32 2e 34 2e 30 3c 2f 74 64  3.3 to 2.4.0</td
1020: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
1030: 74 6f 70 22 3e 32 30 30 32 2d 4d 61 72 2d 31 30  top">2002-Mar-10
1040: 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 42 65 67 69  </td>.  <td>Begi
1050: 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72 73 69  nning with versi
1060: 6f 6e 20 32 2e 34 2e 30 2c 20 53 51 4c 69 74 65  on 2.4.0, SQLite
1070: 20 61 64 64 65 64 20 73 75 70 70 6f 72 74 20 66   added support f
1080: 6f 72 20 76 69 65 77 73 2e 20 0a 20 20 49 6e 66  or views. .  Inf
1090: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 76  ormation about v
10a0: 69 65 77 73 20 69 73 20 73 74 6f 72 65 64 20 69  iews is stored i
10b0: 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d 41 53  n the SQLITE_MAS
10c0: 54 45 52 20 74 61 62 6c 65 2e 20 20 49 66 20 61  TER table.  If a
10d0: 6e 20 6f 6c 64 65 72 0a 20 20 76 65 72 73 69 6f  n older.  versio
10e0: 6e 20 6f 66 20 53 51 4c 69 74 65 20 61 74 74 65  n of SQLite atte
10f0: 6d 70 74 73 20 74 6f 20 72 65 61 64 20 61 20 64  mpts to read a d
1100: 61 74 61 62 61 73 65 20 74 68 61 74 20 63 6f 6e  atabase that con
1110: 74 61 69 6e 73 20 56 49 45 57 20 69 6e 66 6f 72  tains VIEW infor
1120: 6d 61 74 69 6f 6e 0a 20 20 69 6e 20 74 68 65 20  mation.  in the 
1130: 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61  SQLITE_MASTER ta
1140: 62 6c 65 2c 20 74 68 65 20 70 61 72 73 65 72 20  ble, the parser 
1150: 77 69 6c 6c 20 6e 6f 74 20 75 6e 64 65 72 73 74  will not underst
1160: 61 6e 64 20 74 68 65 20 6e 65 77 20 73 79 6e 74  and the new synt
1170: 61 78 0a 20 20 61 6e 64 20 69 6e 69 74 69 61 6c  ax.  and initial
1180: 69 7a 61 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69  ization will fai
1190: 6c 2e 20 20 41 6c 73 6f 2c 20 74 68 65 0a 20 20  l.  Also, the.  
11a0: 77 61 79 20 53 51 4c 69 74 65 20 6b 65 65 70 73  way SQLite keeps
11b0: 20 74 72 61 63 6b 20 6f 66 20 75 6e 75 73 65 64   track of unused
11c0: 20 64 69 73 6b 20 62 6c 6f 63 6b 73 20 69 6e 20   disk blocks in 
11d0: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
11e0: 65 0a 20 20 63 68 61 6e 67 65 64 20 73 6c 69 67  e.  changed slig
11f0: 68 74 6c 79 2e 0a 20 20 49 66 20 61 6e 20 6f 6c  htly..  If an ol
1200: 64 65 72 20 76 65 72 73 69 6f 6e 20 6f 66 20 53  der version of S
1210: 51 4c 69 74 65 20 61 74 74 65 6d 70 74 73 20 74  QLite attempts t
1220: 6f 20 77 72 69 74 65 20 61 20 64 61 74 61 62 61  o write a databa
1230: 73 65 20 74 68 61 74 0a 20 20 77 61 73 20 70 72  se that.  was pr
1240: 65 76 69 6f 75 73 6c 79 20 77 72 69 74 74 65 6e  eviously written
1250: 20 62 79 20 76 65 72 73 69 6f 6e 20 32 2e 34 2e   by version 2.4.
1260: 30 20 6f 72 20 6c 61 74 65 72 2c 20 74 68 65 6e  0 or later, then
1270: 20 69 74 20 6d 61 79 20 6c 65 61 6b 20 64 69 73   it may leak dis
1280: 6b 0a 20 20 62 6c 6f 63 6b 73 2e 3c 2f 74 64 3e  k.  blocks.</td>
1290: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74  .</tr>.<tr>.  <t
12a0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32  d valign="top">2
12b0: 2e 34 2e 31 32 20 74 6f 20 32 2e 35 2e 30 3c 2f  .4.12 to 2.5.0</
12c0: 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e  td>.  <td valign
12d0: 3d 22 74 6f 70 22 3e 32 30 30 32 2d 4a 75 6e 2d  ="top">2002-Jun-
12e0: 31 37 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 42 65  17</td>.  <td>Be
12f0: 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72  ginning with ver
1300: 73 69 6f 6e 20 32 2e 35 2e 30 2c 20 53 51 4c 69  sion 2.5.0, SQLi
1310: 74 65 20 61 64 64 65 64 20 73 75 70 70 6f 72 74  te added support
1320: 20 66 6f 72 20 74 72 69 67 67 65 72 73 2e 20 0a   for triggers. .
1330: 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62    Information ab
1340: 6f 75 74 20 74 72 69 67 67 65 72 73 20 69 73 20  out triggers is 
1350: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 53 51  stored in the SQ
1360: 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61 62 6c  LITE_MASTER tabl
1370: 65 2e 20 20 49 66 20 61 6e 20 6f 6c 64 65 72 0a  e.  If an older.
1380: 20 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c    version of SQL
1390: 69 74 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20  ite attempts to 
13a0: 72 65 61 64 20 61 20 64 61 74 61 62 61 73 65 20  read a database 
13b0: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 61 20  that contains a 
13c0: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 0a 20  CREATE TRIGGER. 
13d0: 20 69 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d   in the SQLITE_M
13e0: 41 53 54 45 52 20 74 61 62 6c 65 2c 20 74 68 65  ASTER table, the
13f0: 20 70 61 72 73 65 72 20 77 69 6c 6c 20 6e 6f 74   parser will not
1400: 20 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20   understand the 
1410: 6e 65 77 20 73 79 6e 74 61 78 0a 20 20 61 6e 64  new syntax.  and
1420: 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20   initialization 
1430: 77 69 6c 6c 20 66 61 69 6c 2e 0a 20 20 3c 2f 74  will fail..  </t
1440: 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20  d>.</tr>.<tr>.  
1450: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
1460: 3e 32 2e 35 2e 36 20 74 6f 20 32 2e 36 2e 30 3c  >2.5.6 to 2.6.0<
1470: 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67  /td>.  <td valig
1480: 6e 3d 22 74 6f 70 22 3e 32 30 30 32 2d 4a 75 6c  n="top">2002-Jul
1490: 79 2d 31 37 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e  y-17</td>.  <td>
14a0: 41 20 64 65 73 69 67 6e 20 66 6c 61 77 20 69 6e  A design flaw in
14b0: 20 74 68 65 20 6c 61 79 6f 75 74 20 6f 66 20 69   the layout of i
14c0: 6e 64 69 63 65 73 20 72 65 71 75 69 72 65 64 20  ndices required 
14d0: 61 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 63 68  a file format ch
14e0: 61 6e 67 65 0a 20 20 74 6f 20 63 6f 72 72 65 63  ange.  to correc
14f0: 74 2e 20 20 54 68 69 73 20 63 68 61 6e 67 65 20  t.  This change 
1500: 61 70 70 65 61 72 65 64 20 69 6e 20 76 65 72 73  appeared in vers
1510: 69 6f 6e 20 32 2e 36 2e 30 2e 3c 70 3e 0a 0a 20  ion 2.6.0.<p>.. 
1520: 20 49 66 20 79 6f 75 20 75 73 65 20 76 65 72 73   If you use vers
1530: 69 6f 6e 20 32 2e 36 2e 30 20 6f 72 20 6c 61 74  ion 2.6.0 or lat
1540: 65 72 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72  er of the librar
1550: 79 20 74 6f 20 6f 70 65 6e 20 61 20 64 61 74 61  y to open a data
1560: 62 61 73 65 20 66 69 6c 65 0a 20 20 74 68 61 74  base file.  that
1570: 20 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20   was originally 
1580: 63 72 65 61 74 65 64 20 62 79 20 76 65 72 73 69  created by versi
1590: 6f 6e 20 32 2e 35 2e 36 20 6f 72 20 65 61 72 6c  on 2.5.6 or earl
15a0: 69 65 72 2c 20 61 6e 20 61 74 74 65 6d 70 74 20  ier, an attempt 
15b0: 74 6f 0a 20 20 72 65 62 75 69 6c 64 20 74 68 65  to.  rebuild the
15c0: 20 64 61 74 61 62 61 73 65 20 69 6e 74 6f 20 74   database into t
15d0: 68 65 20 6e 65 77 20 66 6f 72 6d 61 74 20 77 69  he new format wi
15e0: 6c 6c 20 6f 63 63 75 72 20 61 75 74 6f 6d 61 74  ll occur automat
15f0: 69 63 61 6c 6c 79 2e 0a 20 20 54 68 69 73 20 63  ically..  This c
1600: 61 6e 20 74 61 6b 65 20 73 6f 6d 65 20 74 69 6d  an take some tim
1610: 65 20 66 6f 72 20 61 20 6c 61 72 67 65 20 64 61  e for a large da
1620: 74 61 62 61 73 65 2e 20 20 28 41 6c 6c 6f 77 20  tabase.  (Allow 
1630: 31 20 6f 72 20 32 20 73 65 63 6f 6e 64 73 0a 20  1 or 2 seconds. 
1640: 20 70 65 72 20 6d 65 67 61 62 79 74 65 20 6f 66   per megabyte of
1650: 20 64 61 74 61 62 61 73 65 20 75 6e 64 65 72 20   database under 
1660: 55 6e 69 78 20 2d 20 6c 6f 6e 67 65 72 20 75 6e  Unix - longer un
1670: 64 65 72 20 57 69 6e 64 6f 77 73 2e 29 20 20 54  der Windows.)  T
1680: 68 69 73 20 66 6f 72 6d 61 74 0a 20 20 63 6f 6e  his format.  con
1690: 76 65 72 73 69 6f 6e 20 69 73 20 69 72 72 65 76  version is irrev
16a0: 65 72 73 69 62 6c 65 2e 20 20 49 74 20 69 73 20  ersible.  It is 
16b0: 3c 73 74 72 6f 6e 67 3e 73 74 72 6f 6e 67 6c 79  <strong>strongly
16c0: 3c 2f 73 74 72 6f 6e 67 3e 20 73 75 67 67 65 73  </strong> sugges
16d0: 74 65 64 0a 20 20 74 68 61 74 20 79 6f 75 20 6d  ted.  that you m
16e0: 61 6b 65 20 61 20 62 61 63 6b 75 70 20 63 6f 70  ake a backup cop
16f0: 79 20 6f 66 20 6f 6c 64 65 72 20 64 61 74 61 62  y of older datab
1700: 61 73 65 20 66 69 6c 65 73 20 70 72 69 6f 72 20  ase files prior 
1710: 74 6f 20 6f 70 65 6e 69 6e 67 20 74 68 65 6d 0a  to opening them.
1720: 20 20 77 69 74 68 20 76 65 72 73 69 6f 6e 20 32    with version 2
1730: 2e 36 2e 30 20 6f 72 20 6c 61 74 65 72 20 6f 66  .6.0 or later of
1740: 20 74 68 65 20 6c 69 62 72 61 72 79 2c 20 69 6e   the library, in
1750: 20 63 61 73 65 20 74 68 65 72 65 20 61 72 65 20   case there are 
1760: 65 72 72 6f 72 73 20 69 6e 0a 20 20 74 68 65 20  errors in.  the 
1770: 66 6f 72 6d 61 74 20 63 6f 6e 76 65 72 73 69 6f  format conversio
1780: 6e 20 6c 6f 67 69 63 2e 3c 70 3e 0a 0a 20 20 56  n logic.<p>..  V
1790: 65 72 73 69 6f 6e 20 32 2e 36 2e 30 20 6f 72 20  ersion 2.6.0 or 
17a0: 6c 61 74 65 72 20 6f 66 20 74 68 65 20 6c 69 62  later of the lib
17b0: 72 61 72 79 20 63 61 6e 6e 6f 74 20 6f 70 65 6e  rary cannot open
17c0: 20 72 65 61 64 2d 6f 6e 6c 79 20 64 61 74 61 62   read-only datab
17d0: 61 73 65 0a 20 20 66 69 6c 65 73 20 66 72 6f 6d  ase.  files from
17e0: 20 76 65 72 73 69 6f 6e 20 32 2e 35 2e 36 20 6f   version 2.5.6 o
17f0: 72 20 65 61 72 6c 69 65 72 2c 20 73 69 6e 63 65  r earlier, since
1800: 20 72 65 61 64 2d 6f 6e 6c 79 20 66 69 6c 65 73   read-only files
1810: 20 63 61 6e 6e 6f 74 20 62 65 0a 20 20 75 70 67   cannot be.  upg
1820: 72 61 64 65 64 20 74 6f 20 74 68 65 20 6e 65 77  raded to the new
1830: 20 66 6f 72 6d 61 74 2e 3c 2f 70 3e 0a 20 20 3c   format.</p>.  <
1840: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
1850: 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f    <td valign="to
1860: 70 22 3e 32 2e 36 2e 33 20 74 6f 20 32 2e 37 2e  p">2.6.3 to 2.7.
1870: 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c  0</td>.  <td val
1880: 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 32 2d 41  ign="top">2002-A
1890: 75 67 2d 31 33 3c 2f 74 64 3e 0a 20 20 3c 74 64  ug-13</td>.  <td
18a0: 3e 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 77 69  ><p>Beginning wi
18b0: 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 37 2e 30  th version 2.7.0
18c0: 2c 20 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74  , SQLite underst
18d0: 61 6e 64 73 20 74 77 6f 20 64 69 66 66 65 72 65  ands two differe
18e0: 6e 74 0a 20 20 64 61 74 61 74 79 70 65 73 3a 20  nt.  datatypes: 
18f0: 74 65 78 74 20 61 6e 64 20 6e 75 6d 65 72 69 63  text and numeric
1900: 2e 20 20 54 65 78 74 20 64 61 74 61 20 73 6f 72  .  Text data sor
1910: 74 73 20 69 6e 20 6d 65 6d 63 6d 70 28 29 20 6f  ts in memcmp() o
1920: 72 64 65 72 2e 0a 20 20 4e 75 6d 65 72 69 63 20  rder..  Numeric 
1930: 64 61 74 61 20 73 6f 72 74 73 20 69 6e 20 6e 75  data sorts in nu
1940: 6d 65 72 69 63 61 6c 20 6f 72 64 65 72 20 69 66  merical order if
1950: 20 69 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61   it looks like a
1960: 20 6e 75 6d 62 65 72 2c 0a 20 20 6f 72 20 69 6e   number,.  or in
1970: 20 6d 65 6d 63 6d 70 28 29 20 6f 72 64 65 72 20   memcmp() order 
1980: 69 66 20 69 74 20 64 6f 65 73 20 6e 6f 74 2e 3c  if it does not.<
1990: 2f 70 3e 0a 0a 20 20 3c 70 3e 57 68 65 6e 20 53  /p>..  <p>When S
19a0: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32 2e  QLite version 2.
19b0: 37 2e 30 20 6f 72 20 6c 61 74 65 72 20 6f 70 65  7.0 or later ope
19c0: 6e 73 20 61 20 32 2e 36 2e 33 20 6f 72 20 65 61  ns a 2.6.3 or ea
19d0: 72 6c 69 65 72 20 64 61 74 61 62 61 73 65 2c 0a  rlier database,.
19e0: 20 20 69 74 20 61 73 73 75 6d 65 73 20 61 6c 6c    it assumes all
19f0: 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20   columns of all 
1a00: 74 61 62 6c 65 73 20 68 61 76 65 20 74 79 70 65  tables have type
1a10: 20 22 6e 75 6d 65 72 69 63 22 2e 20 20 46 6f 72   "numeric".  For
1a20: 20 32 2e 37 2e 30 0a 20 20 61 6e 64 20 6c 61 74   2.7.0.  and lat
1a30: 65 72 20 64 61 74 61 62 61 73 65 73 2c 20 63 6f  er databases, co
1a40: 6c 75 6d 6e 73 20 68 61 76 65 20 74 79 70 65 20  lumns have type 
1a50: 22 74 65 78 74 22 20 69 66 20 74 68 65 69 72 20  "text" if their 
1a60: 64 61 74 61 74 79 70 65 0a 20 20 73 74 72 69 6e  datatype.  strin
1a70: 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 73  g contains the s
1a80: 75 62 73 74 72 69 6e 67 73 20 22 63 68 61 72 22  ubstrings "char"
1a90: 20 6f 72 20 22 63 6c 6f 62 22 20 6f 72 20 22 62   or "clob" or "b
1aa0: 6c 6f 62 22 20 6f 72 20 22 74 65 78 74 22 2e 0a  lob" or "text"..
1ab0: 20 20 4f 74 68 65 72 77 69 73 65 20 74 68 65 79    Otherwise they
1ac0: 20 61 72 65 20 6f 66 20 74 79 70 65 20 22 6e 75   are of type "nu
1ad0: 6d 65 72 69 63 22 2e 3c 2f 70 3e 0a 0a 20 20 3c  meric".</p>..  <
1ae0: 70 3e 42 65 63 61 75 73 65 20 22 74 65 78 74 22  p>Because "text"
1af0: 20 63 6f 6c 75 6d 6e 73 20 68 61 76 65 20 61 20   columns have a 
1b00: 64 69 66 66 65 72 65 6e 74 20 73 6f 72 74 20 6f  different sort o
1b10: 72 64 65 72 20 66 72 6f 6d 20 6e 75 6d 65 72 69  rder from numeri
1b20: 63 2c 0a 20 20 69 6e 64 69 63 65 73 20 6f 6e 20  c,.  indices on 
1b30: 22 74 65 78 74 22 20 63 6f 6c 75 6d 6e 73 20 6f  "text" columns o
1b40: 63 63 75 72 20 69 6e 20 61 20 64 69 66 66 65 72  ccur in a differ
1b50: 65 6e 74 20 6f 72 64 65 72 20 66 6f 72 20 76 65  ent order for ve
1b60: 72 73 69 6f 6e 0a 20 20 32 2e 37 2e 30 20 61 6e  rsion.  2.7.0 an
1b70: 64 20 6c 61 74 65 72 20 64 61 74 61 62 61 73 65  d later database
1b80: 2e 20 20 48 65 6e 63 65 20 76 65 72 73 69 6f 6e  .  Hence version
1b90: 20 32 2e 36 2e 33 20 61 6e 64 20 65 61 72 6c 69   2.6.3 and earli
1ba0: 65 72 20 6f 66 20 53 51 4c 69 74 65 20 0a 20 20  er of SQLite .  
1bb0: 77 69 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74  will be unable t
1bc0: 6f 20 72 65 61 64 20 61 20 32 2e 37 2e 30 20 6f  o read a 2.7.0 o
1bd0: 72 20 6c 61 74 65 72 20 64 61 74 61 62 61 73 65  r later database
1be0: 2e 20 20 42 75 74 20 76 65 72 73 69 6f 6e 20 32  .  But version 2
1bf0: 2e 37 2e 30 0a 20 20 61 6e 64 20 6c 61 74 65 72  .7.0.  and later
1c00: 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20   of SQLite will 
1c10: 72 65 61 64 20 65 61 72 6c 69 65 72 20 64 61 74  read earlier dat
1c20: 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 20 20 3c 2f  abases.</p>.  </
1c30: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20  td>.</tr>.<tr>. 
1c40: 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70   <td valign="top
1c50: 22 3e 32 2e 37 2e 36 20 74 6f 20 32 2e 38 2e 30  ">2.7.6 to 2.8.0
1c60: 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69  </td>.  <td vali
1c70: 67 6e 3d 22 74 6f 70 22 3e 32 30 30 33 2d 46 65  gn="top">2003-Fe
1c80: 62 2d 31 34 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e  b-14</td>.  <td>
1c90: 3c 70 3e 56 65 72 73 69 6f 6e 20 32 2e 38 2e 30  <p>Version 2.8.0
1ca0: 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 63 68   introduces a ch
1cb0: 61 6e 67 65 20 74 6f 20 74 68 65 20 66 6f 72 6d  ange to the form
1cc0: 61 74 20 6f 66 20 74 68 65 20 72 6f 6c 6c 62 61  at of the rollba
1cd0: 63 6b 0a 20 20 6a 6f 75 72 6e 61 6c 20 66 69 6c  ck.  journal fil
1ce0: 65 2e 20 20 54 68 65 20 6d 61 69 6e 20 64 61 74  e.  The main dat
1cf0: 61 62 61 73 65 20 66 69 6c 65 20 66 6f 72 6d 61  abase file forma
1d00: 74 20 69 73 20 75 6e 63 68 61 6e 67 65 64 2e 20  t is unchanged. 
1d10: 20 56 65 72 73 69 6f 6e 73 0a 20 20 32 2e 37 2e   Versions.  2.7.
1d20: 36 20 61 6e 64 20 65 61 72 6c 69 65 72 20 63 61  6 and earlier ca
1d30: 6e 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65  n read and write
1d40: 20 32 2e 38 2e 30 20 64 61 74 61 62 61 73 65 73   2.8.0 databases
1d50: 20 61 6e 64 20 76 69 63 65 20 76 65 72 73 61 2e   and vice versa.
1d60: 0a 20 20 56 65 72 73 69 6f 6e 20 32 2e 38 2e 30  .  Version 2.8.0
1d70: 20 63 61 6e 20 72 6f 6c 6c 62 61 63 6b 20 61 20   can rollback a 
1d80: 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68 61 74  transaction that
1d90: 20 77 61 73 20 73 74 61 72 74 65 64 20 62 79 20   was started by 
1da0: 76 65 72 73 69 6f 6e 0a 20 20 32 2e 37 2e 36 20  version.  2.7.6 
1db0: 61 6e 64 20 65 61 72 6c 69 65 72 2e 20 20 42 75  and earlier.  Bu
1dc0: 74 20 76 65 72 73 69 6f 6e 20 32 2e 37 2e 36 20  t version 2.7.6 
1dd0: 61 6e 64 20 65 61 72 6c 69 65 72 20 63 61 6e 6e  and earlier cann
1de0: 6f 74 20 72 6f 6c 6c 62 61 63 6b 20 61 0a 20 20  ot rollback a.  
1df0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 72  transaction star
1e00: 74 65 64 20 62 79 20 76 65 72 73 69 6f 6e 20 32  ted by version 2
1e10: 2e 38 2e 30 20 6f 72 20 6c 61 74 65 72 2e 3c 2f  .8.0 or later.</
1e20: 70 3e 0a 0a 20 20 3c 70 3e 54 68 65 20 6f 6e 6c  p>..  <p>The onl
1e30: 79 20 74 69 6d 65 20 74 68 69 73 20 77 6f 75 6c  y time this woul
1e40: 64 20 65 76 65 72 20 62 65 20 61 6e 20 69 73 73  d ever be an iss
1e50: 75 65 20 69 73 20 77 68 65 6e 20 79 6f 75 20 68  ue is when you h
1e60: 61 76 65 20 61 20 70 72 6f 67 72 61 6d 0a 20 20  ave a program.  
1e70: 75 73 69 6e 67 20 76 65 72 73 69 6f 6e 20 32 2e  using version 2.
1e80: 38 2e 30 20 6f 72 20 6c 61 74 65 72 20 74 68 61  8.0 or later tha
1e90: 74 20 63 72 61 73 68 65 73 20 77 69 74 68 20 61  t crashes with a
1ea0: 6e 20 69 6e 63 6f 6d 70 6c 65 74 65 0a 20 20 74  n incomplete.  t
1eb0: 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 6e  ransaction, then
1ec0: 20 79 6f 75 20 74 72 79 20 74 6f 20 65 78 61 6d   you try to exam
1ed0: 69 6e 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ine the database
1ee0: 20 75 73 69 6e 67 20 76 65 72 73 69 6f 6e 20 32   using version 2
1ef0: 2e 37 2e 36 20 6f 72 0a 20 20 65 61 72 6c 69 65  .7.6 or.  earlie
1f00: 72 2e 20 20 54 68 65 20 32 2e 37 2e 36 20 63 6f  r.  The 2.7.6 co
1f10: 64 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61  de will not be a
1f20: 62 6c 65 20 74 6f 20 72 65 61 64 20 74 68 65 20  ble to read the 
1f30: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 0a 20 20 61  journal file.  a
1f40: 6e 64 20 74 68 75 73 20 77 69 6c 6c 20 6e 6f 74  nd thus will not
1f50: 20 62 65 20 61 62 6c 65 20 74 6f 20 72 6f 6c 6c   be able to roll
1f60: 62 61 63 6b 20 74 68 65 20 69 6e 63 6f 6d 70 6c  back the incompl
1f70: 65 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  ete transaction.
1f80: 20 20 74 6f 20 72 65 73 74 6f 72 65 20 74 68 65    to restore the
1f90: 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 20   database.</p>. 
1fa0: 20 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72   </td>.</tr>.<tr
1fb0: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
1fc0: 74 6f 70 22 3e 32 2e 38 2e 31 34 20 74 6f 20 33  top">2.8.14 to 3
1fd0: 2e 30 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20  .0.0</td>.  <td 
1fe0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30  valign="top">200
1ff0: 34 2d 4a 75 6e 2d 31 38 3c 2f 74 64 3e 0a 20 20  4-Jun-18</td>.  
2000: 3c 74 64 3e 3c 70 3e 56 65 72 73 69 6f 6e 20 33  <td><p>Version 3
2010: 2e 30 2e 30 20 69 73 20 61 20 6d 61 6a 6f 72 20  .0.0 is a major 
2020: 75 70 67 72 61 64 65 20 66 6f 72 20 53 51 4c 69  upgrade for SQLi
2030: 74 65 20 74 68 61 74 20 69 6e 63 6f 72 70 6f 72  te that incorpor
2040: 61 74 65 73 0a 20 20 73 75 70 70 6f 72 74 20 66  ates.  support f
2050: 6f 72 20 55 54 46 2d 31 36 2c 20 42 4c 4f 42 73  or UTF-16, BLOBs
2060: 2c 20 61 6e 64 20 61 20 6d 6f 72 65 20 63 6f 6d  , and a more com
2070: 70 61 63 74 20 65 6e 63 6f 64 69 6e 67 20 74 68  pact encoding th
2080: 61 74 20 72 65 73 75 6c 74 73 0a 20 20 69 6e 20  at results.  in 
2090: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 74  database files t
20a0: 68 61 74 20 61 72 65 20 74 79 70 69 63 61 6c 6c  hat are typicall
20b0: 79 20 32 35 25 20 74 6f 20 35 30 25 20 73 6d 61  y 25% to 50% sma
20c0: 6c 6c 65 72 2e 20 20 54 68 65 20 6e 65 77 20 66  ller.  The new f
20d0: 69 6c 65 0a 20 20 66 6f 72 6d 61 74 20 69 73 20  ile.  format is 
20e0: 76 65 72 79 20 64 69 66 66 65 72 65 6e 74 20 61  very different a
20f0: 6e 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79  nd is completely
2100: 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 69   incompatible wi
2110: 74 68 20 74 68 65 0a 20 20 76 65 72 73 69 6f 6e  th the.  version
2120: 20 32 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 3c   2 file format.<
2130: 2f 70 3e 0a 20 20 3c 2f 74 64 3e 0a 3c 2f 74 72  /p>.  </td>.</tr
2140: 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76 61 6c  >.<tr>.  <td val
2150: 69 67 6e 3d 22 74 6f 70 22 3e 33 2e 30 2e 38 20  ign="top">3.0.8 
2160: 74 6f 20 33 2e 31 2e 30 3c 2f 74 64 3e 0a 20 20  to 3.1.0</td>.  
2170: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
2180: 3e 32 30 30 34 2d 4a 61 6e 2d 32 31 3c 2f 74 64  >2004-Jan-21</td
2190: 3e 0a 20 20 3c 74 64 3e 3c 70 3e 56 65 72 73 69  >.  <td><p>Versi
21a0: 6f 6e 20 33 2e 31 2e 30 20 61 64 64 73 20 73 75  on 3.1.0 adds su
21b0: 70 70 6f 72 74 20 66 6f 72 0a 20 20 3c 61 20 68  pport for.  <a h
21c0: 72 65 66 3d 22 70 72 61 67 6d 61 2e 68 74 6d 6c  ref="pragma.html
21d0: 23 70 72 61 67 6d 61 5f 61 75 74 6f 5f 76 61 63  #pragma_auto_vac
21e0: 75 75 6d 22 3e 61 75 74 6f 76 61 63 75 75 6d 20  uum">autovacuum 
21f0: 6d 6f 64 65 3c 2f 61 3e 2e 0a 20 20 50 72 69 6f  mode</a>..  Prio
2200: 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  r versions of SQ
2210: 4c 69 74 65 20 77 69 6c 6c 20 62 65 20 61 62 6c  Lite will be abl
2220: 65 20 74 6f 20 72 65 61 64 20 61 6e 20 61 75 74  e to read an aut
2230: 6f 76 61 63 75 75 6d 65 64 0a 20 20 64 61 74 61  ovacuumed.  data
2240: 62 61 73 65 20 62 75 74 20 77 69 6c 6c 20 6e 6f  base but will no
2250: 74 20 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69  t be able to wri
2260: 74 65 20 69 74 2e 20 20 49 66 20 61 75 74 6f 76  te it.  If autov
2270: 61 63 63 75 6d 20 69 73 20 64 69 73 61 62 6c 65  accum is disable
2280: 64 0a 20 20 28 77 68 69 63 68 20 69 73 20 74 68  d.  (which is th
2290: 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 64 69 74  e default condit
22a0: 69 6f 6e 29 0a 20 20 74 68 65 6e 20 64 61 74 61  ion).  then data
22b0: 62 61 73 65 73 20 61 72 65 20 66 75 6c 6c 79 20  bases are fully 
22c0: 66 6f 72 77 61 72 64 73 20 61 6e 64 20 62 61 63  forwards and bac
22d0: 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 6c  kwards compatibl
22e0: 65 2e 3c 2f 70 3e 0a 20 20 3c 2f 74 64 3e 0a 3c  e.</p>.  </td>.<
22f0: 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20  /tr>.<tr>.  <td 
2300: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 33 2e 31  valign="top">3.1
2310: 2e 36 20 74 6f 20 33 2e 32 2e 30 3c 2f 74 64 3e  .6 to 3.2.0</td>
2320: 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  .  <td valign="t
2330: 6f 70 22 3e 32 30 30 34 2d 4d 61 72 2d 31 39 3c  op">2004-Mar-19<
2340: 2f 74 64 3e 0a 20 20 3c 74 64 3e 3c 70 3e 56 65  /td>.  <td><p>Ve
2350: 72 73 69 6f 6e 20 33 2e 32 2e 30 20 61 64 64 73  rsion 3.2.0 adds
2360: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65   support for the
2370: 20 0a 20 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e   .  <a href="lan
2380: 67 5f 61 6c 74 65 72 74 61 62 6c 65 2e 68 74 6d  g_altertable.htm
2390: 6c 22 3e 41 4c 54 45 52 20 54 41 42 4c 45 20 41  l">ALTER TABLE A
23a0: 44 44 20 43 4f 4c 55 4d 4e 3c 2f 61 3e 0a 20 20  DD COLUMN</a>.  
23b0: 63 6f 6d 6d 61 6e 64 2e 20 20 41 20 64 61 74 61  command.  A data
23c0: 62 61 73 65 20 74 68 61 74 20 68 61 73 20 62 65  base that has be
23d0: 65 6e 20 6d 6f 64 69 66 69 65 64 20 62 79 20 74  en modified by t
23e0: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 63 61 6e 0a  his command can.
23f0: 20 20 6e 6f 74 20 62 65 20 72 65 61 64 20 62 79    not be read by
2400: 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 51   a version of SQ
2410: 4c 69 74 65 20 70 72 69 6f 72 20 74 6f 20 33 2e  Lite prior to 3.
2420: 31 2e 34 2e 20 20 52 75 6e 6e 69 6e 67 20 0a 20  1.4.  Running . 
2430: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 76   <a href="lang_v
2440: 61 63 75 75 6d 2e 68 74 6d 6c 22 3e 56 41 43 55  acuum.html">VACU
2450: 55 4d 3c 2f 61 3e 0a 20 20 61 66 74 65 72 20 74  UM</a>.  after t
2460: 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 0a 20  he ALTER TABLE. 
2470: 20 72 65 73 74 6f 72 65 73 20 74 68 65 20 64 61   restores the da
2480: 74 61 62 61 73 65 20 74 6f 20 61 20 66 6f 72 6d  tabase to a form
2490: 61 74 20 73 75 63 68 20 74 68 61 74 20 69 74 20  at such that it 
24a0: 63 61 6e 20 62 65 20 72 65 61 64 20 62 79 20 65  can be read by e
24b0: 61 72 6c 69 65 72 0a 20 20 53 51 4c 69 74 65 20  arlier.  SQLite 
24c0: 76 65 72 73 69 6f 6e 73 2e 3c 2f 70 3e 0a 20 20  versions.</p>.  
24d0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61  </td>.</tr>.</ta
24e0: 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  ble>.</blockquot
24f0: 65 3e 0a 0a 3c 70 3e 0a 54 6f 20 70 65 72 66 6f  e>..<p>.To perfo
2500: 72 6d 20 61 20 64 61 74 61 62 61 73 65 20 72 65  rm a database re
2510: 6c 6f 61 64 2c 20 68 61 76 65 20 72 65 61 64 79  load, have ready
2520: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65   versions of the
2530: 0a 3c 62 3e 73 71 6c 69 74 65 3c 2f 62 3e 20 63  .<b>sqlite</b> c
2540: 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 75 74 69 6c  ommand-line util
2550: 69 74 79 20 66 6f 72 20 62 6f 74 68 20 74 68 65  ity for both the
2560: 20 6f 6c 64 20 61 6e 64 20 6e 65 77 0a 76 65 72   old and new.ver
2570: 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 2e 20  sion of SQLite. 
2580: 20 43 61 6c 6c 20 74 68 65 73 65 20 74 77 6f 20   Call these two 
2590: 65 78 65 63 75 74 61 62 6c 65 73 20 22 3c 62 3e  executables "<b>
25a0: 73 71 6c 69 74 65 2d 6f 6c 64 3c 2f 62 3e 22 0a  sqlite-old</b>".
25b0: 61 6e 64 20 22 3c 62 3e 73 71 6c 69 74 65 2d 6e  and "<b>sqlite-n
25c0: 65 77 3c 2f 62 3e 22 2e 20 20 53 75 70 70 6f 73  ew</b>".  Suppos
25d0: 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79 6f  e the name of yo
25e0: 75 72 20 6f 6c 64 20 64 61 74 61 62 61 73 65 0a  ur old database.
25f0: 69 73 20 22 3c 62 3e 6f 6c 64 2e 64 62 3c 2f 62  is "<b>old.db</b
2600: 3e 22 20 61 6e 64 20 79 6f 75 20 77 61 6e 74 20  >" and you want 
2610: 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20  to create a new 
2620: 64 61 74 61 62 61 73 65 20 77 69 74 68 0a 74 68  database with.th
2630: 65 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69  e same informati
2640: 6f 6e 20 6e 61 6d 65 64 20 22 3c 62 3e 6e 65 77  on named "<b>new
2650: 2e 64 62 3c 2f 62 3e 22 2e 20 20 54 68 65 20 63  .db</b>".  The c
2660: 6f 6d 6d 61 6e 64 20 74 6f 20 64 6f 0a 74 68 69  ommand to do.thi
2670: 73 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a  s is as follows:
2680: 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
2690: 74 65 3e 0a 20 20 73 71 6c 69 74 65 2d 6f 6c 64  te>.  sqlite-old
26a0: 20 6f 6c 64 2e 64 62 20 2e 64 75 6d 70 20 7c 20   old.db .dump | 
26b0: 73 71 6c 69 74 65 2d 6e 65 77 20 6e 65 77 2e 64  sqlite-new new.d
26c0: 62 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  b.</blockquote>.
26d0: 7d 0a 66 6f 6f 74 65 72 20 24 72 63 73 69 64 0a  }.footer $rcsid.