From: dan Date: Wed, 12 Jul 2017 14:03:13 +0000 (+0000) Subject: Fix a problem in an lsmtest test case caused by writing data in "text" mode X-Git-Tag: version-3.20.0~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=47ebd4caddfe9745289d051e57348c7bebf7a1a5;p=thirdparty%2Fsqlite.git Fix a problem in an lsmtest test case caused by writing data in "text" mode instead of "binary". FossilOrigin-Name: 3e56a79ad8754e6da3181883154fa1c8b227a8d16c9b2a3eba925371595ae1f9 --- diff --git a/ext/lsm1/lsm-test/lsmtest8.c b/ext/lsm1/lsm-test/lsmtest8.c index dfc4cae069..f734ac6aba 100644 --- a/ext/lsm1/lsm-test/lsmtest8.c +++ b/ext/lsm1/lsm-test/lsmtest8.c @@ -85,7 +85,7 @@ static void setupDatabase1(TestDb *pDb, Datasource **ppData){ void testReadFile(const char *zFile, int iOff, void *pOut, int nByte, int *pRc){ if( *pRc==0 ){ FILE *fd; - fd = fopen(zFile, "r"); + fd = fopen(zFile, "rb"); if( fd==0 ){ *pRc = 1; }else{ @@ -111,7 +111,7 @@ void testWriteFile( ){ if( *pRc==0 ){ FILE *fd; - fd = fopen(zFile, "r+"); + fd = fopen(zFile, "r+b"); if( fd==0 ){ *pRc = 1; }else{ @@ -157,50 +157,52 @@ static ShmHeader *getShmHeader(const char *zDb){ ** 5) Check once more that the checksum is still zCksum. */ static void doLiveRecovery(const char *zDb, const char *zCksum, int *pRc){ - const DatasourceDefn defn = {TEST_DATASOURCE_RANDOM, 20, 25, 100, 500}; - Datasource *pData; - const char *zCopy = "testcopy.lsm"; - char zCksum2[TEST_CKSUM_BYTES]; - TestDb *pDb = 0; - int rc; - - pData = testDatasourceNew(&defn); - - testCopyLsmdb(zDb, zCopy); - rc = tdb_lsm_open("test_no_recovery=1", zCopy, 0, &pDb); - if( rc==0 ){ - ShmHeader *pHdr; - lsm_db *db; - testCksumDatabase(pDb, zCksum2); - testCompareStr(zCksum, zCksum2, &rc); - - testWriteDatasourceRange(pDb, pData, 1, 10, &rc); - testDeleteDatasourceRange(pDb, pData, 1, 10, &rc); + if( *pRc==LSM_OK ){ + const DatasourceDefn defn = {TEST_DATASOURCE_RANDOM, 20, 25, 100, 500}; + Datasource *pData; + const char *zCopy = "testcopy.lsm"; + char zCksum2[TEST_CKSUM_BYTES]; + TestDb *pDb = 0; + int rc; - /* Test that the two tree-headers are now consistent. */ - pHdr = getShmHeader(zCopy); - if( rc==0 && memcmp(&pHdr->hdr1, &pHdr->hdr2, sizeof(pHdr->hdr1)) ){ - rc = 1; - } - testFree(pHdr); + pData = testDatasourceNew(&defn); + testCopyLsmdb(zDb, zCopy); + rc = tdb_lsm_open("test_no_recovery=1", zCopy, 0, &pDb); if( rc==0 ){ - int nBuf = 64; - db = tdb_lsm(pDb); - lsm_config(db, LSM_CONFIG_AUTOFLUSH, &nBuf); - lsm_begin(db, 1); - lsm_commit(db, 0); - rc = lsm_work(db, 0, 0, 0); + ShmHeader *pHdr; + lsm_db *db; + testCksumDatabase(pDb, zCksum2); + testCompareStr(zCksum, zCksum2, &rc); + + testWriteDatasourceRange(pDb, pData, 1, 10, &rc); + testDeleteDatasourceRange(pDb, pData, 1, 10, &rc); + + /* Test that the two tree-headers are now consistent. */ + pHdr = getShmHeader(zCopy); + if( rc==0 && memcmp(&pHdr->hdr1, &pHdr->hdr2, sizeof(pHdr->hdr1)) ){ + rc = 1; + } + testFree(pHdr); + + if( rc==0 ){ + int nBuf = 64; + db = tdb_lsm(pDb); + lsm_config(db, LSM_CONFIG_AUTOFLUSH, &nBuf); + lsm_begin(db, 1); + lsm_commit(db, 0); + rc = lsm_work(db, 0, 0, 0); + } + + testCksumDatabase(pDb, zCksum2); + testCompareStr(zCksum, zCksum2, &rc); } - testCksumDatabase(pDb, zCksum2); - testCompareStr(zCksum, zCksum2, &rc); + testDatasourceFree(pData); + testClose(&pDb); + testDeleteLsmdb(zCopy); + *pRc = rc; } - - testDatasourceFree(pData); - testClose(&pDb); - testDeleteLsmdb(zCopy); - *pRc = rc; } static void doWriterCrash1(int *pRc){ diff --git a/manifest b/manifest index 0c065d61a1..4b1e3ec1f8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Compile\scleanly\swith\sSQLITE_OMIT_UTF16. -D 2017-07-12T12:19:33.990 +C Fix\sa\sproblem\sin\san\slsmtest\stest\scase\scaused\sby\swriting\sdata\sin\s"text"\smode\ninstead\sof\s"binary". +D 2017-07-12T14:03:13.542 F Makefile.in 081e48dfe7f995d57ce1a88ddf4d2917b4349158648a6cd45b42beae30de3a12 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 20850e3e8d4d4791e0531955852d768eb06f24138214870d543abb1a47346fba @@ -220,7 +220,7 @@ F ext/lsm1/lsm-test/lsmtest4.c d258d6a245db5d8eaede096e2368d23f859c5e92c80ab9122 F ext/lsm1/lsm-test/lsmtest5.c 8d5242a0f870d65eeada191c8945781fed9cb8ece3886573790ebd373b62dac5 F ext/lsm1/lsm-test/lsmtest6.c 869cb4a172cd07d1a75b3aeaecd61d0a477787b3b8668bad0d3ff0f43b642b7c F ext/lsm1/lsm-test/lsmtest7.c 7a917455a0f956a8ed3f44f5c9387ec0ea6627714874464cc3fa5c5a9cabb2f2 -F ext/lsm1/lsm-test/lsmtest8.c ab8c30c08540c7cd21e32b678e6c7090ae138c00faf84fdd0ba517361b710861 +F ext/lsm1/lsm-test/lsmtest8.c 589b68c44531a0f04d5e879bb1e211be5f7100f48eed7e8631e07ed5cbd68f94 F ext/lsm1/lsm-test/lsmtest9.c dd1a0ebf41134933a744d1e00e60429a2a21fc50d587ae7dd6bdb6e96d805bdc F ext/lsm1/lsm-test/lsmtest_bt.c d70d9a9be5eef9360af1251dd083948d74fd30137a08f61bef995f7ac04e037f F ext/lsm1/lsm-test/lsmtest_datasource.c 5d770be191d0ca51315926723009b2c25c0b4b8136840494ef710ac324aa916c @@ -1631,7 +1631,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 39069941e98605bc8c7c736819781761760ee2b83363471ceb6f19e5eb06b13a -R 6c08473ae2deed66303e72a4ddd28537 -U drh -Z 1abdfc4df47c311bf1af13a17928c267 +P 783100b801703577e35ec12fe7623e1797e49699f3b8deb0694ef061a142b844 +R ab6ba7417c8ef7732b2a8b211358e460 +U dan +Z df42a5b7a8146f5aa8e5ac6a01bf086c diff --git a/manifest.uuid b/manifest.uuid index 2cf2753188..def91d9740 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -783100b801703577e35ec12fe7623e1797e49699f3b8deb0694ef061a142b844 \ No newline at end of file +3e56a79ad8754e6da3181883154fa1c8b227a8d16c9b2a3eba925371595ae1f9 \ No newline at end of file