/ Hex Artifact Content
Login

Artifact 2ce21ff30663fad6618198fe747ce675df577590:


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 34 20 32 30 30 32 2f 30 33 2f 31 31 20   1.4 2002/03/11 
0070: 30 32 3a 30 36 3a 31 34 20 64 72 68 20 45 78 70  02:06:14 drh Exp
0080: 20 24 20 7d 0a 0a 70 75 74 73 20 7b 3c 68 74 6d   $ }..puts {<htm
0090: 6c 3e 0a 3c 68 65 61 64 3e 0a 20 20 3c 74 69 74  l>.<head>.  <tit
00a0: 6c 65 3e 46 69 6c 65 20 46 6f 72 6d 61 74 20 43  le>File Format C
00b0: 68 61 6e 67 65 73 20 69 6e 20 53 51 4c 69 74 65  hanges in SQLite
00c0: 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e  </title>.</head>
00d0: 0a 3c 62 6f 64 79 20 62 67 63 6f 6c 6f 72 3d 77  .<body bgcolor=w
00e0: 68 69 74 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d  hite>.<h1 align=
00f0: 63 65 6e 74 65 72 3e 0a 46 69 6c 65 20 46 6f 72  center>.File For
0100: 6d 61 74 20 43 68 61 6e 67 65 73 20 69 6e 20 53  mat Changes in S
0110: 51 4c 69 74 65 0a 3c 2f 68 31 3e 7d 0a 70 75 74  QLite.</h1>}.put
0120: 73 20 22 3c 70 20 61 6c 69 67 6e 3d 63 65 6e 74  s "<p align=cent
0130: 65 72 3e 0a 28 54 68 69 73 20 70 61 67 65 20 77  er>.(This page w
0140: 61 73 20 6c 61 73 74 20 6d 6f 64 69 66 69 65 64  as last modified
0150: 20 6f 6e 20 5b 6c 72 61 6e 67 65 20 24 72 63 73   on [lrange $rcs
0160: 69 64 20 33 20 34 5d 20 55 54 43 29 0a 3c 2f 70  id 3 4] UTC).</p
0170: 3e 22 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 0a 46  >"..puts {.<p>.F
0180: 72 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65  rom time to time
0190: 2c 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73 20 6f  , enhancements o
01a0: 72 20 62 75 67 20 66 69 78 65 73 20 72 65 71 75  r bug fixes requ
01b0: 69 72 65 20 61 20 63 68 61 6e 67 65 20 74 6f 0a  ire a change to.
01c0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 66  the underlying f
01d0: 69 6c 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 53  ile format for S
01e0: 51 4c 69 74 65 2e 20 20 57 68 65 6e 20 74 68 69  QLite.  When thi
01f0: 73 20 68 61 70 70 65 6e 73 20 61 6e 64 20 79 6f  s happens and yo
0200: 75 0a 77 61 6e 74 20 74 6f 20 75 70 67 72 61 64  u.want to upgrad
0210: 65 20 79 6f 75 72 20 6c 69 62 72 61 72 79 2c 20  e your library, 
0220: 79 6f 75 20 6d 75 73 74 20 63 6f 6e 76 65 72 74  you must convert
0230: 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66   the contents of
0240: 20 79 6f 75 72 0a 64 61 74 61 62 61 73 65 73 20   your.databases 
0250: 69 6e 74 6f 20 61 20 70 6f 72 74 61 62 6c 65 20  into a portable 
0260: 41 53 43 49 49 20 72 65 70 72 65 73 65 6e 74 61  ASCII representa
0270: 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 6f  tion using the o
0280: 6c 64 20 76 65 72 73 69 6f 6e 0a 6f 66 20 74 68  ld version.of th
0290: 65 20 6c 69 62 72 61 72 79 20 74 68 65 6e 20 72  e library then r
02a0: 65 6c 6f 61 64 20 74 68 65 20 64 61 74 61 20 75  eload the data u
02b0: 73 69 6e 67 20 74 68 65 20 6e 65 77 20 76 65 72  sing the new ver
02c0: 73 69 6f 6e 20 6f 66 20 74 68 65 0a 6c 69 62 72  sion of the.libr
02d0: 61 72 79 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 59  ary..</p>..<p>.Y
02e0: 6f 75 20 63 61 6e 20 74 65 6c 6c 20 69 66 20 79  ou can tell if y
02f0: 6f 75 20 73 68 6f 75 6c 64 20 72 65 6c 6f 61 64  ou should reload
0300: 20 79 6f 75 72 20 64 61 74 61 62 61 73 65 73 20   your databases 
0310: 62 79 20 63 6f 6d 70 61 72 69 6e 67 20 74 68 65  by comparing the
0320: 0a 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73  .version numbers
0330: 20 6f 66 20 74 68 65 20 6f 6c 64 20 61 6e 64 20   of the old and 
0340: 6e 65 77 20 6c 69 62 72 61 72 69 65 73 2e 20 20  new libraries.  
0350: 49 66 20 65 69 74 68 65 72 20 6f 66 20 74 68 65  If either of the
0360: 0a 66 69 72 73 74 20 74 77 6f 20 64 69 67 69 74  .first two digit
0370: 73 20 69 6e 20 74 68 65 20 76 65 72 73 69 6f 6e  s in the version
0380: 20 6e 75 6d 62 65 72 20 63 68 61 6e 67 65 2c 20   number change, 
0390: 74 68 65 6e 20 61 20 72 65 6c 6f 61 64 20 69 73  then a reload is
03a0: 0a 65 69 74 68 65 72 20 72 65 71 75 69 72 65 64  .either required
03b0: 20 6f 72 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e   or recommended.
03c0: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 75    For example, u
03d0: 70 67 72 61 64 69 6e 67 20 66 72 6f 6d 0a 76 65  pgrading from.ve
03e0: 72 73 69 6f 6e 20 31 2e 30 2e 33 32 20 74 6f 20  rsion 1.0.32 to 
03f0: 32 2e 30 2e 30 20 72 65 71 75 69 72 65 73 20 61  2.0.0 requires a
0400: 20 72 65 6c 6f 61 64 2e 20 20 53 6f 20 64 6f 65   reload.  So doe
0410: 73 20 67 6f 69 6e 67 20 66 72 6f 6d 0a 76 65 72  s going from.ver
0420: 73 69 6f 6e 20 32 2e 30 2e 38 20 74 6f 20 32 2e  sion 2.0.8 to 2.
0430: 31 2e 30 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54  1.0..</p>..<p>.T
0440: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62  he following tab
0450: 6c 65 20 73 75 6d 6d 61 72 69 7a 65 73 20 74 68  le summarizes th
0460: 65 20 53 51 4c 69 74 65 20 66 69 6c 65 20 66 6f  e SQLite file fo
0470: 72 6d 61 74 20 63 68 61 6e 67 65 73 20 74 68 61  rmat changes tha
0480: 74 20 68 61 76 65 0a 6f 63 63 75 72 72 65 64 20  t have.occurred 
0490: 73 69 6e 63 65 20 76 65 72 73 69 6f 6e 20 31 2e  since version 1.
04a0: 30 2e 30 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  0.0:.</p>..<bloc
04b0: 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62  kquote>.<table b
04c0: 6f 72 64 65 72 3d 32 20 63 65 6c 6c 70 61 64 64  order=2 cellpadd
04d0: 69 6e 67 3d 35 3e 0a 3c 74 72 3e 0a 20 20 3c 74  ing=5>.<tr>.  <t
04e0: 68 3e 56 65 72 73 69 6f 6e 20 43 68 61 6e 67 65  h>Version Change
04f0: 3c 2f 74 68 3e 0a 20 20 3c 74 68 3e 41 70 70 72  </th>.  <th>Appr
0500: 6f 78 2e 20 44 61 74 65 3c 2f 74 68 3e 0a 20 20  ox. Date</th>.  
0510: 3c 74 68 3e 44 65 73 63 72 69 70 74 69 6f 6e 20  <th>Description 
0520: 4f 66 20 46 69 6c 65 20 46 6f 72 6d 61 74 20 43  Of File Format C
0530: 68 61 6e 67 65 3c 2f 74 68 3e 0a 3c 2f 74 72 3e  hange</th>.</tr>
0540: 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76 61 6c 69  .<tr>.  <td vali
0550: 67 6e 3d 22 74 6f 70 22 3e 31 2e 30 2e 33 32 20  gn="top">1.0.32 
0560: 74 6f 20 32 2e 30 2e 30 3c 2f 74 64 3e 0a 20 20  to 2.0.0</td>.  
0570: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
0580: 3e 32 30 30 31 2d 53 65 70 2d 32 30 3c 2f 74 64  >2001-Sep-20</td
0590: 3e 0a 20 20 3c 74 64 3e 56 65 72 73 69 6f 6e 20  >.  <td>Version 
05a0: 31 2e 30 2e 58 20 6f 66 20 53 51 4c 69 74 65 20  1.0.X of SQLite 
05b0: 75 73 65 64 20 74 68 65 20 47 44 42 4d 20 6c 69  used the GDBM li
05c0: 62 72 61 72 79 20 61 73 20 69 74 73 20 62 61 63  brary as its bac
05d0: 6b 65 6e 64 0a 20 20 69 6e 74 65 72 66 61 63 65  kend.  interface
05e0: 20 74 6f 20 74 68 65 20 64 69 73 6b 2e 20 20 42   to the disk.  B
05f0: 65 67 69 6e 6e 69 6e 67 20 69 6e 20 76 65 72 73  eginning in vers
0600: 69 6f 6e 20 32 2e 30 2e 30 2c 20 47 44 42 4d 20  ion 2.0.0, GDBM 
0610: 77 61 73 20 72 65 70 6c 61 63 65 64 0a 20 20 62  was replaced.  b
0620: 79 20 61 20 63 75 73 74 6f 6d 20 42 2d 54 72 65  y a custom B-Tre
0630: 65 20 6c 69 62 72 61 72 79 20 77 72 69 74 74 65  e library writte
0640: 6e 20 65 73 70 65 63 69 61 6c 6c 79 20 66 6f 72  n especially for
0650: 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20 6e 65   SQLite.  The ne
0660: 77 0a 20 20 42 2d 54 72 65 65 20 62 61 63 6b 65  w.  B-Tree backe
0670: 6e 64 20 69 73 20 74 77 69 63 65 20 61 73 20 66  nd is twice as f
0680: 61 73 74 20 61 73 20 47 44 42 4d 2c 20 73 75 70  ast as GDBM, sup
0690: 70 6f 72 74 73 20 61 74 6f 6d 69 63 20 63 6f 6d  ports atomic com
06a0: 6d 69 74 73 20 61 6e 64 0a 20 20 72 6f 6c 6c 62  mits and.  rollb
06b0: 61 63 6b 2c 20 61 6e 64 20 73 74 6f 72 65 73 20  ack, and stores 
06c0: 61 6e 20 65 6e 74 69 72 65 20 64 61 74 61 62 61  an entire databa
06d0: 73 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 64  se in a single d
06e0: 69 73 6b 20 66 69 6c 65 20 69 6e 73 74 65 61 64  isk file instead
06f0: 0a 20 20 75 73 69 6e 67 20 61 20 73 65 70 61 72  .  using a separ
0700: 61 74 65 20 66 69 6c 65 20 66 6f 72 20 65 61 63  ate file for eac
0710: 68 20 74 61 62 6c 65 20 61 73 20 47 44 42 4d 20  h table as GDBM 
0720: 64 6f 65 73 2e 20 20 54 68 65 20 74 77 6f 0a 20  does.  The two. 
0730: 20 66 69 6c 65 20 66 6f 72 6d 61 74 73 20 61 72   file formats ar
0740: 65 20 6e 6f 74 20 65 76 65 6e 20 72 65 6d 6f 74  e not even remot
0750: 65 6c 79 20 73 69 6d 69 6c 61 72 2e 3c 2f 74 64  ely similar.</td
0760: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c  >.</tr>.<tr>.  <
0770: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
0780: 32 2e 30 2e 38 20 74 6f 20 32 2e 31 2e 30 3c 2f  2.0.8 to 2.1.0</
0790: 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e  td>.  <td valign
07a0: 3d 22 74 6f 70 22 3e 32 30 30 31 2d 4e 6f 76 2d  ="top">2001-Nov-
07b0: 31 32 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 54 68  12</td>.  <td>Th
07c0: 65 20 73 61 6d 65 20 62 61 73 69 63 20 42 2d 54  e same basic B-T
07d0: 72 65 65 20 66 6f 72 6d 61 74 20 69 73 20 75 73  ree format is us
07e0: 65 64 20 62 75 74 20 74 68 65 20 64 65 74 61 69  ed but the detai
07f0: 6c 73 20 6f 66 20 74 68 65 20 0a 20 20 69 6e 64  ls of the .  ind
0800: 65 78 20 6b 65 79 73 20 77 65 72 65 20 63 68 61  ex keys were cha
0810: 6e 67 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f  nged in order to
0820: 20 70 72 6f 76 69 64 65 20 62 65 74 74 65 72 20   provide better 
0830: 71 75 65 72 79 20 0a 20 20 6f 70 74 69 6d 69 7a  query .  optimiz
0840: 61 74 69 6f 6e 20 6f 70 70 6f 72 74 75 6e 69 74  ation opportunit
0850: 69 65 73 2e 20 20 53 6f 6d 65 20 6f 66 20 74 68  ies.  Some of th
0860: 65 20 68 65 61 64 65 72 73 20 77 65 72 65 20 61  e headers were a
0870: 6c 73 6f 20 63 68 61 6e 67 65 64 20 69 6e 20 6f  lso changed in o
0880: 72 64 65 72 0a 20 20 74 6f 20 69 6e 63 72 65 61  rder.  to increa
0890: 73 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 73  se the maximum s
08a0: 69 7a 65 20 6f 66 20 61 20 72 6f 77 20 66 72 6f  ize of a row fro
08b0: 6d 20 36 34 4b 42 20 74 6f 20 32 34 4d 42 2e 3c  m 64KB to 24MB.<
08c0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
08d0: 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f    <td valign="to
08e0: 70 22 3e 32 2e 31 2e 37 20 74 6f 20 32 2e 32 2e  p">2.1.7 to 2.2.
08f0: 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c  0</td>.  <td val
0900: 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 31 2d 44  ign="top">2001-D
0910: 65 63 2d 32 31 3c 2f 74 64 3e 0a 20 20 3c 74 64  ec-21</td>.  <td
0920: 3e 42 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20  >Beginning with 
0930: 76 65 72 73 69 6f 6e 20 32 2e 32 2e 30 2c 20 53  version 2.2.0, S
0940: 51 4c 69 74 65 20 6e 6f 20 6c 6f 6e 67 65 72 20  QLite no longer 
0950: 62 75 69 6c 64 73 20 61 6e 20 69 6e 64 65 78 20  builds an index 
0960: 66 6f 72 0a 20 20 61 6e 20 49 4e 54 45 47 45 52  for.  an INTEGER
0970: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
0980: 75 6d 6e 2e 20 20 49 6e 73 74 65 61 64 2c 20 69  umn.  Instead, i
0990: 74 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c 75  t uses that colu
09a0: 6d 6e 20 61 73 20 74 68 65 20 61 63 74 75 61 6c  mn as the actual
09b0: 0a 20 20 42 2d 54 72 65 65 20 6b 65 79 20 66 6f  .  B-Tree key fo
09c0: 72 20 74 68 65 20 6d 61 69 6e 20 74 61 62 6c 65  r the main table
09d0: 2e 3c 70 3e 56 65 72 73 69 6f 6e 20 32 2e 32 2e  .<p>Version 2.2.
09e0: 30 20 61 6e 64 20 6c 61 74 65 72 20 6f 66 20 74  0 and later of t
09f0: 68 65 20 6c 69 62 72 61 72 79 0a 20 20 77 69 6c  he library.  wil
0a00: 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  l automatically 
0a10: 64 65 74 65 63 74 20 77 68 65 6e 20 69 74 20 69  detect when it i
0a20: 73 20 72 65 61 64 69 6e 67 20 61 20 32 2e 31 2e  s reading a 2.1.
0a30: 78 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 77  x database and w
0a40: 69 6c 6c 0a 20 20 64 69 73 61 62 6c 65 20 74 68  ill.  disable th
0a50: 65 20 6e 65 77 20 49 4e 54 45 47 45 52 20 50 52  e new INTEGER PR
0a60: 49 4d 41 52 59 20 4b 45 59 20 66 65 61 74 75 72  IMARY KEY featur
0a70: 65 2e 20 20 20 49 6e 20 6f 74 68 65 72 20 77 6f  e.   In other wo
0a80: 72 64 73 2c 20 76 65 72 73 69 6f 6e 0a 20 20 32  rds, version.  2
0a90: 2e 32 2e 78 20 69 73 20 62 61 63 6b 77 61 72 64  .2.x is backward
0aa0: 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 74 6f 20  s compatible to 
0ab0: 76 65 72 73 69 6f 6e 20 32 2e 31 2e 78 2e 20 20  version 2.1.x.  
0ac0: 42 75 74 20 76 65 72 73 69 6f 6e 20 32 2e 31 2e  But version 2.1.
0ad0: 78 20 69 73 20 6e 6f 74 0a 20 20 66 6f 72 77 61  x is not.  forwa
0ae0: 72 64 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69  rd compatible wi
0af0: 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e 78  th version 2.2.x
0b00: 2e 20 49 66 20 79 6f 75 20 74 72 79 20 74 6f 20  . If you try to 
0b10: 6f 70 65 6e 0a 20 20 61 20 32 2e 32 2e 78 20 64  open.  a 2.2.x d
0b20: 61 74 61 62 61 73 65 20 77 69 74 68 20 61 6e 20  atabase with an 
0b30: 6f 6c 64 65 72 20 32 2e 31 2e 78 20 6c 69 62 72  older 2.1.x libr
0b40: 61 72 79 20 61 6e 64 20 74 68 61 74 20 64 61 74  ary and that dat
0b50: 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 73 0a 20  abase contains. 
0b60: 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d   an INTEGER PRIM
0b70: 41 52 59 20 4b 45 59 2c 20 79 6f 75 20 77 69 6c  ARY KEY, you wil
0b80: 6c 20 6c 69 6b 65 6c 79 20 67 65 74 20 61 20 63  l likely get a c
0b90: 6f 72 65 64 75 6d 70 2e 20 20 49 66 20 74 68 65  oredump.  If the
0ba0: 20 64 61 74 61 62 61 73 65 0a 20 20 73 63 68 65   database.  sche
0bb0: 6d 61 20 64 6f 65 73 20 6e 6f 74 20 63 6f 6e 74  ma does not cont
0bc0: 61 69 6e 20 61 6e 79 20 49 4e 54 45 47 45 52 20  ain any INTEGER 
0bd0: 50 52 49 4d 41 52 59 20 4b 45 59 73 2c 20 74 68  PRIMARY KEYs, th
0be0: 65 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20 32  en the version 2
0bf0: 2e 31 2e 78 0a 20 20 61 6e 64 20 76 65 72 73 69  .1.x.  and versi
0c00: 6f 6e 20 32 2e 32 2e 78 20 64 61 74 61 62 61 73  on 2.2.x databas
0c10: 65 20 66 69 6c 65 73 20 77 69 6c 6c 20 62 65 20  e files will be 
0c20: 69 64 65 6e 74 69 63 61 6c 20 61 6e 64 20 63 6f  identical and co
0c30: 6d 70 6c 65 74 65 6c 79 0a 20 20 69 6e 74 65 72  mpletely.  inter
0c40: 63 68 61 6e 67 65 61 62 6c 65 2e 3c 2f 70 3e 0a  changeable.</p>.
0c50: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64  </tr>.<tr>.  <td
0c60: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 2e   valign="top">2.
0c70: 32 2e 35 20 74 6f 20 32 2e 33 2e 30 3c 2f 74 64  2.5 to 2.3.0</td
0c80: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
0c90: 74 6f 70 22 3e 32 30 30 32 2d 4a 61 6e 2d 33 30  top">2002-Jan-30
0ca0: 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 42 65 67 69  </td>.  <td>Begi
0cb0: 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72 73 69  nning with versi
0cc0: 6f 6e 20 32 2e 33 2e 30 2c 20 53 51 4c 69 74 65  on 2.3.0, SQLite
0cd0: 20 73 75 70 70 6f 72 74 73 20 73 6f 6d 65 20 61   supports some a
0ce0: 64 64 69 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78  dditional syntax
0cf0: 0a 20 20 28 74 68 65 20 22 4f 4e 20 43 4f 4e 46  .  (the "ON CONF
0d00: 4c 49 43 54 22 20 63 6c 61 75 73 65 29 20 69 6e  LICT" clause) in
0d10: 20 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c   the CREATE TABL
0d20: 45 20 61 6e 64 20 43 52 45 41 54 45 20 49 4e 44  E and CREATE IND
0d30: 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20  EX statements.  
0d40: 74 68 61 74 20 61 72 65 20 73 74 6f 72 65 64 20  that are stored 
0d50: 69 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d 41  in the SQLITE_MA
0d60: 53 54 45 52 20 74 61 62 6c 65 2e 20 20 49 66 20  STER table.  If 
0d70: 79 6f 75 20 63 72 65 61 74 65 20 61 20 64 61 74  you create a dat
0d80: 61 62 61 73 65 20 74 68 61 74 0a 20 20 63 6f 6e  abase that.  con
0d90: 74 61 69 6e 73 20 74 68 69 73 20 6e 65 77 20 73  tains this new s
0da0: 79 6e 74 61 78 2c 20 74 68 65 6e 20 74 72 79 20  yntax, then try 
0db0: 74 6f 20 72 65 61 64 20 74 68 61 74 20 64 61 74  to read that dat
0dc0: 61 62 61 73 65 20 75 73 69 6e 67 20 76 65 72 73  abase using vers
0dd0: 69 6f 6e 20 32 2e 32 2e 35 0a 20 20 6f 72 20 65  ion 2.2.5.  or e
0de0: 61 72 6c 69 65 72 2c 20 74 68 65 20 70 61 72 73  arlier, the pars
0df0: 65 72 20 77 69 6c 6c 20 6e 6f 74 20 75 6e 64 65  er will not unde
0e00: 72 73 74 61 6e 64 20 74 68 65 20 6e 65 77 20 73  rstand the new s
0e10: 79 6e 74 61 78 20 61 6e 64 20 79 6f 75 20 77 69  yntax and you wi
0e20: 6c 6c 20 67 65 74 0a 20 20 61 6e 20 65 72 72 6f  ll get.  an erro
0e30: 72 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20 64  r.  Otherwise, d
0e40: 61 74 61 62 61 73 65 73 20 66 6f 72 20 32 2e 32  atabases for 2.2
0e50: 2e 78 20 61 6e 64 20 32 2e 33 2e 78 20 61 72 65  .x and 2.3.x are
0e60: 20 69 6e 74 65 72 63 68 61 6e 67 65 61 62 6c 65   interchangeable
0e70: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72  .</td>.</tr>.<tr
0e80: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
0e90: 74 6f 70 22 3e 32 2e 33 2e 33 20 74 6f 20 32 2e  top">2.3.3 to 2.
0ea0: 34 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76  4.0</td>.  <td v
0eb0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 32  align="top">2002
0ec0: 2d 4d 61 72 2d 31 30 3c 2f 74 64 3e 0a 20 20 3c  -Mar-10</td>.  <
0ed0: 74 64 3e 42 65 67 69 6e 6e 69 6e 67 20 77 69 74  td>Beginning wit
0ee0: 68 20 76 65 72 73 69 6f 6e 20 32 2e 34 2e 30 2c  h version 2.4.0,
0ef0: 20 53 51 4c 69 74 65 20 61 64 64 65 64 20 73 75   SQLite added su
0f00: 70 70 6f 72 74 20 66 6f 72 20 76 69 65 77 73 2e  pport for views.
0f10: 20 0a 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20   .  Information 
0f20: 61 62 6f 75 74 20 76 69 65 77 73 20 69 73 20 73  about views is s
0f30: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 53 51 4c  tored in the SQL
0f40: 49 54 45 5f 4d 41 53 54 45 52 20 74 61 62 6c 65  ITE_MASTER table
0f50: 2e 20 20 49 66 20 61 6e 20 6f 6c 64 65 72 0a 20  .  If an older. 
0f60: 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69   version of SQLi
0f70: 74 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20 72  te attempts to r
0f80: 65 61 64 20 61 20 64 61 74 61 62 61 73 65 20 74  ead a database t
0f90: 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 56 49 45  hat contains VIE
0fa0: 57 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20  W information.  
0fb0: 69 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d 41  in the SQLITE_MA
0fc0: 53 54 45 52 20 74 61 62 6c 65 2c 20 74 68 65 20  STER table, the 
0fd0: 70 61 72 73 65 72 20 77 69 6c 6c 20 6e 6f 74 20  parser will not 
0fe0: 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20 6e  understand the n
0ff0: 65 77 20 73 79 6e 74 61 78 0a 20 20 61 6e 64 20  ew syntax.  and 
1000: 79 6f 75 20 77 69 6c 6c 20 67 65 74 20 61 6e 20  you will get an 
1010: 65 72 72 6f 72 2e 20 20 41 6c 73 6f 2c 20 74 68  error.  Also, th
1020: 65 0a 20 20 77 61 79 20 53 51 4c 69 74 65 20 6b  e.  way SQLite k
1030: 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20 75 6e  eeps track of un
1040: 75 73 65 64 20 64 69 73 6b 20 62 6c 6f 63 6b 73  used disk blocks
1050: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
1060: 20 66 69 6c 65 0a 20 20 63 68 61 6e 67 65 64 20   file.  changed 
1070: 73 6c 69 67 68 74 6c 79 2e 0a 20 20 49 66 20 61  slightly..  If a
1080: 6e 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 20  n older version 
1090: 6f 66 20 53 51 4c 69 74 65 20 61 74 74 65 6d 70  of SQLite attemp
10a0: 74 73 20 74 6f 20 77 72 69 74 65 20 61 20 64 61  ts to write a da
10b0: 74 61 62 61 73 65 20 74 68 61 74 0a 20 20 77 61  tabase that.  wa
10c0: 73 20 70 72 65 76 69 6f 75 73 6c 79 20 77 72 69  s previously wri
10d0: 74 74 65 6e 20 62 79 20 76 65 72 73 69 6f 6e 20  tten by version 
10e0: 32 2e 34 2e 30 20 6f 72 20 6c 61 74 65 72 2c 20  2.4.0 or later, 
10f0: 74 68 65 6e 20 69 74 20 6d 61 79 20 6c 65 61 6b  then it may leak
1100: 20 64 69 73 6b 0a 20 20 62 6c 6f 63 6b 73 2e 3c   disk.  blocks.<
1110: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
1120: 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
1130: 3e 0a 0a 3c 70 3e 0a 54 6f 20 70 65 72 66 6f 72  >..<p>.To perfor
1140: 6d 20 61 20 64 61 74 61 62 61 73 65 20 72 65 6c  m a database rel
1150: 6f 61 64 2c 20 68 61 76 65 20 72 65 61 64 79 20  oad, have ready 
1160: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 0a  versions of the.
1170: 3c 62 3e 73 71 6c 69 74 65 3c 2f 62 3e 20 63 6f  <b>sqlite</b> co
1180: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 75 74 69 6c 69  mmand-line utili
1190: 74 79 20 66 6f 72 20 62 6f 74 68 20 74 68 65 20  ty for both the 
11a0: 6f 6c 64 20 61 6e 64 20 6e 65 77 0a 76 65 72 73  old and new.vers
11b0: 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 2e 20 20  ion of SQLite.  
11c0: 43 61 6c 6c 20 74 68 65 73 65 20 74 77 6f 20 65  Call these two e
11d0: 78 65 63 75 74 61 62 6c 65 73 20 22 3c 62 3e 73  xecutables "<b>s
11e0: 71 6c 69 74 65 2d 6f 6c 64 3c 2f 62 3e 22 0a 61  qlite-old</b>".a
11f0: 6e 64 20 22 3c 62 3e 73 71 6c 69 74 65 2d 6e 65  nd "<b>sqlite-ne
1200: 77 3c 2f 62 3e 22 2e 20 20 53 75 70 70 6f 73 65  w</b>".  Suppose
1210: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79 6f 75   the name of you
1220: 72 20 6f 6c 64 20 64 61 74 61 62 61 73 65 0a 69  r old database.i
1230: 73 20 22 3c 62 3e 6f 6c 64 2e 64 62 3c 2f 62 3e  s "<b>old.db</b>
1240: 22 20 61 6e 64 20 79 6f 75 20 77 61 6e 74 20 74  " and you want t
1250: 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 64  o create a new d
1260: 61 74 61 62 61 73 65 20 77 69 74 68 0a 74 68 65  atabase with.the
1270: 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f   same informatio
1280: 6e 20 6e 61 6d 65 64 20 22 3c 62 3e 6e 65 77 2e  n named "<b>new.
1290: 64 62 3c 2f 62 3e 22 2e 20 20 54 68 65 20 63 6f  db</b>".  The co
12a0: 6d 6d 61 6e 64 20 74 6f 20 64 6f 0a 74 68 69 73  mmand to do.this
12b0: 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a   is as follows:.
12c0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
12d0: 65 3e 0a 20 20 65 63 68 6f 20 2e 64 75 6d 70 20  e>.  echo .dump 
12e0: 7c 20 73 71 6c 69 74 65 2d 6f 6c 64 20 6f 6c 64  | sqlite-old old
12f0: 2e 64 62 20 7c 20 73 71 6c 69 74 65 2d 6e 65 77  .db | sqlite-new
1300: 20 6e 65 77 2e 64 62 0a 3c 2f 62 6c 6f 63 6b 71   new.db.</blockq
1310: 75 6f 74 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  uote>.}..puts {.
1320: 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e 0a 3c 70  <p><hr /></p>.<p
1330: 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78 2e  ><a href="index.
1340: 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72 63 3d 22  html"><img src="
1350: 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20 62 6f 72  /goback.jpg" bor
1360: 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b 20 74 6f  der=0 />.Back to
1370: 20 74 68 65 20 53 51 4c 69 74 65 20 48 6f 6d 65   the SQLite Home
1380: 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70 3e 0a 0a   Page</a>.</p>..
1390: 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 7d 0a  </body></html>}.