From: drh <> Date: Mon, 12 Jun 2023 13:43:38 +0000 (+0000) Subject: Fix an issue with sqldiff reported by X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6e0d6e0cc1dfdf8aba789cc6613d2e7e32eae67a;p=thirdparty%2Fsqlite.git Fix an issue with sqldiff reported by [forum:/info/9bd2155bdfae25a7|forum post 9bd2155bdfae25a7]. FossilOrigin-Name: 50721074f70d19128c9ae048a6d9f7608f8c54c42e6b3ae45dfd0939448233bf --- diff --git a/manifest b/manifest index 538a966139..07120938c4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sperforming\saggregate\sprocessing\smore\sthan\sonce\sfor\sa\ssingle\sexpression. -D 2023-05-23T17:43:24.866 +C Fix\san\sissue\swith\ssqldiff\sreported\sby\n[forum:/info/9bd2155bdfae25a7|forum\spost\s9bd2155bdfae25a7]. +D 2023-06-12T13:43:38.792 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1547,7 +1547,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 @@ -2034,7 +2034,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 @@ -2070,9 +2070,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 20c8a9247be2f0c1606e2c79910f28593898054b99adf505b32ac6352ce8e89e -Q +367b4cc549a14222d54530538e692e9d1a365002c1b8c4ef80ddc0523bfdb3a2 -R e5a3226f593cead24f58753549e8abc5 +P 1bc549716c8a96a6db579d48027fde7388e1fdad22e39f223984cdb1321fe6b2 +Q +736a79c1491065f4ee77ce644af0e529e555ca733c78dbd55487d55d4ddbe5bd +R aad0f5ba5b61655e9e2f9602be58d68e U drh -Z 6fefd44d1f8475a6792c7b09a8a2af85 +Z 2df838be4e98fc690ac5ccb23e10284a # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6637e69e85..15eb6c7668 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1bc549716c8a96a6db579d48027fde7388e1fdad22e39f223984cdb1321fe6b2 \ No newline at end of file +50721074f70d19128c9ae048a6d9f7608f8c54c42e6b3ae45dfd0939448233bf \ No newline at end of file diff --git a/test/sqldiff1.test b/test/sqldiff1.test index 4ea5efbbfa..5a3c11cb9c 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 0a017037cf..5477ff97f0 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