Documentation Source Text

Hex Artifact Content
Login

Artifact d460162ffb997c02a711bf8cbaa06e293d93495a3eac7743981052e99afb904e:


0000: 3c 74 69 74 6c 65 3e 73 71 6c 64 69 66 66 2e 65  <title>sqldiff.e
0010: 78 65 3a 20 44 61 74 61 62 61 73 65 20 44 69 66  xe: Database Dif
0020: 66 65 72 65 6e 63 65 20 55 74 69 6c 69 74 79 3c  ference Utility<
0030: 2f 74 69 74 6c 65 3e 0a 3c 74 63 6c 3e 68 64 5f  /title>.<tcl>hd_
0040: 6b 65 79 77 6f 72 64 73 20 73 71 6c 64 69 66 66  keywords sqldiff
0050: 20 73 71 6c 64 69 66 66 2e 65 78 65 3c 2f 74 63   sqldiff.exe</tc
0060: 6c 3e 0a 0a 3c 74 61 62 6c 65 5f 6f 66 5f 63 6f  l>..<table_of_co
0070: 6e 74 65 6e 74 73 3e 0a 3c 68 31 3e 55 73 61 67  ntents>.<h1>Usag
0080: 65 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 54 68 65 20  e</h1>..<p>.The 
0090: 3c 74 74 3e 73 71 6c 64 69 66 66 2e 65 78 65 3c  <tt>sqldiff.exe<
00a0: 2f 74 74 3e 20 62 69 6e 61 72 79 20 69 73 20 61  /tt> binary is a
00b0: 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 75 74   command-line ut
00c0: 69 6c 69 74 79 20 70 72 6f 67 72 61 6d 20 74 68  ility program th
00d0: 61 74 0a 64 69 73 70 6c 61 79 73 20 74 68 65 20  at.displays the 
00e0: 64 69 66 66 65 72 65 6e 63 65 73 20 62 65 74 77  differences betw
00f0: 65 65 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62  een SQLite datab
0100: 61 73 65 73 2e 20 20 45 78 61 6d 70 6c 65 0a 75  ases.  Example.u
0110: 73 61 67 65 3a 0a 0a 3c 63 6f 64 65 62 6c 6f 63  sage:..<codebloc
0120: 6b 3e 0a 73 71 6c 64 69 66 66 20 26 23 39 31 3b  k>.sqldiff &#91;
0130: 6f 70 74 69 6f 6e 73 26 23 39 33 3b 20 64 61 74  options&#93; dat
0140: 61 62 61 73 65 31 2e 73 71 6c 69 74 65 20 64 61  abase1.sqlite da
0150: 74 61 62 61 73 65 32 2e 73 71 6c 69 74 65 0a 3c  tabase2.sqlite.<
0160: 2f 63 6f 64 65 62 6c 6f 63 6b 3e 0a 0a 3c 70 3e  /codeblock>..<p>
0170: 0a 54 68 65 20 75 73 75 61 6c 20 6f 75 74 70 75  .The usual outpu
0180: 74 20 69 73 20 61 6e 20 53 51 4c 20 73 63 72 69  t is an SQL scri
0190: 70 74 20 74 68 61 74 20 77 69 6c 6c 20 74 72 61  pt that will tra
01a0: 6e 73 66 6f 72 6d 0a 64 61 74 61 62 61 73 65 31  nsform.database1
01b0: 2e 73 71 6c 69 74 65 20 28 74 68 65 20 22 73 6f  .sqlite (the "so
01c0: 75 72 63 65 22 20 64 61 74 61 62 61 73 65 29 20  urce" database) 
01d0: 69 6e 74 6f 20 64 61 74 61 62 61 73 65 32 2e 73  into database2.s
01e0: 71 6c 69 74 65 0a 28 74 68 65 20 22 64 65 73 74  qlite.(the "dest
01f0: 69 6e 61 74 69 6f 6e 22 20 64 61 74 61 62 61 73  ination" databas
0200: 65 29 2e 20 20 54 68 69 73 20 62 65 68 61 76 69  e).  This behavi
0210: 6f 72 20 63 61 6e 20 62 65 0a 61 6c 74 65 72 65  or can be.altere
0220: 64 20 75 73 69 6e 67 20 63 6f 6d 6d 61 6e 64 2d  d using command-
0230: 6c 69 6e 65 20 73 77 69 74 63 68 65 73 3a 0a 0a  line switches:..
0240: 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 2d 2d 63 68  <dl>.<dt><b>--ch
0250: 61 6e 67 65 73 65 74 20 46 49 4c 45 3c 2f 62 3e  angeset FILE</b>
0260: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 44 6f 20  </dt>.<dd><p>Do 
0270: 6e 6f 74 20 77 72 69 74 65 20 63 68 61 6e 67 65  not write change
0280: 73 20 74 6f 20 73 74 61 6e 64 61 72 64 20 6f 75  s to standard ou
0290: 74 70 75 74 2e 20 20 49 6e 73 74 65 61 64 2c 20  tput.  Instead, 
02a0: 77 72 69 74 65 20 61 20 28 62 69 6e 61 72 79 29  write a (binary)
02b0: 0a 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 65  .       changese
02c0: 74 20 66 69 6c 65 20 69 6e 74 6f 20 46 49 4c 45  t file into FILE
02d0: 2e 20 20 54 68 65 20 63 68 61 6e 67 65 73 65 74  .  The changeset
02e0: 20 63 61 6e 20 62 65 20 69 6e 74 65 72 70 72 65   can be interpre
02f0: 74 65 64 20 75 73 69 6e 67 0a 20 20 20 20 20 20  ted using.      
0300: 20 74 68 65 20 73 65 73 73 69 6f 6e 73 20 65 78   the sessions ex
0310: 74 65 6e 73 69 6f 6e 20 74 6f 20 53 51 4c 69 74  tension to SQLit
0320: 65 2e 3c 2f 64 64 3e 0a 3c 64 74 3e 3c 62 3e 2d  e.</dd>.<dt><b>-
0330: 2d 6c 69 62 20 4c 49 42 52 41 52 59 3c 2f 62 3e  -lib LIBRARY</b>
0340: 3c 2f 64 74 3e 0a 3c 64 74 3e 3c 62 3e 2d 4c 20  </dt>.<dt><b>-L 
0350: 4c 49 42 52 41 52 59 3c 2f 62 3e 3c 2f 64 74 3e  LIBRARY</b></dt>
0360: 0a 3c 64 64 3e 3c 70 3e 4c 6f 61 64 20 74 68 65  .<dd><p>Load the
0370: 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 20   shared library 
0380: 6f 72 20 44 4c 4c 20 66 69 6c 65 20 4c 49 42 52  or DLL file LIBR
0390: 41 52 59 20 69 6e 74 6f 20 53 51 4c 69 74 65 20  ARY into SQLite 
03a0: 70 72 69 6f 72 20 74 6f 0a 20 20 20 20 20 20 20  prior to.       
03b0: 63 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 64 69  computing the di
03c0: 66 66 65 72 65 6e 63 65 73 2e 20 20 54 68 69 73  fferences.  This
03d0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
03e0: 61 64 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d  add application-
03f0: 64 65 66 69 6e 65 64 0a 20 20 20 20 20 20 20 5b  defined.       [
0400: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
0410: 63 65 73 5d 20 74 68 61 74 20 61 72 65 20 72 65  ces] that are re
0420: 71 75 69 72 65 64 20 62 79 20 74 68 65 20 73 63  quired by the sc
0430: 68 65 6d 61 2e 0a 3c 64 74 3e 3c 62 3e 2d 2d 70  hema..<dt><b>--p
0440: 72 69 6d 61 72 79 6b 65 79 3c 2f 62 3e 3c 2f 64  rimarykey</b></d
0450: 74 3e 0a 3c 64 64 3e 3c 70 3e 55 73 65 20 74 68  t>.<dd><p>Use th
0460: 65 20 73 63 68 65 6d 61 2d 64 65 66 69 6e 65 64  e schema-defined
0470: 20 5b 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 69   [PRIMARY KEY] i
0480: 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 5b 72  nstead of the [r
0490: 6f 77 69 64 5d 20 74 6f 0a 20 20 20 20 20 20 20  owid] to.       
04a0: 70 61 69 72 20 72 6f 77 73 20 69 6e 20 74 68 65  pair rows in the
04b0: 20 73 6f 75 72 63 65 20 61 6e 64 20 64 65 73 74   source and dest
04c0: 69 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73 65  ination database
04d0: 2e 20 20 28 53 65 65 20 61 64 64 69 74 69 6f 6e  .  (See addition
04e0: 61 6c 0a 20 20 20 20 20 20 20 65 78 70 6c 61 6e  al.       explan
04f0: 61 74 69 6f 6e 20 62 65 6c 6f 77 2e 29 3c 2f 64  ation below.)</d
0500: 64 3e 0a 3c 64 74 3e 3c 62 3e 2d 2d 73 63 68 65  d>.<dt><b>--sche
0510: 6d 61 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  ma</b></dt>.<dd>
0520: 3c 70 3e 53 68 6f 77 20 6f 6e 6c 79 20 64 69 66  <p>Show only dif
0530: 66 65 72 65 6e 63 65 73 20 69 6e 20 74 68 65 20  ferences in the 
0540: 73 63 68 65 6d 61 20 6e 6f 74 20 74 68 65 20 74  schema not the t
0550: 61 62 6c 65 20 63 6f 6e 74 65 6e 74 3c 2f 70 3e  able content</p>
0560: 3c 2f 64 64 3e 0a 3c 64 74 3e 3c 62 3e 2d 2d 73  </dd>.<dt><b>--s
0570: 75 6d 6d 61 72 79 3c 2f 62 3e 3c 2f 64 74 3e 0a  ummary</b></dt>.
0580: 3c 64 64 3e 3c 70 3e 53 68 6f 77 20 68 6f 77 20  <dd><p>Show how 
0590: 6d 61 6e 79 20 72 6f 77 73 20 68 61 76 65 20 63  many rows have c
05a0: 68 61 6e 67 65 64 20 6f 6e 20 65 61 63 68 20 74  hanged on each t
05b0: 61 62 6c 65 2c 20 62 75 74 20 64 6f 20 6e 6f 74  able, but do not
05c0: 20 73 68 6f 77 0a 20 20 20 20 20 20 20 74 68 65   show.       the
05d0: 20 61 63 74 75 61 6c 20 63 68 61 6e 67 65 73 3c   actual changes<
05e0: 2f 64 64 3e 0a 3c 64 74 3e 3c 62 3e 2d 2d 74 61  /dd>.<dt><b>--ta
05f0: 62 6c 65 20 54 41 42 4c 45 3c 2f 62 3e 3c 2f 64  ble TABLE</b></d
0600: 74 3e 0a 3c 64 64 3e 3c 70 3e 53 68 6f 77 20 6f  t>.<dd><p>Show o
0610: 6e 6c 79 20 74 68 65 20 64 69 66 66 65 72 65 6e  nly the differen
0620: 63 65 73 20 69 6e 20 63 6f 6e 74 65 6e 74 20 66  ces in content f
0630: 6f 72 20 54 41 42 4c 45 2c 20 6e 6f 74 20 66 6f  or TABLE, not fo
0640: 72 20 74 68 65 0a 20 20 20 20 20 20 20 65 6e 74  r the.       ent
0650: 69 72 65 20 64 61 74 61 62 61 73 65 3c 2f 70 3e  ire database</p>
0660: 3c 2f 64 64 3e 0a 3c 64 74 3e 3c 62 3e 2d 2d 74  </dd>.<dt><b>--t
0670: 72 61 6e 73 61 63 74 69 6f 6e 3c 2f 62 3e 3c 2f  ransaction</b></
0680: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 72 61 70 20  dt>.<dd><p>Wrap 
0690: 53 51 4c 20 6f 75 74 70 75 74 20 69 6e 20 61 20  SQL output in a 
06a0: 73 69 6e 67 6c 65 20 6c 61 72 67 65 20 74 72 61  single large tra
06b0: 6e 73 61 63 74 69 6f 6e 3c 2f 70 3e 3c 2f 64 64  nsaction</p></dd
06c0: 3e 0a 3c 64 74 3e 3c 62 3e 2d 2d 76 74 61 62 3c  >.<dt><b>--vtab<
06d0: 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
06e0: 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20  Add support for 
06f0: 68 61 6e 64 6c 69 6e 67 20 5b 46 54 53 33 5d 2c  handling [FTS3],
0700: 20 5b 46 54 53 35 5d 20 61 6e 64 20 5b 72 74 72   [FTS5] and [rtr
0710: 65 65 5d 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ee] virtual tabl
0720: 65 73 2e 20 0a 20 20 20 20 20 20 20 3c 61 20 68  es. .       <a h
0730: 72 65 66 3d 23 76 74 61 62 3e 53 65 65 20 62 65  ref=#vtab>See be
0740: 6c 6f 77 3c 2f 61 3e 20 66 6f 72 20 64 65 74 61  low</a> for deta
0750: 69 6c 73 2e 20 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a  ils. .</p></dd>.
0760: 3c 2f 64 6c 3e 0a 0a 3c 68 31 3e 48 6f 77 20 49  </dl>..<h1>How I
0770: 74 20 57 6f 72 6b 73 3c 2f 68 31 3e 0a 0a 3c 70  t Works</h1>..<p
0780: 3e 54 68 65 20 73 71 6c 64 69 66 66 2e 65 78 65  >The sqldiff.exe
0790: 20 75 74 69 6c 69 74 79 20 77 6f 72 6b 73 20 62   utility works b
07a0: 79 20 66 69 6e 64 69 6e 67 20 72 6f 77 73 20 69  y finding rows i
07b0: 6e 20 74 68 65 20 73 6f 75 72 63 65 20 61 6e 64  n the source and
07c0: 0a 64 65 73 74 69 6e 61 74 69 6f 6e 20 74 68 61  .destination tha
07d0: 74 20 61 72 65 20 6c 6f 67 69 63 61 6c 20 22 70  t are logical "p
07e0: 61 69 72 73 22 2e 20 20 54 68 65 20 64 65 66 61  airs".  The defa
07f0: 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20  ult behavior is 
0800: 74 6f 0a 74 72 65 61 74 20 74 77 6f 20 72 6f 77  to.treat two row
0810: 73 20 61 73 20 70 61 69 72 73 20 69 66 20 74 68  s as pairs if th
0820: 65 79 20 61 72 65 20 69 6e 20 74 61 62 6c 65 73  ey are in tables
0830: 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e   with the same n
0840: 61 6d 65 0a 61 6e 64 20 74 68 65 79 20 68 61 76  ame.and they hav
0850: 65 20 74 68 65 20 73 61 6d 65 20 5b 72 6f 77 69  e the same [rowi
0860: 64 5d 2c 20 6f 72 20 69 6e 20 74 68 65 20 63 61  d], or in the ca
0870: 73 65 20 6f 66 20 61 20 5b 57 49 54 48 4f 55 54  se of a [WITHOUT
0880: 20 52 4f 57 49 44 5d 0a 74 61 62 6c 65 20 69 66   ROWID].table if
0890: 20 74 68 65 79 20 68 61 76 65 20 74 68 65 20 73   they have the s
08a0: 61 6d 65 20 5b 50 52 49 4d 41 52 59 20 4b 45 59  ame [PRIMARY KEY
08b0: 5d 2e 20 20 41 6e 79 20 64 69 66 66 65 72 65 6e  ].  Any differen
08c0: 63 65 73 20 69 6e 20 74 68 65 0a 63 6f 6e 74 65  ces in the.conte
08d0: 6e 74 20 6f 66 20 70 61 69 72 65 64 20 72 6f 77  nt of paired row
08e0: 73 20 61 72 65 20 6f 75 74 70 75 74 20 61 73 20  s are output as 
08f0: 55 50 44 41 54 45 73 2e 20 20 52 6f 77 73 20 69  UPDATEs.  Rows i
0900: 6e 20 74 68 65 20 73 6f 75 72 63 65 0a 64 61 74  n the source.dat
0910: 61 62 61 73 65 20 74 68 61 74 20 63 6f 75 6c 64  abase that could
0920: 20 6e 6f 74 20 62 65 20 70 61 69 72 65 64 20 61   not be paired a
0930: 72 65 20 6f 75 74 70 75 74 20 61 73 20 44 45 4c  re output as DEL
0940: 45 54 45 73 2e 20 20 52 6f 77 73 20 69 6e 0a 74  ETEs.  Rows in.t
0950: 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64  he destination d
0960: 61 74 61 62 61 73 65 20 74 68 61 74 20 63 6f 75  atabase that cou
0970: 6c 64 20 6e 6f 74 20 62 65 20 70 61 69 72 65 64  ld not be paired
0980: 20 61 72 65 20 6f 75 74 70 75 74 20 61 73 0a 49   are output as.I
0990: 4e 53 45 52 54 73 2e 0a 0a 3c 70 3e 54 68 65 20  NSERTs...<p>The 
09a0: 2d 2d 70 72 69 6d 61 72 79 6b 65 79 20 66 6c 61  --primarykey fla
09b0: 67 20 63 68 61 6e 67 65 73 20 74 68 65 20 70 61  g changes the pa
09c0: 69 72 69 6e 67 20 61 6c 67 6f 72 69 74 68 6d 20  iring algorithm 
09d0: 73 6c 69 67 68 74 6c 79 20 73 6f 0a 74 68 61 74  slightly so.that
09e0: 20 74 68 65 20 73 63 68 65 6d 61 2d 64 65 63 6c   the schema-decl
09f0: 61 72 65 64 20 5b 50 52 49 4d 41 52 59 20 4b 45  ared [PRIMARY KE
0a00: 59 5d 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  Y] is always use
0a10: 64 20 66 6f 72 20 70 61 69 72 69 6e 67 2c 0a 65  d for pairing,.e
0a20: 76 65 6e 20 6f 6e 20 74 61 62 6c 65 73 20 74 68  ven on tables th
0a30: 61 74 20 68 61 76 65 20 61 20 5b 72 6f 77 69 64  at have a [rowid
0a40: 5d 2e 20 20 54 68 69 73 20 69 73 20 6f 66 74 65  ].  This is ofte
0a50: 6e 20 61 20 62 65 74 74 65 72 20 63 68 6f 69 63  n a better choic
0a60: 65 0a 66 6f 72 20 66 69 6e 64 69 6e 67 20 64 69  e.for finding di
0a70: 66 66 65 72 65 6e 63 65 73 2c 20 68 6f 77 65 76  fferences, howev
0a80: 65 72 20 69 74 20 63 61 6e 20 6c 65 61 64 20 74  er it can lead t
0a90: 6f 20 6d 69 73 73 65 64 20 64 69 66 66 65 72 65  o missed differe
0aa0: 6e 63 65 73 20 69 6e 0a 74 68 65 20 63 61 73 65  nces in.the case
0ab0: 20 6f 66 20 72 6f 77 73 20 74 68 61 74 20 68 61   of rows that ha
0ac0: 76 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 50  ve one or more P
0ad0: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
0ae0: 6e 73 20 73 65 74 20 74 6f 0a 4e 55 4c 4c 2e 3c  ns set to.NULL.<
0af0: 2f 70 3e 0a 0a 3c 68 31 3e 4c 69 6d 69 74 61 74  /p>..<h1>Limitat
0b00: 69 6f 6e 73 3c 2f 68 31 3e 0a 0a 3c 6f 6c 3e 0a  ions</h1>..<ol>.
0b10: 3c 6c 69 3e 0a 3c 70 3e 54 68 65 20 73 71 6c 64  <li>.<p>The sqld
0b20: 69 66 66 2e 65 78 65 20 75 74 69 6c 69 74 79 20  iff.exe utility 
0b30: 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 63 6f 6d  is unable to com
0b40: 70 75 74 65 20 64 69 66 66 65 72 65 6e 63 65 73  pute differences
0b50: 20 66 6f 72 0a 72 6f 77 69 64 20 74 61 62 6c 65   for.rowid table
0b60: 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20  s for which the 
0b70: 72 6f 77 69 64 20 69 73 20 69 6e 61 63 63 65 73  rowid is inacces
0b80: 73 69 62 6c 65 2e 20 20 41 6e 20 65 78 61 6d 70  sible.  An examp
0b90: 6c 65 20 6f 66 0a 61 20 74 61 62 6c 65 20 77 69  le of.a table wi
0ba0: 74 68 20 61 6e 20 69 6e 61 63 63 65 73 73 69 62  th an inaccessib
0bb0: 6c 65 20 72 6f 77 69 64 20 69 73 3a 0a 0a 3c 63  le rowid is:..<c
0bc0: 6f 64 65 62 6c 6f 63 6b 3e 0a 43 52 45 41 54 45  odeblock>.CREATE
0bd0: 20 54 41 42 4c 45 20 69 6e 61 63 63 65 73 73 69   TABLE inaccessi
0be0: 62 6c 65 5f 72 6f 77 69 64 28 0a 20 20 20 22 72  ble_rowid(.   "r
0bf0: 6f 77 69 64 22 20 54 45 58 54 2c 0a 20 20 20 22  owid" TEXT,.   "
0c00: 6f 69 64 22 20 54 45 58 54 2c 0a 20 20 20 22 5f  oid" TEXT,.   "_
0c10: 72 6f 77 69 64 5f 22 20 54 45 58 54 0a 29 3b 0a  rowid_" TEXT.);.
0c20: 3c 2f 63 6f 64 65 62 6c 6f 63 6b 3e 0a 0a 3c 6c  </codeblock>..<l
0c30: 69 3e 3c 70 3e 0a 54 68 65 20 73 71 6c 64 69 66  i><p>.The sqldif
0c40: 66 2e 65 78 65 20 75 74 69 6c 69 74 79 20 64 6f  f.exe utility do
0c50: 65 73 20 6e 6f 74 20 28 63 75 72 72 65 6e 74 6c  es not (currentl
0c60: 79 29 20 64 69 73 70 6c 61 79 20 64 69 66 66 65  y) display diffe
0c70: 72 65 6e 63 65 73 20 69 6e 0a 5b 43 52 45 41 54  rences in.[CREAT
0c80: 45 20 54 52 49 47 47 45 52 7c 54 52 49 47 47 45  E TRIGGER|TRIGGE
0c90: 52 73 5d 20 6f 72 20 5b 43 52 45 41 54 45 20 56  Rs] or [CREATE V
0ca0: 49 45 57 7c 56 49 45 57 73 5d 2e 0a 0a 3c 6c 69  IEW|VIEWs]...<li
0cb0: 3e 3c 70 20 69 64 3d 76 74 61 62 3e 0a 42 79 20  ><p id=vtab>.By 
0cc0: 64 65 66 61 75 6c 74 2c 20 64 69 66 66 65 72 65  default, differe
0cd0: 6e 63 65 73 20 69 6e 20 74 68 65 20 73 63 68 65  nces in the sche
0ce0: 6d 61 20 6f 72 20 63 6f 6e 74 65 6e 74 20 6f 66  ma or content of
0cf0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   virtual tables 
0d00: 61 72 65 0a 6e 6f 74 20 72 65 70 6f 72 74 65 64  are.not reported
0d10: 20 6f 6e 2e 20 0a 0a 3c 70 3e 48 6f 77 65 76 65   on. ..<p>Howeve
0d20: 72 2c 20 69 66 20 61 20 5b 76 69 72 74 75 61 6c  r, if a [virtual
0d30: 20 74 61 62 6c 65 5d 20 69 6d 70 6c 65 6d 65 6e   table] implemen
0d40: 74 61 74 69 6f 6e 20 63 72 65 61 74 65 73 20 72  tation creates r
0d50: 65 61 6c 20 74 61 62 6c 65 73 20 28 73 6f 6d 65  eal tables (some
0d60: 74 69 6d 65 73 0a 72 65 66 65 72 72 65 64 20 74  times.referred t
0d70: 6f 20 61 73 20 22 73 68 61 64 6f 77 22 20 74 61  o as "shadow" ta
0d80: 62 6c 65 73 29 20 77 69 74 68 69 6e 20 74 68 65  bles) within the
0d90: 20 64 61 74 61 62 61 73 65 20 74 6f 20 73 74 6f   database to sto
0da0: 72 65 20 69 74 73 20 64 61 74 61 20 69 6e 2c 20  re its data in, 
0db0: 74 68 65 6e 0a 73 71 6c 64 69 66 66 2e 65 78 65  then.sqldiff.exe
0dc0: 20 64 6f 65 73 20 63 61 6c 63 75 6c 61 74 65 20   does calculate 
0dd0: 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62  the difference b
0de0: 65 74 77 65 65 6e 20 74 68 65 73 65 2e 20 54 68  etween these. Th
0df0: 69 73 20 63 61 6e 20 68 61 76 65 0a 73 75 72 70  is can have.surp
0e00: 72 69 73 69 6e 67 20 65 66 66 65 63 74 73 20 69  rising effects i
0e10: 66 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  f the resulting 
0e20: 53 51 4c 20 73 63 72 69 70 74 20 69 73 20 74 68  SQL script is th
0e30: 65 6e 20 72 75 6e 20 6f 6e 20 61 20 64 61 74 61  en run on a data
0e40: 62 61 73 65 20 74 68 61 74 0a 69 73 20 6e 6f 74  base that.is not
0e50: 20 3c 69 3e 65 78 61 63 74 6c 79 3c 2f 69 3e 20   <i>exactly</i> 
0e60: 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20  the same as the 
0e70: 73 6f 75 72 63 65 20 64 61 74 61 62 61 73 65 2e  source database.
0e80: 20 46 6f 72 20 73 65 76 65 72 61 6c 20 6f 66 20   For several of 
0e90: 53 51 4c 69 74 65 27 73 0a 62 75 6e 64 6c 65 64  SQLite's.bundled
0ea0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   virtual tables 
0eb0: 28 46 54 53 33 2c 20 46 54 53 35 2c 20 72 74 72  (FTS3, FTS5, rtr
0ec0: 65 65 20 61 6e 64 20 6f 74 68 65 72 73 29 2c 20  ee and others), 
0ed0: 74 68 65 20 73 75 72 70 72 69 73 69 6e 67 20 65  the surprising e
0ee0: 66 66 65 63 74 73 0a 6d 61 79 20 69 6e 63 6c 75  ffects.may inclu
0ef0: 64 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 6f 66  de corruption of
0f00: 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
0f10: 6c 65 20 63 6f 6e 74 65 6e 74 2e 0a 0a 3c 70 3e  le content...<p>
0f20: 20 49 66 20 74 68 65 20 2d 2d 76 74 61 62 20 6f   If the --vtab o
0f30: 70 74 69 6f 6e 20 69 73 20 70 61 73 73 65 64 20  ption is passed 
0f40: 74 6f 20 73 71 6c 64 69 66 66 2e 65 78 65 2c 20  to sqldiff.exe, 
0f50: 74 68 65 6e 20 69 74 20 69 67 6e 6f 72 65 73 20  then it ignores 
0f60: 61 6c 6c 20 0a 75 6e 64 65 72 6c 79 69 6e 67 20  all .underlying 
0f70: 73 68 61 64 6f 77 20 74 61 62 6c 65 73 20 62 65  shadow tables be
0f80: 6c 6f 6e 67 69 6e 67 20 74 6f 20 61 6e 20 46 54  longing to an FT
0f90: 53 33 2c 20 46 54 53 35 20 6f 72 20 72 74 72 65  S3, FTS5 or rtre
0fa0: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0a  e virtual table.
0fb0: 61 6e 64 20 69 6e 73 74 65 61 64 20 69 6e 63 6c  and instead incl
0fc0: 75 64 65 73 20 74 68 65 20 76 69 72 74 75 61 6c  udes the virtual
0fd0: 20 74 61 62 6c 65 20 64 69 66 66 65 72 65 6e 63   table differenc
0fe0: 65 73 20 64 69 72 65 63 74 6c 79 2e 0a 0a 3c 2f  es directly...</
0ff0: 6f 6c 3e 0a                                      ol>.