aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrh <>2023-05-27 20:08:23 +0000
committerdrh <>2023-05-27 20:08:23 +0000
commit4308b88dcdab08d8f7ead46e46c29180c1496585 (patch)
tree4ee000a6d43ac4133340604c538bb8cc0adb8d09
parent870fe69c727320c90cd04229f2b09d32611fa20b (diff)
downloadsqlite-4308b88dcdab08d8f7ead46e46c29180c1496585.tar.gz
sqlite-4308b88dcdab08d8f7ead46e46c29180c1496585.zip
Fix an issue with sqldiff reported by
[forum:/info/9bd2155bdfae25a7|forum post 9bd2155bdfae25a7]. FossilOrigin-Name: 736a79c1491065f4ee77ce644af0e529e555ca733c78dbd55487d55d4ddbe5bd
-rw-r--r--manifest16
-rw-r--r--manifest.uuid2
-rw-r--r--test/sqldiff1.test22
-rw-r--r--tool/sqldiff.c24
4 files changed, 43 insertions, 21 deletions
diff --git a/manifest b/manifest
index 13b14835d..59a53cb9f 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sextra\stests\sfor\sfts5,\slarge\srowids\sand\s"ORDER\sBY\srowid\sDESC".\sNo\schanges\sto\scode.
-D 2023-05-27T19:34:46.629
+C Fix\san\sissue\swith\ssqldiff\sreported\sby\n[forum:/info/9bd2155bdfae25a7|forum\spost\s9bd2155bdfae25a7].
+D 2023-05-27T20:08:23.912
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1548,7 +1548,7 @@ F test/spellfix.test 951a6405d49d1a23d6b78027d3877b4a33eeb8221dcab5704b499755bb4
F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3
F test/spellfix3.test 0f9efaaa502a0e0a09848028518a6fb096c8ad33
F test/spellfix4.test 51c7c26514ade169855c66bcf130bd5acfb4d7fd090cc624645ab275ae6a41fb
-F test/sqldiff1.test 182058e09c7082de5c6a470ff9c291337bbeb650052c2cc68fbb3d7e25861d91
+F test/sqldiff1.test 1b7ab4f312442c5cc6b3a5f299fa8ca051416d1dd173cb1126fd51bf64f2c3fb
F test/sqllimits1.test b28e5cc8d337aaf290614d96a47e8fbfb720bb7ad35620c9d5432996fd413ac4
F test/sqllog.test 6af6cb0b09f4e44e1917e06ce85be7670302517a
F test/startup.c 1beb5ca66fcc0fce95c3444db9d1674f90fc605499a574ae2434dcfc10d22805
@@ -2035,7 +2035,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 7ce07da76b5e745783e703a834417d725b7d45fd
F tool/split-sqlite3c.tcl 5aa60643afca558bc732b1444ae81a522326f91e1dc5665b369c54f09e20de60
-F tool/sqldiff.c 4f967c199c5f93eec64978e3a625d6c07fb1162212b1d48f65740d9eb4607eee
+F tool/sqldiff.c 2a693b4e7c1818c23f871f82f0c3fe67d80b67e3f087893089d33da29c1e387e
F tool/sqlite3_analyzer.c.in f88615bf33098945e0a42f17733f472083d150b58bdaaa5555a7129d0a51621c
F tool/sqltclsh.c.in 1bcc2e9da58fadf17b0bf6a50e68c1159e602ce057210b655d50bad5aaaef898
F tool/sqltclsh.tcl 862f4cf1418df5e1315b5db3b5ebe88969e2a784525af5fbf9596592f14ed848
@@ -2071,8 +2071,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 6e79505df915612b60696e4eec5c9973175fe6ecf273eb3152b996e63ae54a07
-R e93e5d5e258b2b12eddc294c5ac6bdf5
-U dan
-Z 02e241a62938b29e1c0b51bf7219c1d9
+P b5b5eaeed3ef55415e27aa04561ab446f3be881b56b7cbf9b8ba3307f0b2bf69
+R a97b6bbc5714e405091cdcf5e322eddf
+U drh
+Z 1c9966bc9ba55db651e2a9b574f4ed8b
# Remove this line to create a well-formed Fossil manifest.
diff --git a/manifest.uuid b/manifest.uuid
index c42fe062b..6ce0a1569 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-b5b5eaeed3ef55415e27aa04561ab446f3be881b56b7cbf9b8ba3307f0b2bf69 \ No newline at end of file
+736a79c1491065f4ee77ce644af0e529e555ca733c78dbd55487d55d4ddbe5bd \ No newline at end of file
diff --git a/test/sqldiff1.test b/test/sqldiff1.test
index 4ea5efbbf..5a3c11cb9 100644
--- a/test/sqldiff1.test
+++ b/test/sqldiff1.test
@@ -63,4 +63,26 @@ CREATE TABLE t3(a,b,c);
INSERT INTO t3(rowid,a,b,c) VALUES(1,111,222,333);
DROP TABLE t4;}
+db close
+forcedelete test.db test2.db
+sqlite3 db test.db
+
+do_test sqldiff-2.0 {
+ db eval {
+ CREATE TABLE t1(a INTEGER PRIMARY KEY);
+ }
+ db close
+ sqlite3 db test2.db
+ db eval {
+ CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
+ }
+ db close
+ set line "exec $PROG test.db test2.db"
+ unset -nocomplain ::MSG
+ catch {eval $line} ::MSG
+} {0}
+do_test sqldiff-2.1 {
+ set ::MSG
+} {ALTER TABLE t1 ADD COLUMN b;}
+
finish_test
diff --git a/tool/sqldiff.c b/tool/sqldiff.c
index 0a017037c..5477ff97f 100644
--- a/tool/sqldiff.c
+++ b/tool/sqldiff.c
@@ -605,18 +605,18 @@ static void diff_one_table(const char *zTab, FILE *out){
strPrintf(&sql, "%sB.%s", zSep, az[i]);
zSep = ", ";
}
- strPrintf(&sql, ", 1%s -- changed row\n", nPk==n ? "" : ",");
+ strPrintf(&sql, ", 1 /* changed row */");
while( az[i] ){
- strPrintf(&sql, " A.%s IS NOT B.%s, B.%s%s\n",
- az[i], az2[i], az2[i], az2[i+1]==0 ? "" : ",");
+ strPrintf(&sql, ", A.%s IS NOT B.%s, B.%s",
+ az[i], az2[i], az2[i]);
i++;
}
while( az2[i] ){
- strPrintf(&sql, " B.%s IS NOT NULL, B.%s%s\n",
- az2[i], az2[i], az2[i+1]==0 ? "" : ",");
+ strPrintf(&sql, ", B.%s IS NOT NULL, B.%s",
+ az2[i], az2[i]);
i++;
}
- strPrintf(&sql, " FROM main.%s A, aux.%s B\n", zId, zId);
+ strPrintf(&sql, "\n FROM main.%s A, aux.%s B\n", zId, zId);
zSep = " WHERE";
for(i=0; i<nPk; i++){
strPrintf(&sql, "%s A.%s=B.%s", zSep, az[i], az[i]);
@@ -642,12 +642,12 @@ static void diff_one_table(const char *zTab, FILE *out){
strPrintf(&sql, "%sA.%s", zSep, az[i]);
zSep = ", ";
}
- strPrintf(&sql, ", 2%s -- deleted row\n", nPk==n ? "" : ",");
+ strPrintf(&sql, ", 2 /* deleted row */");
while( az2[i] ){
- strPrintf(&sql, " NULL, NULL%s\n", i==n2-1 ? "" : ",");
+ strPrintf(&sql, ", NULL, NULL");
i++;
}
- strPrintf(&sql, " FROM main.%s A\n", zId);
+ strPrintf(&sql, "\n FROM main.%s A\n", zId);
strPrintf(&sql, " WHERE NOT EXISTS(SELECT 1 FROM aux.%s B\n", zId);
zSep = " WHERE";
for(i=0; i<nPk; i++){
@@ -660,12 +660,12 @@ static void diff_one_table(const char *zTab, FILE *out){
strPrintf(&sql, "%sB.%s", zSep, az[i]);
zSep = ", ";
}
- strPrintf(&sql, ", 3%s -- inserted row\n", nPk==n ? "" : ",");
+ strPrintf(&sql, ", 3 /* inserted row */");
while( az2[i] ){
- strPrintf(&sql, " 1, B.%s%s\n", az2[i], az2[i+1]==0 ? "" : ",");
+ strPrintf(&sql, ", 1, B.%s", az2[i]);
i++;
}
- strPrintf(&sql, " FROM aux.%s B\n", zId);
+ strPrintf(&sql, "\n FROM aux.%s B\n", zId);
strPrintf(&sql, " WHERE NOT EXISTS(SELECT 1 FROM main.%s A\n", zId);
zSep = " WHERE";
for(i=0; i<nPk; i++){