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:
@ -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){
|
||||||
|
14
manifest
14
manifest
@ -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
|
||||||
|
@ -1 +1 @@
|
|||||||
783100b801703577e35ec12fe7623e1797e49699f3b8deb0694ef061a142b844
|
3e56a79ad8754e6da3181883154fa1c8b227a8d16c9b2a3eba925371595ae1f9
|
Reference in New Issue
Block a user