1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Fix a problem in an lsmtest test case caused by writing data in "text" mode

instead of "binary".

FossilOrigin-Name: 3e56a79ad8754e6da3181883154fa1c8b227a8d16c9b2a3eba925371595ae1f9
This commit is contained in:
dan
2017-07-12 14:03:13 +00:00
parent f0f44b79c9
commit 47ebd4cadd
3 changed files with 50 additions and 48 deletions

View File

@ -85,7 +85,7 @@ static void setupDatabase1(TestDb *pDb, Datasource **ppData){
void testReadFile(const char *zFile, int iOff, void *pOut, int nByte, int *pRc){ void testReadFile(const char *zFile, int iOff, void *pOut, int nByte, int *pRc){
if( *pRc==0 ){ if( *pRc==0 ){
FILE *fd; FILE *fd;
fd = fopen(zFile, "r"); fd = fopen(zFile, "rb");
if( fd==0 ){ if( fd==0 ){
*pRc = 1; *pRc = 1;
}else{ }else{
@ -111,7 +111,7 @@ void testWriteFile(
){ ){
if( *pRc==0 ){ if( *pRc==0 ){
FILE *fd; FILE *fd;
fd = fopen(zFile, "r+"); fd = fopen(zFile, "r+b");
if( fd==0 ){ if( fd==0 ){
*pRc = 1; *pRc = 1;
}else{ }else{
@ -157,50 +157,52 @@ static ShmHeader *getShmHeader(const char *zDb){
** 5) Check once more that the checksum is still zCksum. ** 5) Check once more that the checksum is still zCksum.
*/ */
static void doLiveRecovery(const char *zDb, const char *zCksum, int *pRc){ static void doLiveRecovery(const char *zDb, const char *zCksum, int *pRc){
const DatasourceDefn defn = {TEST_DATASOURCE_RANDOM, 20, 25, 100, 500}; if( *pRc==LSM_OK ){
Datasource *pData; const DatasourceDefn defn = {TEST_DATASOURCE_RANDOM, 20, 25, 100, 500};
const char *zCopy = "testcopy.lsm"; Datasource *pData;
char zCksum2[TEST_CKSUM_BYTES]; const char *zCopy = "testcopy.lsm";
TestDb *pDb = 0; char zCksum2[TEST_CKSUM_BYTES];
int rc; TestDb *pDb = 0;
int rc;
pData = testDatasourceNew(&defn); 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);
/* 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);
testCopyLsmdb(zDb, zCopy);
rc = tdb_lsm_open("test_no_recovery=1", zCopy, 0, &pDb);
if( rc==0 ){ if( rc==0 ){
int nBuf = 64; ShmHeader *pHdr;
db = tdb_lsm(pDb); lsm_db *db;
lsm_config(db, LSM_CONFIG_AUTOFLUSH, &nBuf); testCksumDatabase(pDb, zCksum2);
lsm_begin(db, 1); testCompareStr(zCksum, zCksum2, &rc);
lsm_commit(db, 0);
rc = lsm_work(db, 0, 0, 0); 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); testDatasourceFree(pData);
testCompareStr(zCksum, zCksum2, &rc); testClose(&pDb);
testDeleteLsmdb(zCopy);
*pRc = rc;
} }
testDatasourceFree(pData);
testClose(&pDb);
testDeleteLsmdb(zCopy);
*pRc = rc;
} }
static void doWriterCrash1(int *pRc){ static void doWriterCrash1(int *pRc){

View File

@ -1,5 +1,5 @@
C Compile\scleanly\swith\sSQLITE_OMIT_UTF16. C Fix\sa\sproblem\sin\san\slsmtest\stest\scase\scaused\sby\swriting\sdata\sin\s"text"\smode\ninstead\sof\s"binary".
D 2017-07-12T12:19:33.990 D 2017-07-12T14:03:13.542
F Makefile.in 081e48dfe7f995d57ce1a88ddf4d2917b4349158648a6cd45b42beae30de3a12 F Makefile.in 081e48dfe7f995d57ce1a88ddf4d2917b4349158648a6cd45b42beae30de3a12
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 20850e3e8d4d4791e0531955852d768eb06f24138214870d543abb1a47346fba 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/lsmtest5.c 8d5242a0f870d65eeada191c8945781fed9cb8ece3886573790ebd373b62dac5
F ext/lsm1/lsm-test/lsmtest6.c 869cb4a172cd07d1a75b3aeaecd61d0a477787b3b8668bad0d3ff0f43b642b7c F ext/lsm1/lsm-test/lsmtest6.c 869cb4a172cd07d1a75b3aeaecd61d0a477787b3b8668bad0d3ff0f43b642b7c
F ext/lsm1/lsm-test/lsmtest7.c 7a917455a0f956a8ed3f44f5c9387ec0ea6627714874464cc3fa5c5a9cabb2f2 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/lsmtest9.c dd1a0ebf41134933a744d1e00e60429a2a21fc50d587ae7dd6bdb6e96d805bdc
F ext/lsm1/lsm-test/lsmtest_bt.c d70d9a9be5eef9360af1251dd083948d74fd30137a08f61bef995f7ac04e037f F ext/lsm1/lsm-test/lsmtest_bt.c d70d9a9be5eef9360af1251dd083948d74fd30137a08f61bef995f7ac04e037f
F ext/lsm1/lsm-test/lsmtest_datasource.c 5d770be191d0ca51315926723009b2c25c0b4b8136840494ef710ac324aa916c 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.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P 39069941e98605bc8c7c736819781761760ee2b83363471ceb6f19e5eb06b13a P 783100b801703577e35ec12fe7623e1797e49699f3b8deb0694ef061a142b844
R 6c08473ae2deed66303e72a4ddd28537 R ab6ba7417c8ef7732b2a8b211358e460
U drh U dan
Z 1abdfc4df47c311bf1af13a17928c267 Z df42a5b7a8146f5aa8e5ac6a01bf086c

View File

@ -1 +1 @@
783100b801703577e35ec12fe7623e1797e49699f3b8deb0694ef061a142b844 3e56a79ad8754e6da3181883154fa1c8b227a8d16c9b2a3eba925371595ae1f9