Documentation Source Text

Hex Artifact Content
Login

Artifact 95cd47fdf9fbd79149d092e3f231dbb1df32305e:


0000: 3c 74 69 74 6c 65 3e 46 69 6c 65 20 46 6f 72 6d  <title>File Form
0010: 61 74 20 43 68 61 6e 67 65 73 20 69 6e 20 53 51  at Changes in SQ
0020: 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 0a 3c 68  Lite</title>..<h
0030: 32 3e 46 69 6c 65 20 46 6f 72 6d 61 74 20 43 68  2>File Format Ch
0040: 61 6e 67 65 73 20 69 6e 20 53 51 4c 69 74 65 3c  anges in SQLite<
0050: 2f 68 32 3e 0a 0a 3c 70 3e 0a 45 76 65 72 79 20  /h2>..<p>.Every 
0060: 65 66 66 6f 72 74 20 69 73 20 6d 61 64 65 20 74  effort is made t
0070: 6f 20 6b 65 65 70 20 53 51 4c 69 74 65 20 66 75  o keep SQLite fu
0080: 6c 6c 79 20 62 61 63 6b 77 61 72 64 73 20 63 6f  lly backwards co
0090: 6d 70 61 74 69 62 6c 65 20 66 72 6f 6d 0a 6f 6e  mpatible from.on
00a0: 65 20 72 65 6c 65 61 73 65 20 74 6f 20 74 68 65  e release to the
00b0: 20 6e 65 78 74 2e 20 20 52 61 72 65 6c 79 2c 20   next.  Rarely, 
00c0: 68 6f 77 65 76 65 72 2c 20 73 6f 6d 65 0a 65 6e  however, some.en
00d0: 68 61 6e 63 65 6d 65 6e 74 73 20 6f 72 20 62 75  hancements or bu
00e0: 67 20 66 69 78 65 73 20 6d 61 79 20 72 65 71 75  g fixes may requ
00f0: 69 72 65 20 61 20 63 68 61 6e 67 65 20 74 6f 0a  ire a change to.
0100: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 66  the underlying f
0110: 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 57 68 65  ile format.  Whe
0120: 6e 20 74 68 69 73 20 68 61 70 70 65 6e 73 20 61  n this happens a
0130: 6e 64 20 79 6f 75 0a 6d 75 73 74 20 63 6f 6e 76  nd you.must conv
0140: 65 72 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 73  ert the contents
0150: 20 6f 66 20 79 6f 75 72 0a 64 61 74 61 62 61 73   of your.databas
0160: 65 73 20 69 6e 74 6f 20 61 20 70 6f 72 74 61 62  es into a portab
0170: 6c 65 20 41 53 43 49 49 20 72 65 70 72 65 73 65  le ASCII represe
0180: 6e 74 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68  ntation using th
0190: 65 20 6f 6c 64 20 76 65 72 73 69 6f 6e 0a 6f 66  e old version.of
01a0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 74 68 65   the library the
01b0: 6e 20 72 65 6c 6f 61 64 20 74 68 65 20 64 61 74  n reload the dat
01c0: 61 20 75 73 69 6e 67 20 74 68 65 20 6e 65 77 20  a using the new 
01d0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 0a 6c  version of the.l
01e0: 69 62 72 61 72 79 2e 0a 3c 2f 70 3e 0a 0a 3c 70  ibrary..</p>..<p
01f0: 3e 0a 59 6f 75 20 63 61 6e 20 74 65 6c 6c 20 69  >.You can tell i
0200: 66 20 79 6f 75 20 73 68 6f 75 6c 64 20 72 65 6c  f you should rel
0210: 6f 61 64 20 79 6f 75 72 20 64 61 74 61 62 61 73  oad your databas
0220: 65 73 20 62 79 20 63 6f 6d 70 61 72 69 6e 67 20  es by comparing 
0230: 74 68 65 0a 76 65 72 73 69 6f 6e 20 6e 75 6d 62  the.version numb
0240: 65 72 73 20 6f 66 20 74 68 65 20 6f 6c 64 20 61  ers of the old a
0250: 6e 64 20 6e 65 77 20 6c 69 62 72 61 72 69 65 73  nd new libraries
0260: 2e 20 20 49 66 20 74 68 65 20 66 69 72 73 74 20  .  If the first 
0270: 64 69 67 69 74 0a 6f 66 20 74 68 65 20 76 65 72  digit.of the ver
0280: 73 69 6f 6e 20 6e 75 6d 62 65 72 20 69 73 20 64  sion number is d
0290: 69 66 66 65 72 65 6e 74 2c 20 74 68 65 6e 20 61  ifferent, then a
02a0: 20 72 65 6c 6f 61 64 20 6f 66 20 74 68 65 20 64   reload of the d
02b0: 61 74 61 62 61 73 65 20 77 69 6c 6c 0a 62 65 20  atabase will.be 
02c0: 72 65 71 75 69 72 65 64 2e 20 20 49 66 20 74 68  required.  If th
02d0: 65 20 73 65 63 6f 6e 64 20 64 69 67 69 74 20 63  e second digit c
02e0: 68 61 6e 67 65 73 2c 20 6e 65 77 65 72 20 76 65  hanges, newer ve
02f0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
0300: 0a 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f  .will be able to
0310: 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20   read and write 
0320: 6f 6c 64 65 72 20 64 61 74 61 62 61 73 65 20 66  older database f
0330: 69 6c 65 73 2c 20 62 75 74 20 6f 6c 64 65 72 20  iles, but older 
0340: 76 65 72 73 69 6f 6e 73 0a 6f 66 20 74 68 65 20  versions.of the 
0350: 6c 69 62 72 61 72 79 20 6d 61 79 20 68 61 76 65  library may have
0360: 20 64 69 66 66 69 63 75 6c 74 79 20 72 65 61 64   difficulty read
0370: 69 6e 67 20 6f 72 20 77 72 69 74 69 6e 67 20 6e  ing or writing n
0380: 65 77 65 72 20 64 61 74 61 62 61 73 65 0a 66 69  ewer database.fi
0390: 6c 65 73 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65  les..For example
03a0: 2c 20 75 70 67 72 61 64 69 6e 67 20 66 72 6f 6d  , upgrading from
03b0: 0a 76 65 72 73 69 6f 6e 20 32 2e 38 2e 31 34 20  .version 2.8.14 
03c0: 74 6f 20 33 2e 30 2e 30 20 72 65 71 75 69 72 65  to 3.0.0 require
03d0: 73 20 61 20 72 65 6c 6f 61 64 2e 20 20 47 6f 69  s a reload.  Goi
03e0: 6e 67 20 66 72 6f 6d 0a 76 65 72 73 69 6f 6e 20  ng from.version 
03f0: 33 2e 30 2e 38 20 74 6f 20 33 2e 31 2e 30 20 69  3.0.8 to 3.1.0 i
0400: 73 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  s backwards comp
0410: 61 74 69 62 6c 65 20 62 75 74 20 6e 6f 74 20 6e  atible but not n
0420: 65 63 65 73 73 61 72 69 6c 79 0a 66 6f 72 77 61  ecessarily.forwa
0430: 72 64 73 20 63 6f 6d 70 61 74 69 62 6c 65 2e 0a  rds compatible..
0440: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f  </p>..<p>.The fo
0450: 6c 6c 6f 77 69 6e 67 20 74 61 62 6c 65 20 73 75  llowing table su
0460: 6d 6d 61 72 69 7a 65 73 20 74 68 65 20 53 51 4c  mmarizes the SQL
0470: 69 74 65 20 66 69 6c 65 20 66 6f 72 6d 61 74 20  ite file format 
0480: 63 68 61 6e 67 65 73 20 74 68 61 74 20 68 61 76  changes that hav
0490: 65 0a 6f 63 63 75 72 72 65 64 20 73 69 6e 63 65  e.occurred since
04a0: 20 76 65 72 73 69 6f 6e 20 31 2e 30 2e 30 3a 0a   version 1.0.0:.
04b0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
04c0: 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  e>.<table border
04d0: 3d 32 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 35  =2 cellpadding=5
04e0: 3e 0a 3c 74 72 3e 0a 20 20 3c 74 68 3e 56 65 72  >.<tr>.  <th>Ver
04f0: 73 69 6f 6e 20 43 68 61 6e 67 65 3c 2f 74 68 3e  sion Change</th>
0500: 0a 20 20 3c 74 68 3e 41 70 70 72 6f 78 2e 20 44  .  <th>Approx. D
0510: 61 74 65 3c 2f 74 68 3e 0a 20 20 3c 74 68 3e 44  ate</th>.  <th>D
0520: 65 73 63 72 69 70 74 69 6f 6e 20 4f 66 20 46 69  escription Of Fi
0530: 6c 65 20 46 6f 72 6d 61 74 20 43 68 61 6e 67 65  le Format Change
0540: 3c 2f 74 68 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </th>.</tr>.<tr>
0550: 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  .  <td valign="t
0560: 6f 70 22 3e 31 2e 30 2e 33 32 20 74 6f 20 32 2e  op">1.0.32 to 2.
0570: 30 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76  0.0</td>.  <td v
0580: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 31  align="top">2001
0590: 2d 53 65 70 2d 32 30 3c 2f 74 64 3e 0a 20 20 3c  -Sep-20</td>.  <
05a0: 74 64 3e 56 65 72 73 69 6f 6e 20 31 2e 30 2e 58  td>Version 1.0.X
05b0: 20 6f 66 20 53 51 4c 69 74 65 20 75 73 65 64 20   of SQLite used 
05c0: 74 68 65 20 47 44 42 4d 20 6c 69 62 72 61 72 79  the GDBM library
05d0: 20 61 73 20 69 74 73 20 62 61 63 6b 65 6e 64 0a   as its backend.
05e0: 20 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 74    interface to t
05f0: 68 65 20 64 69 73 6b 2e 20 20 42 65 67 69 6e 6e  he disk.  Beginn
0600: 69 6e 67 20 69 6e 20 76 65 72 73 69 6f 6e 20 32  ing in version 2
0610: 2e 30 2e 30 2c 20 47 44 42 4d 20 77 61 73 20 72  .0.0, GDBM was r
0620: 65 70 6c 61 63 65 64 0a 20 20 62 79 20 61 20 63  eplaced.  by a c
0630: 75 73 74 6f 6d 20 42 2d 54 72 65 65 20 6c 69 62  ustom B-Tree lib
0640: 72 61 72 79 20 77 72 69 74 74 65 6e 20 65 73 70  rary written esp
0650: 65 63 69 61 6c 6c 79 20 66 6f 72 20 53 51 4c 69  ecially for SQLi
0660: 74 65 2e 20 20 54 68 65 20 6e 65 77 0a 20 20 42  te.  The new.  B
0670: 2d 54 72 65 65 20 62 61 63 6b 65 6e 64 20 69 73  -Tree backend is
0680: 20 74 77 69 63 65 20 61 73 20 66 61 73 74 20 61   twice as fast a
0690: 73 20 47 44 42 4d 2c 20 73 75 70 70 6f 72 74 73  s GDBM, supports
06a0: 20 61 74 6f 6d 69 63 20 63 6f 6d 6d 69 74 73 20   atomic commits 
06b0: 61 6e 64 0a 20 20 72 6f 6c 6c 62 61 63 6b 2c 20  and.  rollback, 
06c0: 61 6e 64 20 73 74 6f 72 65 73 20 61 6e 20 65 6e  and stores an en
06d0: 74 69 72 65 20 64 61 74 61 62 61 73 65 20 69 6e  tire database in
06e0: 20 61 20 73 69 6e 67 6c 65 20 64 69 73 6b 20 66   a single disk f
06f0: 69 6c 65 20 69 6e 73 74 65 61 64 0a 20 20 75 73  ile instead.  us
0700: 69 6e 67 20 61 20 73 65 70 61 72 61 74 65 20 66  ing a separate f
0710: 69 6c 65 20 66 6f 72 20 65 61 63 68 20 74 61 62  ile for each tab
0720: 6c 65 20 61 73 20 47 44 42 4d 20 64 6f 65 73 2e  le as GDBM does.
0730: 20 20 54 68 65 20 74 77 6f 0a 20 20 66 69 6c 65    The two.  file
0740: 20 66 6f 72 6d 61 74 73 20 61 72 65 20 6e 6f 74   formats are not
0750: 20 65 76 65 6e 20 72 65 6d 6f 74 65 6c 79 20 73   even remotely s
0760: 69 6d 69 6c 61 72 2e 3c 2f 74 64 3e 0a 3c 2f 74  imilar.</td>.</t
0770: 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76 61  r>.<tr>.  <td va
0780: 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 2e 30 2e 38  lign="top">2.0.8
0790: 20 74 6f 20 32 2e 31 2e 30 3c 2f 74 64 3e 0a 20   to 2.1.0</td>. 
07a0: 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70   <td valign="top
07b0: 22 3e 32 30 30 31 2d 4e 6f 76 2d 31 32 3c 2f 74  ">2001-Nov-12</t
07c0: 64 3e 0a 20 20 3c 74 64 3e 54 68 65 20 73 61 6d  d>.  <td>The sam
07d0: 65 20 62 61 73 69 63 20 42 2d 54 72 65 65 20 66  e basic B-Tree f
07e0: 6f 72 6d 61 74 20 69 73 20 75 73 65 64 20 62 75  ormat is used bu
07f0: 74 20 74 68 65 20 64 65 74 61 69 6c 73 20 6f 66  t the details of
0800: 20 74 68 65 20 0a 20 20 69 6e 64 65 78 20 6b 65   the .  index ke
0810: 79 73 20 77 65 72 65 20 63 68 61 6e 67 65 64 20  ys were changed 
0820: 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f 76  in order to prov
0830: 69 64 65 20 62 65 74 74 65 72 20 71 75 65 72 79  ide better query
0840: 20 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e   .  optimization
0850: 20 6f 70 70 6f 72 74 75 6e 69 74 69 65 73 2e 20   opportunities. 
0860: 20 53 6f 6d 65 20 6f 66 20 74 68 65 20 68 65 61   Some of the hea
0870: 64 65 72 73 20 77 65 72 65 20 61 6c 73 6f 20 63  ders were also c
0880: 68 61 6e 67 65 64 20 69 6e 20 6f 72 64 65 72 0a  hanged in order.
0890: 20 20 74 6f 20 69 6e 63 72 65 61 73 65 20 74 68    to increase th
08a0: 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f  e maximum size o
08b0: 66 20 61 20 72 6f 77 20 66 72 6f 6d 20 36 34 4b  f a row from 64K
08c0: 42 20 74 6f 20 32 34 4d 42 2e 3c 70 3e 0a 0a 20  B to 24MB.<p>.. 
08d0: 20 54 68 69 73 20 63 68 61 6e 67 65 20 69 73 20   This change is 
08e0: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 74 6f 20  an exception to 
08f0: 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  the version numb
0900: 65 72 20 72 75 6c 65 20 64 65 73 63 72 69 62 65  er rule describe
0910: 64 20 61 62 6f 76 65 0a 20 20 69 6e 20 74 68 61  d above.  in tha
0920: 74 20 69 74 20 69 73 20 6e 65 69 74 68 65 72 20  t it is neither 
0930: 66 6f 72 77 61 72 64 73 20 6f 72 20 62 61 63 6b  forwards or back
0940: 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 6c 65  wards compatible
0950: 2e 20 20 41 20 63 6f 6d 70 6c 65 74 65 0a 20 20  .  A complete.  
0960: 72 65 6c 6f 61 64 20 6f 66 20 74 68 65 20 64 61  reload of the da
0970: 74 61 62 61 73 65 20 69 73 20 72 65 71 75 69 72  tabase is requir
0980: 65 64 2e 20 20 54 68 69 73 20 69 73 20 74 68 65  ed.  This is the
0990: 20 6f 6e 6c 79 20 65 78 63 65 70 74 69 6f 6e 2e   only exception.
09a0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
09b0: 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  .  <td valign="t
09c0: 6f 70 22 3e 32 2e 31 2e 37 20 74 6f 20 32 2e 32  op">2.1.7 to 2.2
09d0: 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61  .0</td>.  <td va
09e0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 31 2d  lign="top">2001-
09f0: 44 65 63 2d 32 31 3c 2f 74 64 3e 0a 20 20 3c 74  Dec-21</td>.  <t
0a00: 64 3e 42 65 67 69 6e 6e 69 6e 67 20 77 69 74 68  d>Beginning with
0a10: 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e 30 2c 20   version 2.2.0, 
0a20: 53 51 4c 69 74 65 20 6e 6f 20 6c 6f 6e 67 65 72  SQLite no longer
0a30: 20 62 75 69 6c 64 73 20 61 6e 20 69 6e 64 65 78   builds an index
0a40: 20 66 6f 72 0a 20 20 61 6e 20 49 4e 54 45 47 45   for.  an INTEGE
0a50: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
0a60: 6c 75 6d 6e 2e 20 20 49 6e 73 74 65 61 64 2c 20  lumn.  Instead, 
0a70: 69 74 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c  it uses that col
0a80: 75 6d 6e 20 61 73 20 74 68 65 20 61 63 74 75 61  umn as the actua
0a90: 6c 0a 20 20 42 2d 54 72 65 65 20 6b 65 79 20 66  l.  B-Tree key f
0aa0: 6f 72 20 74 68 65 20 6d 61 69 6e 20 74 61 62 6c  or the main tabl
0ab0: 65 2e 3c 70 3e 56 65 72 73 69 6f 6e 20 32 2e 32  e.<p>Version 2.2
0ac0: 2e 30 20 61 6e 64 20 6c 61 74 65 72 20 6f 66 20  .0 and later of 
0ad0: 74 68 65 20 6c 69 62 72 61 72 79 0a 20 20 77 69  the library.  wi
0ae0: 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ll automatically
0af0: 20 64 65 74 65 63 74 20 77 68 65 6e 20 69 74 20   detect when it 
0b00: 69 73 20 72 65 61 64 69 6e 67 20 61 20 32 2e 31  is reading a 2.1
0b10: 2e 78 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  .x database and 
0b20: 77 69 6c 6c 0a 20 20 64 69 73 61 62 6c 65 20 74  will.  disable t
0b30: 68 65 20 6e 65 77 20 49 4e 54 45 47 45 52 20 50  he new INTEGER P
0b40: 52 49 4d 41 52 59 20 4b 45 59 20 66 65 61 74 75  RIMARY KEY featu
0b50: 72 65 2e 20 20 20 49 6e 20 6f 74 68 65 72 20 77  re.   In other w
0b60: 6f 72 64 73 2c 20 76 65 72 73 69 6f 6e 0a 20 20  ords, version.  
0b70: 32 2e 32 2e 78 20 69 73 20 62 61 63 6b 77 61 72  2.2.x is backwar
0b80: 64 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 74 6f  ds compatible to
0b90: 20 76 65 72 73 69 6f 6e 20 32 2e 31 2e 78 2e 20   version 2.1.x. 
0ba0: 20 42 75 74 20 76 65 72 73 69 6f 6e 20 32 2e 31   But version 2.1
0bb0: 2e 78 20 69 73 20 6e 6f 74 0a 20 20 66 6f 72 77  .x is not.  forw
0bc0: 61 72 64 20 63 6f 6d 70 61 74 69 62 6c 65 20 77  ard compatible w
0bd0: 69 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e  ith version 2.2.
0be0: 78 2e 20 49 66 20 79 6f 75 20 74 72 79 20 74 6f  x. If you try to
0bf0: 20 6f 70 65 6e 0a 20 20 61 20 32 2e 32 2e 78 20   open.  a 2.2.x 
0c00: 64 61 74 61 62 61 73 65 20 77 69 74 68 20 61 6e  database with an
0c10: 20 6f 6c 64 65 72 20 32 2e 31 2e 78 20 6c 69 62   older 2.1.x lib
0c20: 72 61 72 79 20 61 6e 64 20 74 68 61 74 20 64 61  rary and that da
0c30: 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 73 0a  tabase contains.
0c40: 20 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49    an INTEGER PRI
0c50: 4d 41 52 59 20 4b 45 59 2c 20 79 6f 75 20 77 69  MARY KEY, you wi
0c60: 6c 6c 20 6c 69 6b 65 6c 79 20 67 65 74 20 61 20  ll likely get a 
0c70: 63 6f 72 65 64 75 6d 70 2e 20 20 49 66 20 74 68  coredump.  If th
0c80: 65 20 64 61 74 61 62 61 73 65 0a 20 20 73 63 68  e database.  sch
0c90: 65 6d 61 20 64 6f 65 73 20 6e 6f 74 20 63 6f 6e  ema does not con
0ca0: 74 61 69 6e 20 61 6e 79 20 49 4e 54 45 47 45 52  tain any INTEGER
0cb0: 20 50 52 49 4d 41 52 59 20 4b 45 59 73 2c 20 74   PRIMARY KEYs, t
0cc0: 68 65 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20  hen the version 
0cd0: 32 2e 31 2e 78 0a 20 20 61 6e 64 20 76 65 72 73  2.1.x.  and vers
0ce0: 69 6f 6e 20 32 2e 32 2e 78 20 64 61 74 61 62 61  ion 2.2.x databa
0cf0: 73 65 20 66 69 6c 65 73 20 77 69 6c 6c 20 62 65  se files will be
0d00: 20 69 64 65 6e 74 69 63 61 6c 20 61 6e 64 20 63   identical and c
0d10: 6f 6d 70 6c 65 74 65 6c 79 0a 20 20 69 6e 74 65  ompletely.  inte
0d20: 72 63 68 61 6e 67 65 61 62 6c 65 2e 3c 2f 70 3e  rchangeable.</p>
0d30: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74  .</tr>.<tr>.  <t
0d40: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32  d valign="top">2
0d50: 2e 32 2e 35 20 74 6f 20 32 2e 33 2e 30 3c 2f 74  .2.5 to 2.3.0</t
0d60: 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d  d>.  <td valign=
0d70: 22 74 6f 70 22 3e 32 30 30 32 2d 4a 61 6e 2d 33  "top">2002-Jan-3
0d80: 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 42 65 67  0</td>.  <td>Beg
0d90: 69 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72 73  inning with vers
0da0: 69 6f 6e 20 32 2e 33 2e 30 2c 20 53 51 4c 69 74  ion 2.3.0, SQLit
0db0: 65 20 73 75 70 70 6f 72 74 73 20 73 6f 6d 65 20  e supports some 
0dc0: 61 64 64 69 74 69 6f 6e 61 6c 20 73 79 6e 74 61  additional synta
0dd0: 78 0a 20 20 28 74 68 65 20 22 4f 4e 20 43 4f 4e  x.  (the "ON CON
0de0: 46 4c 49 43 54 22 20 63 6c 61 75 73 65 29 20 69  FLICT" clause) i
0df0: 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41 42  n the CREATE TAB
0e00: 4c 45 20 61 6e 64 20 43 52 45 41 54 45 20 49 4e  LE and CREATE IN
0e10: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 20  DEX statements. 
0e20: 20 74 68 61 74 20 61 72 65 20 73 74 6f 72 65 64   that are stored
0e30: 20 69 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d   in the SQLITE_M
0e40: 41 53 54 45 52 20 74 61 62 6c 65 2e 20 20 49 66  ASTER table.  If
0e50: 20 79 6f 75 20 63 72 65 61 74 65 20 61 20 64 61   you create a da
0e60: 74 61 62 61 73 65 20 74 68 61 74 0a 20 20 63 6f  tabase that.  co
0e70: 6e 74 61 69 6e 73 20 74 68 69 73 20 6e 65 77 20  ntains this new 
0e80: 73 79 6e 74 61 78 2c 20 74 68 65 6e 20 74 72 79  syntax, then try
0e90: 20 74 6f 20 72 65 61 64 20 74 68 61 74 20 64 61   to read that da
0ea0: 74 61 62 61 73 65 20 75 73 69 6e 67 20 76 65 72  tabase using ver
0eb0: 73 69 6f 6e 20 32 2e 32 2e 35 0a 20 20 6f 72 20  sion 2.2.5.  or 
0ec0: 65 61 72 6c 69 65 72 2c 20 74 68 65 20 70 61 72  earlier, the par
0ed0: 73 65 72 20 77 69 6c 6c 20 6e 6f 74 20 75 6e 64  ser will not und
0ee0: 65 72 73 74 61 6e 64 20 74 68 65 20 6e 65 77 20  erstand the new 
0ef0: 73 79 6e 74 61 78 20 61 6e 64 20 79 6f 75 20 77  syntax and you w
0f00: 69 6c 6c 20 67 65 74 0a 20 20 61 6e 20 65 72 72  ill get.  an err
0f10: 6f 72 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20  or.  Otherwise, 
0f20: 64 61 74 61 62 61 73 65 73 20 66 6f 72 20 32 2e  databases for 2.
0f30: 32 2e 78 20 61 6e 64 20 32 2e 33 2e 78 20 61 72  2.x and 2.3.x ar
0f40: 65 20 69 6e 74 65 72 63 68 61 6e 67 65 61 62 6c  e interchangeabl
0f50: 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  e.</td>.</tr>.<t
0f60: 72 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d  r>.  <td valign=
0f70: 22 74 6f 70 22 3e 32 2e 33 2e 33 20 74 6f 20 32  "top">2.3.3 to 2
0f80: 2e 34 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20  .4.0</td>.  <td 
0f90: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30  valign="top">200
0fa0: 32 2d 4d 61 72 2d 31 30 3c 2f 74 64 3e 0a 20 20  2-Mar-10</td>.  
0fb0: 3c 74 64 3e 42 65 67 69 6e 6e 69 6e 67 20 77 69  <td>Beginning wi
0fc0: 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 34 2e 30  th version 2.4.0
0fd0: 2c 20 53 51 4c 69 74 65 20 61 64 64 65 64 20 73  , SQLite added s
0fe0: 75 70 70 6f 72 74 20 66 6f 72 20 76 69 65 77 73  upport for views
0ff0: 2e 20 0a 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e  . .  Information
1000: 20 61 62 6f 75 74 20 76 69 65 77 73 20 69 73 20   about views is 
1010: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 53 51  stored in the SQ
1020: 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61 62 6c  LITE_MASTER tabl
1030: 65 2e 20 20 49 66 20 61 6e 20 6f 6c 64 65 72 0a  e.  If an older.
1040: 20 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c    version of SQL
1050: 69 74 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20  ite attempts to 
1060: 72 65 61 64 20 61 20 64 61 74 61 62 61 73 65 20  read a database 
1070: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 56 49  that contains VI
1080: 45 57 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20  EW information. 
1090: 20 69 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d   in the SQLITE_M
10a0: 41 53 54 45 52 20 74 61 62 6c 65 2c 20 74 68 65  ASTER table, the
10b0: 20 70 61 72 73 65 72 20 77 69 6c 6c 20 6e 6f 74   parser will not
10c0: 20 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20   understand the 
10d0: 6e 65 77 20 73 79 6e 74 61 78 0a 20 20 61 6e 64  new syntax.  and
10e0: 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20   initialization 
10f0: 77 69 6c 6c 20 66 61 69 6c 2e 20 20 41 6c 73 6f  will fail.  Also
1100: 2c 20 74 68 65 0a 20 20 77 61 79 20 53 51 4c 69  , the.  way SQLi
1110: 74 65 20 6b 65 65 70 73 20 74 72 61 63 6b 20 6f  te keeps track o
1120: 66 20 75 6e 75 73 65 64 20 64 69 73 6b 20 62 6c  f unused disk bl
1130: 6f 63 6b 73 20 69 6e 20 74 68 65 20 64 61 74 61  ocks in the data
1140: 62 61 73 65 20 66 69 6c 65 0a 20 20 63 68 61 6e  base file.  chan
1150: 67 65 64 20 73 6c 69 67 68 74 6c 79 2e 0a 20 20  ged slightly..  
1160: 49 66 20 61 6e 20 6f 6c 64 65 72 20 76 65 72 73  If an older vers
1170: 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 61 74  ion of SQLite at
1180: 74 65 6d 70 74 73 20 74 6f 20 77 72 69 74 65 20  tempts to write 
1190: 61 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a  a database that.
11a0: 20 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79    was previously
11b0: 20 77 72 69 74 74 65 6e 20 62 79 20 76 65 72 73   written by vers
11c0: 69 6f 6e 20 32 2e 34 2e 30 20 6f 72 20 6c 61 74  ion 2.4.0 or lat
11d0: 65 72 2c 20 74 68 65 6e 20 69 74 20 6d 61 79 20  er, then it may 
11e0: 6c 65 61 6b 20 64 69 73 6b 0a 20 20 62 6c 6f 63  leak disk.  bloc
11f0: 6b 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  ks.</td>.</tr>.<
1200: 74 72 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e  tr>.  <td valign
1210: 3d 22 74 6f 70 22 3e 32 2e 34 2e 31 32 20 74 6f  ="top">2.4.12 to
1220: 20 32 2e 35 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74   2.5.0</td>.  <t
1230: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32  d valign="top">2
1240: 30 30 32 2d 4a 75 6e 2d 31 37 3c 2f 74 64 3e 0a  002-Jun-17</td>.
1250: 20 20 3c 74 64 3e 42 65 67 69 6e 6e 69 6e 67 20    <td>Beginning 
1260: 77 69 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 35  with version 2.5
1270: 2e 30 2c 20 53 51 4c 69 74 65 20 61 64 64 65 64  .0, SQLite added
1280: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 72 69   support for tri
1290: 67 67 65 72 73 2e 20 0a 20 20 49 6e 66 6f 72 6d  ggers. .  Inform
12a0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 72 69 67  ation about trig
12b0: 67 65 72 73 20 69 73 20 73 74 6f 72 65 64 20 69  gers is stored i
12c0: 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 4d 41 53  n the SQLITE_MAS
12d0: 54 45 52 20 74 61 62 6c 65 2e 20 20 49 66 20 61  TER table.  If a
12e0: 6e 20 6f 6c 64 65 72 0a 20 20 76 65 72 73 69 6f  n older.  versio
12f0: 6e 20 6f 66 20 53 51 4c 69 74 65 20 61 74 74 65  n of SQLite atte
1300: 6d 70 74 73 20 74 6f 20 72 65 61 64 20 61 20 64  mpts to read a d
1310: 61 74 61 62 61 73 65 20 74 68 61 74 20 63 6f 6e  atabase that con
1320: 74 61 69 6e 73 20 61 20 43 52 45 41 54 45 20 54  tains a CREATE T
1330: 52 49 47 47 45 52 0a 20 20 69 6e 20 74 68 65 20  RIGGER.  in the 
1340: 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61  SQLITE_MASTER ta
1350: 62 6c 65 2c 20 74 68 65 20 70 61 72 73 65 72 20  ble, the parser 
1360: 77 69 6c 6c 20 6e 6f 74 20 75 6e 64 65 72 73 74  will not underst
1370: 61 6e 64 20 74 68 65 20 6e 65 77 20 73 79 6e 74  and the new synt
1380: 61 78 0a 20 20 61 6e 64 20 69 6e 69 74 69 61 6c  ax.  and initial
1390: 69 7a 61 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69  ization will fai
13a0: 6c 2e 0a 20 20 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  l..  </td>.</tr>
13b0: 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76 61 6c 69  .<tr>.  <td vali
13c0: 67 6e 3d 22 74 6f 70 22 3e 32 2e 35 2e 36 20 74  gn="top">2.5.6 t
13d0: 6f 20 32 2e 36 2e 30 3c 2f 74 64 3e 0a 20 20 3c  o 2.6.0</td>.  <
13e0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
13f0: 32 30 30 32 2d 4a 75 6c 79 2d 31 37 3c 2f 74 64  2002-July-17</td
1400: 3e 0a 20 20 3c 74 64 3e 41 20 64 65 73 69 67 6e  >.  <td>A design
1410: 20 66 6c 61 77 20 69 6e 20 74 68 65 20 6c 61 79   flaw in the lay
1420: 6f 75 74 20 6f 66 20 69 6e 64 69 63 65 73 20 72  out of indices r
1430: 65 71 75 69 72 65 64 20 61 20 66 69 6c 65 20 66  equired a file f
1440: 6f 72 6d 61 74 20 63 68 61 6e 67 65 0a 20 20 74  ormat change.  t
1450: 6f 20 63 6f 72 72 65 63 74 2e 20 20 54 68 69 73  o correct.  This
1460: 20 63 68 61 6e 67 65 20 61 70 70 65 61 72 65 64   change appeared
1470: 20 69 6e 20 76 65 72 73 69 6f 6e 20 32 2e 36 2e   in version 2.6.
1480: 30 2e 3c 70 3e 0a 0a 20 20 49 66 20 79 6f 75 20  0.<p>..  If you 
1490: 75 73 65 20 76 65 72 73 69 6f 6e 20 32 2e 36 2e  use version 2.6.
14a0: 30 20 6f 72 20 6c 61 74 65 72 20 6f 66 20 74 68  0 or later of th
14b0: 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6f 70 65  e library to ope
14c0: 6e 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  n a database fil
14d0: 65 0a 20 20 74 68 61 74 20 77 61 73 20 6f 72 69  e.  that was ori
14e0: 67 69 6e 61 6c 6c 79 20 63 72 65 61 74 65 64 20  ginally created 
14f0: 62 79 20 76 65 72 73 69 6f 6e 20 32 2e 35 2e 36  by version 2.5.6
1500: 20 6f 72 20 65 61 72 6c 69 65 72 2c 20 61 6e 20   or earlier, an 
1510: 61 74 74 65 6d 70 74 20 74 6f 0a 20 20 72 65 62  attempt to.  reb
1520: 75 69 6c 64 20 74 68 65 20 64 61 74 61 62 61 73  uild the databas
1530: 65 20 69 6e 74 6f 20 74 68 65 20 6e 65 77 20 66  e into the new f
1540: 6f 72 6d 61 74 20 77 69 6c 6c 20 6f 63 63 75 72  ormat will occur
1550: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a   automatically..
1560: 20 20 54 68 69 73 20 63 61 6e 20 74 61 6b 65 20    This can take 
1570: 73 6f 6d 65 20 74 69 6d 65 20 66 6f 72 20 61 20  some time for a 
1580: 6c 61 72 67 65 20 64 61 74 61 62 61 73 65 2e 20  large database. 
1590: 20 28 41 6c 6c 6f 77 20 31 20 6f 72 20 32 20 73   (Allow 1 or 2 s
15a0: 65 63 6f 6e 64 73 0a 20 20 70 65 72 20 6d 65 67  econds.  per meg
15b0: 61 62 79 74 65 20 6f 66 20 64 61 74 61 62 61 73  abyte of databas
15c0: 65 20 75 6e 64 65 72 20 55 6e 69 78 20 2d 20 6c  e under Unix - l
15d0: 6f 6e 67 65 72 20 75 6e 64 65 72 20 57 69 6e 64  onger under Wind
15e0: 6f 77 73 2e 29 20 20 54 68 69 73 20 66 6f 72 6d  ows.)  This form
15f0: 61 74 0a 20 20 63 6f 6e 76 65 72 73 69 6f 6e 20  at.  conversion 
1600: 69 73 20 69 72 72 65 76 65 72 73 69 62 6c 65 2e  is irreversible.
1610: 20 20 49 74 20 69 73 20 3c 73 74 72 6f 6e 67 3e    It is <strong>
1620: 73 74 72 6f 6e 67 6c 79 3c 2f 73 74 72 6f 6e 67  strongly</strong
1630: 3e 20 73 75 67 67 65 73 74 65 64 0a 20 20 74 68  > suggested.  th
1640: 61 74 20 79 6f 75 20 6d 61 6b 65 20 61 20 62 61  at you make a ba
1650: 63 6b 75 70 20 63 6f 70 79 20 6f 66 20 6f 6c 64  ckup copy of old
1660: 65 72 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  er database file
1670: 73 20 70 72 69 6f 72 20 74 6f 20 6f 70 65 6e 69  s prior to openi
1680: 6e 67 20 74 68 65 6d 0a 20 20 77 69 74 68 20 76  ng them.  with v
1690: 65 72 73 69 6f 6e 20 32 2e 36 2e 30 20 6f 72 20  ersion 2.6.0 or 
16a0: 6c 61 74 65 72 20 6f 66 20 74 68 65 20 6c 69 62  later of the lib
16b0: 72 61 72 79 2c 20 69 6e 20 63 61 73 65 20 74 68  rary, in case th
16c0: 65 72 65 20 61 72 65 20 65 72 72 6f 72 73 20 69  ere are errors i
16d0: 6e 0a 20 20 74 68 65 20 66 6f 72 6d 61 74 20 63  n.  the format c
16e0: 6f 6e 76 65 72 73 69 6f 6e 20 6c 6f 67 69 63 2e  onversion logic.
16f0: 3c 70 3e 0a 0a 20 20 56 65 72 73 69 6f 6e 20 32  <p>..  Version 2
1700: 2e 36 2e 30 20 6f 72 20 6c 61 74 65 72 20 6f 66  .6.0 or later of
1710: 20 74 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e   the library can
1720: 6e 6f 74 20 6f 70 65 6e 20 72 65 61 64 2d 6f 6e  not open read-on
1730: 6c 79 20 64 61 74 61 62 61 73 65 0a 20 20 66 69  ly database.  fi
1740: 6c 65 73 20 66 72 6f 6d 20 76 65 72 73 69 6f 6e  les from version
1750: 20 32 2e 35 2e 36 20 6f 72 20 65 61 72 6c 69 65   2.5.6 or earlie
1760: 72 2c 20 73 69 6e 63 65 20 72 65 61 64 2d 6f 6e  r, since read-on
1770: 6c 79 20 66 69 6c 65 73 20 63 61 6e 6e 6f 74 20  ly files cannot 
1780: 62 65 0a 20 20 75 70 67 72 61 64 65 64 20 74 6f  be.  upgraded to
1790: 20 74 68 65 20 6e 65 77 20 66 6f 72 6d 61 74 2e   the new format.
17a0: 3c 2f 70 3e 0a 20 20 3c 2f 74 64 3e 0a 3c 2f 74  </p>.  </td>.</t
17b0: 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76 61  r>.<tr>.  <td va
17c0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 2e 36 2e 33  lign="top">2.6.3
17d0: 20 74 6f 20 32 2e 37 2e 30 3c 2f 74 64 3e 0a 20   to 2.7.0</td>. 
17e0: 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70   <td valign="top
17f0: 22 3e 32 30 30 32 2d 41 75 67 2d 31 33 3c 2f 74  ">2002-Aug-13</t
1800: 64 3e 0a 20 20 3c 74 64 3e 3c 70 3e 42 65 67 69  d>.  <td><p>Begi
1810: 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72 73 69  nning with versi
1820: 6f 6e 20 32 2e 37 2e 30 2c 20 53 51 4c 69 74 65  on 2.7.0, SQLite
1830: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 74 77 6f   understands two
1840: 20 64 69 66 66 65 72 65 6e 74 0a 20 20 64 61 74   different.  dat
1850: 61 74 79 70 65 73 3a 20 74 65 78 74 20 61 6e 64  atypes: text and
1860: 20 6e 75 6d 65 72 69 63 2e 20 20 54 65 78 74 20   numeric.  Text 
1870: 64 61 74 61 20 73 6f 72 74 73 20 69 6e 20 6d 65  data sorts in me
1880: 6d 63 6d 70 28 29 20 6f 72 64 65 72 2e 0a 20 20  mcmp() order..  
1890: 4e 75 6d 65 72 69 63 20 64 61 74 61 20 73 6f 72  Numeric data sor
18a0: 74 73 20 69 6e 20 6e 75 6d 65 72 69 63 61 6c 20  ts in numerical 
18b0: 6f 72 64 65 72 20 69 66 20 69 74 20 6c 6f 6f 6b  order if it look
18c0: 73 20 6c 69 6b 65 20 61 20 6e 75 6d 62 65 72 2c  s like a number,
18d0: 0a 20 20 6f 72 20 69 6e 20 6d 65 6d 63 6d 70 28  .  or in memcmp(
18e0: 29 20 6f 72 64 65 72 20 69 66 20 69 74 20 64 6f  ) order if it do
18f0: 65 73 20 6e 6f 74 2e 3c 2f 70 3e 0a 0a 20 20 3c  es not.</p>..  <
1900: 70 3e 57 68 65 6e 20 53 51 4c 69 74 65 20 76 65  p>When SQLite ve
1910: 72 73 69 6f 6e 20 32 2e 37 2e 30 20 6f 72 20 6c  rsion 2.7.0 or l
1920: 61 74 65 72 20 6f 70 65 6e 73 20 61 20 32 2e 36  ater opens a 2.6
1930: 2e 33 20 6f 72 20 65 61 72 6c 69 65 72 20 64 61  .3 or earlier da
1940: 74 61 62 61 73 65 2c 0a 20 20 69 74 20 61 73 73  tabase,.  it ass
1950: 75 6d 65 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73  umes all columns
1960: 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 68   of all tables h
1970: 61 76 65 20 74 79 70 65 20 22 6e 75 6d 65 72 69  ave type "numeri
1980: 63 22 2e 20 20 46 6f 72 20 32 2e 37 2e 30 0a 20  c".  For 2.7.0. 
1990: 20 61 6e 64 20 6c 61 74 65 72 20 64 61 74 61 62   and later datab
19a0: 61 73 65 73 2c 20 63 6f 6c 75 6d 6e 73 20 68 61  ases, columns ha
19b0: 76 65 20 74 79 70 65 20 22 74 65 78 74 22 20 69  ve type "text" i
19c0: 66 20 74 68 65 69 72 20 64 61 74 61 74 79 70 65  f their datatype
19d0: 0a 20 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  .  string contai
19e0: 6e 73 20 74 68 65 20 73 75 62 73 74 72 69 6e 67  ns the substring
19f0: 73 20 22 63 68 61 72 22 20 6f 72 20 22 63 6c 6f  s "char" or "clo
1a00: 62 22 20 6f 72 20 22 62 6c 6f 62 22 20 6f 72 20  b" or "blob" or 
1a10: 22 74 65 78 74 22 2e 0a 20 20 4f 74 68 65 72 77  "text"..  Otherw
1a20: 69 73 65 20 74 68 65 79 20 61 72 65 20 6f 66 20  ise they are of 
1a30: 74 79 70 65 20 22 6e 75 6d 65 72 69 63 22 2e 3c  type "numeric".<
1a40: 2f 70 3e 0a 0a 20 20 3c 70 3e 42 65 63 61 75 73  /p>..  <p>Becaus
1a50: 65 20 22 74 65 78 74 22 20 63 6f 6c 75 6d 6e 73  e "text" columns
1a60: 20 68 61 76 65 20 61 20 64 69 66 66 65 72 65 6e   have a differen
1a70: 74 20 73 6f 72 74 20 6f 72 64 65 72 20 66 72 6f  t sort order fro
1a80: 6d 20 6e 75 6d 65 72 69 63 2c 0a 20 20 69 6e 64  m numeric,.  ind
1a90: 69 63 65 73 20 6f 6e 20 22 74 65 78 74 22 20 63  ices on "text" c
1aa0: 6f 6c 75 6d 6e 73 20 6f 63 63 75 72 20 69 6e 20  olumns occur in 
1ab0: 61 20 64 69 66 66 65 72 65 6e 74 20 6f 72 64 65  a different orde
1ac0: 72 20 66 6f 72 20 76 65 72 73 69 6f 6e 0a 20 20  r for version.  
1ad0: 32 2e 37 2e 30 20 61 6e 64 20 6c 61 74 65 72 20  2.7.0 and later 
1ae0: 64 61 74 61 62 61 73 65 2e 20 20 48 65 6e 63 65  database.  Hence
1af0: 20 76 65 72 73 69 6f 6e 20 32 2e 36 2e 33 20 61   version 2.6.3 a
1b00: 6e 64 20 65 61 72 6c 69 65 72 20 6f 66 20 53 51  nd earlier of SQ
1b10: 4c 69 74 65 20 0a 20 20 77 69 6c 6c 20 62 65 20  Lite .  will be 
1b20: 75 6e 61 62 6c 65 20 74 6f 20 72 65 61 64 20 61  unable to read a
1b30: 20 32 2e 37 2e 30 20 6f 72 20 6c 61 74 65 72 20   2.7.0 or later 
1b40: 64 61 74 61 62 61 73 65 2e 20 20 42 75 74 20 76  database.  But v
1b50: 65 72 73 69 6f 6e 20 32 2e 37 2e 30 0a 20 20 61  ersion 2.7.0.  a
1b60: 6e 64 20 6c 61 74 65 72 20 6f 66 20 53 51 4c 69  nd later of SQLi
1b70: 74 65 20 77 69 6c 6c 20 72 65 61 64 20 65 61 72  te will read ear
1b80: 6c 69 65 72 20 64 61 74 61 62 61 73 65 73 2e 3c  lier databases.<
1b90: 2f 70 3e 0a 20 20 3c 2f 74 64 3e 0a 3c 2f 74 72  /p>.  </td>.</tr
1ba0: 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76 61 6c  >.<tr>.  <td val
1bb0: 69 67 6e 3d 22 74 6f 70 22 3e 32 2e 37 2e 36 20  ign="top">2.7.6 
1bc0: 74 6f 20 32 2e 38 2e 30 3c 2f 74 64 3e 0a 20 20  to 2.8.0</td>.  
1bd0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
1be0: 3e 32 30 30 33 2d 46 65 62 2d 31 34 3c 2f 74 64  >2003-Feb-14</td
1bf0: 3e 0a 20 20 3c 74 64 3e 3c 70 3e 56 65 72 73 69  >.  <td><p>Versi
1c00: 6f 6e 20 32 2e 38 2e 30 20 69 6e 74 72 6f 64 75  on 2.8.0 introdu
1c10: 63 65 73 20 61 20 63 68 61 6e 67 65 20 74 6f 20  ces a change to 
1c20: 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68  the format of th
1c30: 65 20 72 6f 6c 6c 62 61 63 6b 0a 20 20 6a 6f 75  e rollback.  jou
1c40: 72 6e 61 6c 20 66 69 6c 65 2e 20 20 54 68 65 20  rnal file.  The 
1c50: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 66 69  main database fi
1c60: 6c 65 20 66 6f 72 6d 61 74 20 69 73 20 75 6e 63  le format is unc
1c70: 68 61 6e 67 65 64 2e 20 20 56 65 72 73 69 6f 6e  hanged.  Version
1c80: 73 0a 20 20 32 2e 37 2e 36 20 61 6e 64 20 65 61  s.  2.7.6 and ea
1c90: 72 6c 69 65 72 20 63 61 6e 20 72 65 61 64 20 61  rlier can read a
1ca0: 6e 64 20 77 72 69 74 65 20 32 2e 38 2e 30 20 64  nd write 2.8.0 d
1cb0: 61 74 61 62 61 73 65 73 20 61 6e 64 20 76 69 63  atabases and vic
1cc0: 65 20 76 65 72 73 61 2e 0a 20 20 56 65 72 73 69  e versa..  Versi
1cd0: 6f 6e 20 32 2e 38 2e 30 20 63 61 6e 20 72 6f 6c  on 2.8.0 can rol
1ce0: 6c 62 61 63 6b 20 61 20 74 72 61 6e 73 61 63 74  lback a transact
1cf0: 69 6f 6e 20 74 68 61 74 20 77 61 73 20 73 74 61  ion that was sta
1d00: 72 74 65 64 20 62 79 20 76 65 72 73 69 6f 6e 0a  rted by version.
1d10: 20 20 32 2e 37 2e 36 20 61 6e 64 20 65 61 72 6c    2.7.6 and earl
1d20: 69 65 72 2e 20 20 42 75 74 20 76 65 72 73 69 6f  ier.  But versio
1d30: 6e 20 32 2e 37 2e 36 20 61 6e 64 20 65 61 72 6c  n 2.7.6 and earl
1d40: 69 65 72 20 63 61 6e 6e 6f 74 20 72 6f 6c 6c 62  ier cannot rollb
1d50: 61 63 6b 20 61 0a 20 20 74 72 61 6e 73 61 63 74  ack a.  transact
1d60: 69 6f 6e 20 73 74 61 72 74 65 64 20 62 79 20 76  ion started by v
1d70: 65 72 73 69 6f 6e 20 32 2e 38 2e 30 20 6f 72 20  ersion 2.8.0 or 
1d80: 6c 61 74 65 72 2e 3c 2f 70 3e 0a 0a 20 20 3c 70  later.</p>..  <p
1d90: 3e 54 68 65 20 6f 6e 6c 79 20 74 69 6d 65 20 74  >The only time t
1da0: 68 69 73 20 77 6f 75 6c 64 20 65 76 65 72 20 62  his would ever b
1db0: 65 20 61 6e 20 69 73 73 75 65 20 69 73 20 77 68  e an issue is wh
1dc0: 65 6e 20 79 6f 75 20 68 61 76 65 20 61 20 70 72  en you have a pr
1dd0: 6f 67 72 61 6d 0a 20 20 75 73 69 6e 67 20 76 65  ogram.  using ve
1de0: 72 73 69 6f 6e 20 32 2e 38 2e 30 20 6f 72 20 6c  rsion 2.8.0 or l
1df0: 61 74 65 72 20 74 68 61 74 20 63 72 61 73 68 65  ater that crashe
1e00: 73 20 77 69 74 68 20 61 6e 20 69 6e 63 6f 6d 70  s with an incomp
1e10: 6c 65 74 65 0a 20 20 74 72 61 6e 73 61 63 74 69  lete.  transacti
1e20: 6f 6e 2c 20 74 68 65 6e 20 79 6f 75 20 74 72 79  on, then you try
1e30: 20 74 6f 20 65 78 61 6d 69 6e 65 20 74 68 65 20   to examine the 
1e40: 64 61 74 61 62 61 73 65 20 75 73 69 6e 67 20 76  database using v
1e50: 65 72 73 69 6f 6e 20 32 2e 37 2e 36 20 6f 72 0a  ersion 2.7.6 or.
1e60: 20 20 65 61 72 6c 69 65 72 2e 20 20 54 68 65 20    earlier.  The 
1e70: 32 2e 37 2e 36 20 63 6f 64 65 20 77 69 6c 6c 20  2.7.6 code will 
1e80: 6e 6f 74 20 62 65 20 61 62 6c 65 20 74 6f 20 72  not be able to r
1e90: 65 61 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  ead the journal 
1ea0: 66 69 6c 65 0a 20 20 61 6e 64 20 74 68 75 73 20  file.  and thus 
1eb0: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 62 6c 65  will not be able
1ec0: 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 20 74 68 65   to rollback the
1ed0: 20 69 6e 63 6f 6d 70 6c 65 74 65 20 74 72 61 6e   incomplete tran
1ee0: 73 61 63 74 69 6f 6e 0a 20 20 74 6f 20 72 65 73  saction.  to res
1ef0: 74 6f 72 65 20 74 68 65 20 64 61 74 61 62 61 73  tore the databas
1f00: 65 2e 3c 2f 70 3e 0a 20 20 3c 2f 74 64 3e 0a 3c  e.</p>.  </td>.<
1f10: 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20  /tr>.<tr>.  <td 
1f20: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 2e 38  valign="top">2.8
1f30: 2e 31 34 20 74 6f 20 33 2e 30 2e 30 3c 2f 74 64  .14 to 3.0.0</td
1f40: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
1f50: 74 6f 70 22 3e 32 30 30 34 2d 4a 75 6e 2d 31 38  top">2004-Jun-18
1f60: 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 3c 70 3e 56  </td>.  <td><p>V
1f70: 65 72 73 69 6f 6e 20 33 2e 30 2e 30 20 69 73 20  ersion 3.0.0 is 
1f80: 61 20 6d 61 6a 6f 72 20 75 70 67 72 61 64 65 20  a major upgrade 
1f90: 66 6f 72 20 53 51 4c 69 74 65 20 74 68 61 74 20  for SQLite that 
1fa0: 69 6e 63 6f 72 70 6f 72 61 74 65 73 0a 20 20 73  incorporates.  s
1fb0: 75 70 70 6f 72 74 20 66 6f 72 20 55 54 46 2d 31  upport for UTF-1
1fc0: 36 2c 20 42 4c 4f 42 73 2c 20 61 6e 64 20 61 20  6, BLOBs, and a 
1fd0: 6d 6f 72 65 20 63 6f 6d 70 61 63 74 20 65 6e 63  more compact enc
1fe0: 6f 64 69 6e 67 20 74 68 61 74 20 72 65 73 75 6c  oding that resul
1ff0: 74 73 0a 20 20 69 6e 20 64 61 74 61 62 61 73 65  ts.  in database
2000: 20 66 69 6c 65 73 20 74 68 61 74 20 61 72 65 20   files that are 
2010: 74 79 70 69 63 61 6c 6c 79 20 32 35 25 20 74 6f  typically 25% to
2020: 20 35 30 25 20 73 6d 61 6c 6c 65 72 2e 20 20 54   50% smaller.  T
2030: 68 65 20 6e 65 77 20 66 69 6c 65 0a 20 20 66 6f  he new file.  fo
2040: 72 6d 61 74 20 69 73 20 76 65 72 79 20 64 69 66  rmat is very dif
2050: 66 65 72 65 6e 74 20 61 6e 64 20 69 73 20 63 6f  ferent and is co
2060: 6d 70 6c 65 74 65 6c 79 20 69 6e 63 6f 6d 70 61  mpletely incompa
2070: 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 0a 20  tible with the. 
2080: 20 76 65 72 73 69 6f 6e 20 32 20 66 69 6c 65 20   version 2 file 
2090: 66 6f 72 6d 61 74 2e 3c 2f 70 3e 0a 20 20 3c 2f  format.</p>.  </
20a0: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20  td>.</tr>.<tr>. 
20b0: 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70   <td valign="top
20c0: 22 3e 33 2e 30 2e 38 20 74 6f 20 33 2e 31 2e 30  ">3.0.8 to 3.1.0
20d0: 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69  </td>.  <td vali
20e0: 67 6e 3d 22 74 6f 70 22 3e 32 30 30 35 2d 4a 61  gn="top">2005-Ja
20f0: 6e 2d 32 31 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e  n-21</td>.  <td>
2100: 3c 70 3e 56 65 72 73 69 6f 6e 20 33 2e 31 2e 30  <p>Version 3.1.0
2110: 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f   adds support fo
2120: 72 0a 20 20 3c 61 20 68 72 65 66 3d 22 70 72 61  r.  <a href="pra
2130: 67 6d 61 2e 68 74 6d 6c 23 70 72 61 67 6d 61 5f  gma.html#pragma_
2140: 61 75 74 6f 5f 76 61 63 75 75 6d 22 3e 61 75 74  auto_vacuum">aut
2150: 6f 76 61 63 75 75 6d 20 6d 6f 64 65 3c 2f 61 3e  ovacuum mode</a>
2160: 2e 0a 20 20 50 72 69 6f 72 20 76 65 72 73 69 6f  ..  Prior versio
2170: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c  ns of SQLite wil
2180: 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61  l be able to rea
2190: 64 20 61 6e 20 61 75 74 6f 76 61 63 75 75 6d 65  d an autovacuume
21a0: 64 0a 20 20 64 61 74 61 62 61 73 65 20 62 75 74  d.  database but
21b0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 62 6c   will not be abl
21c0: 65 20 74 6f 20 77 72 69 74 65 20 69 74 2e 20 20  e to write it.  
21d0: 49 66 20 61 75 74 6f 76 61 63 63 75 6d 20 69 73  If autovaccum is
21e0: 20 64 69 73 61 62 6c 65 64 0a 20 20 28 77 68 69   disabled.  (whi
21f0: 63 68 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  ch is the defaul
2200: 74 20 63 6f 6e 64 69 74 69 6f 6e 29 0a 20 20 74  t condition).  t
2210: 68 65 6e 20 64 61 74 61 62 61 73 65 73 20 61 72  hen databases ar
2220: 65 20 66 75 6c 6c 79 20 66 6f 72 77 61 72 64 73  e fully forwards
2230: 20 61 6e 64 20 62 61 63 6b 77 61 72 64 73 20 63   and backwards c
2240: 6f 6d 70 61 74 69 62 6c 65 2e 3c 2f 70 3e 0a 20  ompatible.</p>. 
2250: 20 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72   </td>.</tr>.<tr
2260: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
2270: 74 6f 70 22 3e 33 2e 31 2e 36 20 74 6f 20 33 2e  top">3.1.6 to 3.
2280: 32 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76  2.0</td>.  <td v
2290: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 35  align="top">2005
22a0: 2d 4d 61 72 2d 31 39 3c 2f 74 64 3e 0a 20 20 3c  -Mar-19</td>.  <
22b0: 74 64 3e 3c 70 3e 56 65 72 73 69 6f 6e 20 33 2e  td><p>Version 3.
22c0: 32 2e 30 20 61 64 64 73 20 73 75 70 70 6f 72 74  2.0 adds support
22d0: 20 66 6f 72 20 74 68 65 20 0a 20 20 3c 61 20 68   for the .  <a h
22e0: 72 65 66 3d 22 6c 61 6e 67 5f 61 6c 74 65 72 74  ref="lang_altert
22f0: 61 62 6c 65 2e 68 74 6d 6c 22 3e 41 4c 54 45 52  able.html">ALTER
2300: 20 54 41 42 4c 45 20 41 44 44 20 43 4f 4c 55 4d   TABLE ADD COLUM
2310: 4e 3c 2f 61 3e 0a 20 20 63 6f 6d 6d 61 6e 64 2e  N</a>.  command.
2320: 20 20 41 20 64 61 74 61 62 61 73 65 20 74 68 61    A database tha
2330: 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66  t has been modif
2340: 69 65 64 20 62 79 20 74 68 69 73 20 63 6f 6d 6d  ied by this comm
2350: 61 6e 64 20 63 61 6e 0a 20 20 6e 6f 74 20 62 65  and can.  not be
2360: 20 72 65 61 64 20 62 79 20 61 20 76 65 72 73 69   read by a versi
2370: 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 70 72 69  on of SQLite pri
2380: 6f 72 20 74 6f 20 33 2e 31 2e 34 2e 20 20 52 75  or to 3.1.4.  Ru
2390: 6e 6e 69 6e 67 20 0a 20 20 3c 61 20 68 72 65 66  nning .  <a href
23a0: 3d 22 6c 61 6e 67 5f 76 61 63 75 75 6d 2e 68 74  ="lang_vacuum.ht
23b0: 6d 6c 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 0a 20  ml">VACUUM</a>. 
23c0: 20 61 66 74 65 72 20 74 68 65 20 41 4c 54 45 52   after the ALTER
23d0: 20 54 41 42 4c 45 0a 20 20 72 65 73 74 6f 72 65   TABLE.  restore
23e0: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  s the database t
23f0: 6f 20 61 20 66 6f 72 6d 61 74 20 73 75 63 68 20  o a format such 
2400: 74 68 61 74 20 69 74 20 63 61 6e 20 62 65 20 72  that it can be r
2410: 65 61 64 20 62 79 20 65 61 72 6c 69 65 72 0a 20  ead by earlier. 
2420: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 73   SQLite versions
2430: 2e 3c 2f 70 3e 0a 20 20 3c 2f 74 64 3e 0a 3c 2f  .</p>.  </td>.</
2440: 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74 64 20 76  tr>.<tr>.  <td v
2450: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 33 2e 32 2e  align="top">3.2.
2460: 38 20 74 6f 20 33 2e 33 2e 30 3c 2f 74 64 3e 0a  8 to 3.3.0</td>.
2470: 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f    <td valign="to
2480: 70 22 3e 32 30 30 36 2d 4a 61 6e 2d 31 30 3c 2f  p">2006-Jan-10</
2490: 74 64 3e 0a 20 20 3c 74 64 3e 3c 70 3e 56 65 72  td>.  <td><p>Ver
24a0: 73 69 6f 6e 20 33 2e 33 2e 30 20 61 64 64 73 20  sion 3.3.0 adds 
24b0: 73 75 70 70 6f 72 74 20 66 6f 72 20 64 65 73 63  support for desc
24c0: 65 6e 64 69 6e 67 20 69 6e 64 69 63 65 73 20 61  ending indices a
24d0: 6e 64 0a 20 20 75 73 65 73 20 61 20 6e 65 77 20  nd.  uses a new 
24e0: 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20 62 6f 6f  encoding for boo
24f0: 6c 65 61 6e 20 76 61 6c 75 65 73 20 74 68 61 74  lean values that
2500: 20 72 65 71 75 69 72 65 73 0a 20 20 6c 65 73 73   requires.  less
2510: 20 64 69 73 6b 20 73 70 61 63 65 2e 20 20 56 65   disk space.  Ve
2520: 72 73 69 6f 6e 20 33 2e 33 2e 30 20 63 61 6e 20  rsion 3.3.0 can 
2530: 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 64  read and write d
2540: 61 74 61 62 61 73 65 0a 20 20 66 69 6c 65 73 20  atabase.  files 
2550: 63 72 65 61 74 65 64 20 62 79 20 70 72 69 6f 72  created by prior
2560: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2570: 69 74 65 2e 20 20 42 75 74 20 70 72 69 6f 72 20  ite.  But prior 
2580: 76 65 72 73 69 6f 6e 73 0a 20 20 6f 66 20 53 51  versions.  of SQ
2590: 4c 69 74 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65  Lite will not be
25a0: 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20 6f 72   able to read or
25b0: 20 77 72 69 74 65 20 64 61 74 61 62 61 73 65 73   write databases
25c0: 20 63 72 65 61 74 65 64 0a 20 20 62 79 20 56 65   created.  by Ve
25d0: 72 73 69 6f 6e 20 33 2e 33 2e 30 3c 2f 70 3e 0a  rsion 3.3.0</p>.
25e0: 20 20 3c 70 3e 49 66 20 79 6f 75 20 6e 65 65 64    <p>If you need
25f0: 20 62 61 63 6b 77 61 72 64 73 20 61 6e 64 20 66   backwards and f
2600: 6f 72 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62  orwards compatib
2610: 69 6c 69 74 79 2c 20 79 6f 75 20 63 61 6e 0a 20  ility, you can. 
2620: 20 63 6f 6d 70 69 6c 65 20 77 69 74 68 20 2d 44   compile with -D
2630: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
2640: 49 4c 45 5f 46 4f 52 4d 41 54 3d 31 2e 20 20 4f  ILE_FORMAT=1.  O
2650: 72 20 61 74 20 72 75 6e 74 69 6d 65 0a 20 20 79  r at runtime.  y
2660: 6f 75 20 63 61 6e 20 73 61 79 20 22 50 52 41 47  ou can say "PRAG
2670: 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66  MA legacy_file_f
2680: 6f 72 6d 61 74 3d 4f 4e 22 20 70 72 69 6f 72 20  ormat=ON" prior 
2690: 74 6f 20 63 72 65 61 74 69 6e 67 0a 20 20 61 20  to creating.  a 
26a0: 6e 65 77 20 64 61 74 61 62 61 73 65 20 66 69 6c  new database fil
26b0: 65 3c 2f 70 3e 0a 20 20 3c 70 3e 4f 6e 63 65 20  e</p>.  <p>Once 
26c0: 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
26d0: 69 73 20 63 72 65 61 74 65 64 2c 20 69 74 73 20  is created, its 
26e0: 66 6f 72 6d 61 74 20 69 73 20 66 69 78 65 64 2e  format is fixed.
26f0: 20 20 53 6f 0a 20 20 61 20 64 61 74 61 62 61 73    So.  a databas
2700: 65 20 66 69 6c 65 20 63 72 65 61 74 65 64 20 62  e file created b
2710: 79 20 53 51 4c 69 74 65 20 33 2e 32 2e 38 20 61  y SQLite 3.2.8 a
2720: 6e 64 20 6d 65 72 65 6c 79 20 6d 6f 64 69 66 69  nd merely modifi
2730: 65 64 0a 20 20 62 79 20 76 65 72 73 69 6f 6e 20  ed.  by version 
2740: 33 2e 33 2e 30 20 6f 72 20 6c 61 74 65 72 20 77  3.3.0 or later w
2750: 69 6c 6c 20 72 65 74 61 69 6e 20 74 68 65 20 6f  ill retain the o
2760: 6c 64 20 66 6f 72 6d 61 74 2e 20 20 45 78 63 65  ld format.  Exce
2770: 70 74 2c 0a 20 20 74 68 65 20 56 41 43 55 55 4d  pt,.  the VACUUM
2780: 20 63 6f 6d 6d 61 6e 64 20 72 65 63 72 65 61 74   command recreat
2790: 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
27a0: 73 6f 20 72 75 6e 6e 69 6e 67 20 56 41 43 55 55  so running VACUU
27b0: 4d 0a 20 20 6f 6e 20 33 2e 33 2e 30 20 6f 72 20  M.  on 3.3.0 or 
27c0: 6c 61 74 65 72 20 77 69 6c 6c 20 63 68 61 6e 67  later will chang
27d0: 65 20 74 68 65 20 66 69 6c 65 20 66 6f 72 6d 61  e the file forma
27e0: 74 20 74 6f 20 74 68 65 20 6c 61 74 65 73 74 0a  t to the latest.
27f0: 20 20 65 64 69 74 69 6f 6e 2e 3c 2f 70 3e 0a 20    edition.</p>. 
2800: 20 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72   </td>.</tr>.<tr
2810: 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d 22  >.  <td valign="
2820: 74 6f 70 22 3e 33 2e 33 2e 36 20 74 6f 20 33 2e  top">3.3.6 to 3.
2830: 33 2e 37 3c 2f 74 64 3e 0a 20 20 3c 74 64 20 76  3.7</td>.  <td v
2840: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30 36  align="top">2006
2850: 2d 41 75 67 2d 31 32 3c 2f 74 64 3e 0a 20 20 3c  -Aug-12</td>.  <
2860: 74 64 3e 3c 70 3e 54 68 65 20 70 72 65 76 69 6f  td><p>The previo
2870: 75 73 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 63  us file format c
2880: 68 61 6e 67 65 20 68 61 73 20 63 61 75 73 65 64  hange has caused
2890: 20 73 6f 20 6d 75 63 68 0a 20 20 67 72 69 65 66   so much.  grief
28a0: 20 74 68 61 74 20 74 68 65 20 64 65 66 61 75 6c   that the defaul
28b0: 74 20 62 65 68 61 76 69 6f 72 20 68 61 73 20 62  t behavior has b
28c0: 65 65 6e 20 63 68 61 6e 67 65 64 20 62 61 63 6b  een changed back
28d0: 20 74 6f 20 0a 20 20 74 68 65 20 6f 72 69 67 69   to .  the origi
28e0: 6e 61 6c 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e  nal file format.
28f0: 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61    This means tha
2900: 74 20 44 45 53 43 20 6f 70 74 69 6f 6e 20 6f 6e  t DESC option on
2910: 0a 20 20 69 6e 64 69 63 65 73 20 69 73 20 69 67  .  indices is ig
2920: 6e 6f 72 65 64 20 62 79 20 64 65 66 61 75 6c 74  nored by default
2930: 20 74 68 61 74 20 74 68 65 20 6d 6f 72 65 20 65   that the more e
2940: 66 66 69 63 69 65 6e 74 20 65 6e 63 6f 64 69 6e  fficient encodin
2950: 67 0a 20 20 6f 66 20 62 6f 6f 6c 65 61 6e 20 76  g.  of boolean v
2960: 61 6c 75 65 73 20 69 73 20 6e 6f 74 20 75 73 65  alues is not use
2970: 64 2e 20 20 49 6e 20 74 68 61 74 20 77 61 79 2c  d.  In that way,
2980: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 0a   older versions.
2990: 20 20 6f 66 20 53 51 4c 69 74 65 20 63 61 6e 20    of SQLite can 
29a0: 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 64  read and write d
29b0: 61 74 61 62 61 73 65 73 20 63 72 65 61 74 65 64  atabases created
29c0: 20 62 79 20 6e 65 77 65 72 0a 20 20 76 65 72 73   by newer.  vers
29d0: 69 6f 6e 73 2e 20 20 49 66 20 74 68 65 20 6e 65  ions.  If the ne
29e0: 77 20 66 65 61 74 75 72 65 73 20 61 72 65 20 64  w features are d
29f0: 65 73 69 72 65 64 2c 20 74 68 65 79 20 63 61 6e  esired, they can
2a00: 20 62 65 0a 20 20 65 6e 61 62 6c 65 64 20 75 73   be.  enabled us
2a10: 69 6e 67 20 70 72 61 67 6d 61 3a 20 22 50 52 41  ing pragma: "PRA
2a20: 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f  GMA legacy_file_
2a30: 66 6f 72 6d 61 74 3d 4f 46 46 22 2e 3c 2f 70 3e  format=OFF".</p>
2a40: 0a 20 20 3c 70 3e 54 6f 20 62 65 20 63 6c 65 61  .  <p>To be clea
2a50: 72 3a 20 62 6f 74 68 20 6f 6c 64 20 61 6e 64 20  r: both old and 
2a60: 6e 65 77 20 66 69 6c 65 20 66 6f 72 6d 61 74 73  new file formats
2a70: 20 63 6f 6e 74 69 6e 75 65 20 74 6f 0a 20 20 62   continue to.  b
2a80: 65 20 75 6e 64 65 72 73 74 6f 6f 64 20 61 6e 64  e understood and
2a90: 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 77 6f 72   continue to wor
2aa0: 6b 2e 20 20 42 75 74 20 74 68 65 20 6f 6c 64 20  k.  But the old 
2ab0: 66 69 6c 65 20 66 6f 72 6d 61 74 0a 20 20 69 73  file format.  is
2ac0: 20 75 73 65 64 20 62 79 20 64 65 66 61 75 6c 74   used by default
2ad0: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
2ae0: 6e 65 77 2e 20 20 54 68 69 73 20 6d 69 67 68 74  new.  This might
2af0: 20 63 68 61 6e 67 65 0a 20 20 61 67 61 69 6e 20   change.  again 
2b00: 69 6e 20 73 6f 6d 65 20 66 75 74 75 72 65 20 72  in some future r
2b10: 65 6c 65 61 73 65 20 2d 20 77 65 20 6d 61 79 20  elease - we may 
2b20: 67 6f 20 62 61 63 6b 20 74 6f 20 67 65 6e 65 72  go back to gener
2b30: 61 74 69 6e 67 0a 20 20 74 68 65 20 6e 65 77 20  ating.  the new 
2b40: 66 69 6c 65 20 66 6f 72 6d 61 74 20 62 79 20 64  file format by d
2b50: 65 66 61 75 6c 74 20 2d 20 62 75 74 20 70 72 6f  efault - but pro
2b60: 62 61 62 6c 79 20 6e 6f 74 20 75 6e 74 69 6c 0a  bably not until.
2b70: 20 20 61 6c 6c 20 75 73 65 72 73 20 68 61 76 65    all users have
2b80: 20 75 70 67 72 61 64 65 64 20 74 6f 20 61 20 76   upgraded to a v
2b90: 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65  ersion of SQLite
2ba0: 20 74 68 61 74 20 77 69 6c 6c 0a 20 20 75 6e 64   that will.  und
2bb0: 65 72 73 74 61 6e 64 20 74 68 65 20 6e 65 77 20  erstand the new 
2bc0: 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 54 68  file format.  Th
2bd0: 61 74 20 6d 69 67 68 74 20 74 61 6b 65 20 73 65  at might take se
2be0: 76 65 72 61 6c 0a 20 20 79 65 61 72 73 2e 3c 2f  veral.  years.</
2bf0: 70 3e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  p></td>.</tr>.<t
2c00: 72 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d  r>.  <td valign=
2c10: 22 74 6f 70 22 3e 33 2e 34 2e 32 20 74 6f 20 33  "top">3.4.2 to 3
2c20: 2e 35 2e 30 3c 2f 74 64 3e 0a 20 20 3c 74 64 20  .5.0</td>.  <td 
2c30: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 32 30 30  valign="top">200
2c40: 37 2d 53 65 70 2d 33 3c 2f 74 64 3e 0a 20 20 3c  7-Sep-3</td>.  <
2c50: 74 64 3e 3c 70 3e 54 68 65 20 64 65 73 69 67 6e  td><p>The design
2c60: 20 6f 66 20 74 68 65 20 4f 53 20 69 6e 74 65 72   of the OS inter
2c70: 66 61 63 65 20 6c 61 79 65 72 20 77 61 73 20 63  face layer was c
2c80: 68 61 6e 67 65 64 20 66 6f 72 0a 20 20 72 65 6c  hanged for.  rel
2c90: 65 61 73 65 20 33 2e 35 2e 30 2e 20 20 41 70 70  ease 3.5.0.  App
2ca0: 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 69  lications that i
2cb0: 6d 70 6c 65 6d 65 6e 74 65 64 20 61 20 63 75 73  mplemented a cus
2cc0: 74 6f 6d 20 4f 53 0a 20 20 69 6e 74 65 72 66 61  tom OS.  interfa
2cd0: 63 65 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20  ce will need to 
2ce0: 62 65 20 6d 6f 64 69 66 69 65 64 20 69 6e 20 6f  be modified in o
2cf0: 72 64 65 72 20 74 6f 20 75 70 67 72 61 64 65 2e  rder to upgrade.
2d00: 0a 20 20 54 68 65 72 65 20 61 72 65 20 61 6c 73  .  There are als
2d10: 6f 20 73 6f 6d 65 20 73 75 62 74 6c 79 20 64 69  o some subtly di
2d20: 66 66 65 72 65 6e 74 20 73 65 6d 61 6e 74 69 63  fferent semantic
2d30: 73 20 61 20 66 65 77 20 6f 62 73 63 75 72 65 0a  s a few obscure.
2d40: 20 20 41 50 49 73 2e 20 20 41 6e 20 3c 61 20 68    APIs.  An <a h
2d50: 72 65 66 3d 22 33 34 74 6f 33 35 2e 68 74 6d 6c  ref="34to35.html
2d60: 22 3e 61 72 74 69 63 6c 65 3c 2f 61 3e 20 69 73  ">article</a> is
2d70: 20 61 76 61 69 6c 61 62 6c 65 20 77 68 69 63 68   available which
2d80: 0a 20 20 64 65 73 63 72 69 62 69 6e 67 20 74 68  .  describing th
2d90: 65 20 63 68 61 6e 67 65 73 20 69 6e 20 64 65 74  e changes in det
2da0: 61 69 6c 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 54  ail.</p>..  <p>T
2db0: 68 65 20 6f 6e 2d 64 69 73 6b 20 66 69 6c 65 20  he on-disk file 
2dc0: 66 6f 72 6d 61 74 20 69 73 20 75 6e 63 68 61 6e  format is unchan
2dd0: 67 65 64 2e 3c 2f 70 3e 0a 20 20 3c 2f 74 64 3e  ged.</p>.  </td>
2de0: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 20 20 3c 74  .</tr>.<tr>.  <t
2df0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 33  d valign="top">3
2e00: 2e 35 2e 39 20 74 6f 20 33 2e 36 2e 30 3c 2f 74  .5.9 to 3.6.0</t
2e10: 64 3e 0a 20 20 3c 74 64 20 76 61 6c 69 67 6e 3d  d>.  <td valign=
2e20: 22 74 6f 70 22 3e 32 30 30 38 2d 4a 75 6c 79 2d  "top">2008-July-
2e30: 31 36 3c 2f 74 64 3e 0a 20 20 3c 74 64 3e 3c 70  16</td>.  <td><p
2e40: 3e 54 68 65 72 65 20 61 72 65 20 6d 69 6e 6f 72  >There are minor
2e50: 20 74 77 65 61 6b 73 20 74 6f 20 74 68 65 20 6e   tweaks to the n
2e60: 65 77 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20  ew OS interface 
2e70: 6c 61 79 65 72 20 74 68 61 74 0a 20 20 77 61 73  layer that.  was
2e80: 20 61 64 64 65 64 20 69 6e 20 76 65 72 73 69 6f   added in versio
2e90: 6e 20 33 2e 35 2e 30 2e 0a 20 20 41 70 70 6c 69  n 3.5.0..  Appli
2ea0: 63 61 74 69 6f 6e 73 20 74 68 61 74 20 69 6d 70  cations that imp
2eb0: 6c 65 6d 65 6e 74 65 64 20 61 20 63 75 73 74 6f  lemented a custo
2ec0: 6d 20 4f 53 0a 20 20 69 6e 74 65 72 66 61 63 65  m OS.  interface
2ed0: 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 62 65   will need to be
2ee0: 20 61 64 6a 75 73 74 65 64 2e 0a 20 20 41 6e 20   adjusted..  An 
2ef0: 3c 61 20 68 72 65 66 3d 22 33 35 74 6f 33 36 2e  <a href="35to36.
2f00: 68 74 6d 6c 22 3e 61 72 74 69 63 6c 65 3c 2f 61  html">article</a
2f10: 3e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 77  > is available w
2f20: 68 69 63 68 0a 20 20 64 65 73 63 72 69 62 69 6e  hich.  describin
2f30: 67 20 74 68 65 20 63 68 61 6e 67 65 73 20 69 6e  g the changes in
2f40: 20 64 65 74 61 69 6c 2e 3c 2f 70 3e 0a 0a 20 20   detail.</p>..  
2f50: 3c 70 3e 54 68 65 20 6f 6e 2d 64 69 73 6b 20 66  <p>The on-disk f
2f60: 69 6c 65 20 66 6f 72 6d 61 74 20 69 73 20 75 6e  ile format is un
2f70: 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a 20 20 3c  changed.</p>.  <
2f80: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
2f90: 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
2fa0: 3e 0a 0a 3c 70 3e 0a 54 6f 20 70 65 72 66 6f 72  >..<p>.To perfor
2fb0: 6d 20 61 20 64 61 74 61 62 61 73 65 20 72 65 6c  m a database rel
2fc0: 6f 61 64 2c 20 68 61 76 65 20 72 65 61 64 79 20  oad, have ready 
2fd0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 0a  versions of the.
2fe0: 3c 62 3e 73 71 6c 69 74 65 3c 2f 62 3e 20 63 6f  <b>sqlite</b> co
2ff0: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 75 74 69 6c 69  mmand-line utili
3000: 74 79 20 66 6f 72 20 62 6f 74 68 20 74 68 65 20  ty for both the 
3010: 6f 6c 64 20 61 6e 64 20 6e 65 77 0a 76 65 72 73  old and new.vers
3020: 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 2e 20 20  ion of SQLite.  
3030: 43 61 6c 6c 20 74 68 65 73 65 20 74 77 6f 20 65  Call these two e
3040: 78 65 63 75 74 61 62 6c 65 73 20 22 3c 62 3e 73  xecutables "<b>s
3050: 71 6c 69 74 65 2d 6f 6c 64 3c 2f 62 3e 22 0a 61  qlite-old</b>".a
3060: 6e 64 20 22 3c 62 3e 73 71 6c 69 74 65 2d 6e 65  nd "<b>sqlite-ne
3070: 77 3c 2f 62 3e 22 2e 20 20 53 75 70 70 6f 73 65  w</b>".  Suppose
3080: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 79 6f 75   the name of you
3090: 72 20 6f 6c 64 20 64 61 74 61 62 61 73 65 0a 69  r old database.i
30a0: 73 20 22 3c 62 3e 6f 6c 64 2e 64 62 3c 2f 62 3e  s "<b>old.db</b>
30b0: 22 20 61 6e 64 20 79 6f 75 20 77 61 6e 74 20 74  " and you want t
30c0: 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 64  o create a new d
30d0: 61 74 61 62 61 73 65 20 77 69 74 68 0a 74 68 65  atabase with.the
30e0: 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f   same informatio
30f0: 6e 20 6e 61 6d 65 64 20 22 3c 62 3e 6e 65 77 2e  n named "<b>new.
3100: 64 62 3c 2f 62 3e 22 2e 20 20 54 68 65 20 63 6f  db</b>".  The co
3110: 6d 6d 61 6e 64 20 74 6f 20 64 6f 0a 74 68 69 73  mmand to do.this
3120: 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a   is as follows:.
3130: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
3140: 65 3e 0a 20 20 73 71 6c 69 74 65 2d 6f 6c 64 20  e>.  sqlite-old 
3150: 6f 6c 64 2e 64 62 20 2e 64 75 6d 70 20 7c 20 73  old.db .dump | s
3160: 71 6c 69 74 65 2d 6e 65 77 20 6e 65 77 2e 64 62  qlite-new new.db
3170: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a     .</blockquote>.