From a77edc69eebe610d309f62234f4d5b277a80102a Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 23 Mar 2017 17:03:35 +0000 Subject: [PATCH] Remove an invalid assert() statement failing when VACUUMing a database that contains an index on a column explicitly declared "COLLATE BINARY". FossilOrigin-Name: 9f2e04d3c3526b5ff60d941aa6d5446f602cab37cb93972937f39eefabd6868d --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/insert.c | 2 -- test/collateB.test | 14 ++++++++++++++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 560760071c..a838663224 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sharmless\scompiler\swarnings\sin\sthe\sshell. -D 2017-03-22T12:51:34.759 +C Remove\san\sinvalid\sassert()\sstatement\sfailing\swhen\sVACUUMing\sa\sdatabase\sthat\ncontains\san\sindex\son\sa\scolumn\sexplicitly\sdeclared\s"COLLATE\sBINARY". +D 2017-03-23T17:03:35.684 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 1faf9f06aadc9284c212dea7bbc7c0dea7e8337f0287c81001eff500912c790a @@ -363,7 +363,7 @@ F src/hash.c 63d0ee752a3b92d4695b2b1f5259c4621b2cfebd F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71 -F src/insert.c 3ed64afc49c0a2221e397b9f65d231ffbef506fe +F src/insert.c d4bb3a135948553d18cf992f76f7ed7b18aa0327f250607b5a6671e55d9947d5 F src/legacy.c e88ed13c2d531decde75d42c2e35623fb9ce3cb0 F src/loadext.c a68d8d1d14cf7488bb29dc5311cb1ce9a4404258 F src/main.c 158326243c5ddc8b98a1e983fa488650cf76d760 @@ -597,7 +597,7 @@ F test/collate7.test 8ec29d98f3ee4ccebce6e16ce3863fb6b8c7b868 F test/collate8.test cd9b3d3f999b8520ffaa7cc1647061fc5bab1334 F test/collate9.test 3adcc799229545940df2f25308dd1ad65869145a F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6 -F test/collateB.test 8ec2accd2d7166c1eff0d2a39bc90262c6f89632 +F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151ecac0b95 F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1 F test/colname.test 08948a4809d22817e0e5de89c7c0a8bd90cb551b F test/conflict.test 029faa2d81a0d1cafb5f88614beb663d972c01db @@ -1567,7 +1567,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 055b36f1c1593bb123f7319a07c476143d71af052b5b8d34afcd0d500f197882 -R 1f280e53b7c950d24565e873ae0276ec -U drh -Z a154993c25ee99ce8fe87b6f82cb272d +P a786829783ef65ef270ca360712364cbd47a540d31ed1547d50808aad698bea7 +R 85624f613e7e3af447c83f8947d69a8d +U dan +Z 3c9d547950272a881cd381bfe4f2d9b9 diff --git a/manifest.uuid b/manifest.uuid index 6c408aa251..1f6f43e2c5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a786829783ef65ef270ca360712364cbd47a540d31ed1547d50808aad698bea7 \ No newline at end of file +9f2e04d3c3526b5ff60d941aa6d5446f602cab37cb93972937f39eefabd6868d \ No newline at end of file diff --git a/src/insert.c b/src/insert.c index f1f3807244..a1f5442515 100644 --- a/src/insert.c +++ b/src/insert.c @@ -2227,8 +2227,6 @@ static int xferOptimization( ** sorted order. */ for(i=0; inColumn; i++){ const char *zColl = pSrcIdx->azColl[i]; - assert( sqlite3_stricmp(sqlite3StrBINARY, zColl)!=0 - || sqlite3StrBINARY==zColl ); if( sqlite3_stricmp(sqlite3StrBINARY, zColl) ) break; } if( i==pSrcIdx->nColumn ){ diff --git a/test/collateB.test b/test/collateB.test index 4815de83ee..3c8d50d8e6 100644 --- a/test/collateB.test +++ b/test/collateB.test @@ -13,6 +13,7 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl +set testprefix collateB do_execsql_test collateB-1.1 { CREATE TABLE t1(a INTEGER PRIMARY KEY); @@ -60,4 +61,17 @@ do_execsql_test collateB-1.17 { SELECT *,'|' FROM t1, t2, t3 WHERE b=x2 AND a=x1 AND 1=a; } {1 11 1 11 |} +#------------------------------------------------------------------------- +# Test an assert() failure that was occuring if an index were created +# on a column explicitly declared "COLLATE binary". +reset_db +do_execsql_test 2.1 { + CREATE TABLE t4(a COLLATE binary); + CREATE INDEX i4 ON t4(a); + INSERT INTO t4 VALUES('one'), ('two'), ('three'); + VACUUM; +} + +integrity_check 2.2 + finish_test -- 2.47.2