1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Adjust copy_file() lsmtest function so it works properly for locked database files on Win32.

FossilOrigin-Name: 54a3855583deac93c955ed77fe82be6a6b7aadd3fdb7e6b895888e2a4ff530bd
This commit is contained in:
mistachkin
2017-07-07 20:35:14 +00:00
parent 08f1efeb16
commit 1d91e9f26a
4 changed files with 29 additions and 19 deletions

View File

@ -257,7 +257,7 @@ void testDeleteLsmdb(const char *zFile){
testFree(zShm); testFree(zShm);
} }
static void copy_file(const char *zFrom, const char *zTo){ static void copy_file(const char *zFrom, const char *zTo, int isDatabase){
if( access(zFrom, F_OK) ){ if( access(zFrom, F_OK) ){
unlink(zTo); unlink(zTo);
@ -278,9 +278,15 @@ static void copy_file(const char *zFrom, const char *zTo){
aBuf = testMalloc(4096); aBuf = testMalloc(4096);
for(i=0; i<sz; i+=4096){ for(i=0; i<sz; i+=4096){
int nByte = MIN(4096, sz - i); int bLockPage = isDatabase && i == 0;
int nByte = MIN((bLockPage ? 4066 : 4096), sz - i);
memset(aBuf, 0, 4096);
read(fd1, aBuf, nByte); read(fd1, aBuf, nByte);
write(fd2, aBuf, nByte); write(fd2, aBuf, nByte);
if( bLockPage ){
lseek(fd1, 4096, SEEK_SET);
lseek(fd2, 4096, SEEK_SET);
}
} }
testFree(aBuf); testFree(aBuf);
@ -298,9 +304,9 @@ void testCopyLsmdb(const char *zFrom, const char *zTo){
unlink(zShm2); unlink(zShm2);
unlink(zLog2); unlink(zLog2);
unlink(zTo); unlink(zTo);
copy_file(zFrom, zTo); copy_file(zFrom, zTo, 1);
copy_file(zLog1, zLog2); copy_file(zLog1, zLog2, 0);
copy_file(zShm1, zShm2); copy_file(zShm1, zShm2, 0);
testFree(zLog1); testFree(zLog2); testFree(zShm1); testFree(zShm2); testFree(zLog1); testFree(zLog2); testFree(zShm1); testFree(zShm2);
} }
@ -322,8 +328,8 @@ void testSaveDb(const char *zFile, const char *zAux){
unlink(zFileSave); unlink(zFileSave);
unlink(zLogSave); unlink(zLogSave);
copy_file(zFile, zFileSave); copy_file(zFile, zFileSave, 1);
copy_file(zLog, zLogSave); copy_file(zLog, zLogSave, 0);
testFree(zLog); testFree(zFileSave); testFree(zLogSave); testFree(zLog); testFree(zFileSave); testFree(zLogSave);
} }
@ -341,8 +347,8 @@ void testRestoreDb(const char *zFile, const char *zAux){
char *zFileSave = testMallocPrintf("%s-save", zFile); char *zFileSave = testMallocPrintf("%s-save", zFile);
char *zLogSave = testMallocPrintf("%s-%s-save", zFile, zAux); char *zLogSave = testMallocPrintf("%s-%s-save", zFile, zAux);
copy_file(zFileSave, zFile); copy_file(zFileSave, zFile, 1);
copy_file(zLogSave, zLog); copy_file(zLogSave, zLog, 0);
testFree(zLog); testFree(zFileSave); testFree(zLogSave); testFree(zLog); testFree(zFileSave); testFree(zLogSave);
} }

View File

@ -11,6 +11,7 @@
#ifndef _WIN32 #ifndef _WIN32
# include <unistd.h> # include <unistd.h>
#endif #endif
#include <stdlib.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
@ -1522,6 +1523,10 @@ int main(int argc, char **argv){
const char *zReport = "malloc.txt NOT generated"; const char *zReport = "malloc.txt NOT generated";
#endif #endif
#if defined(_MSC_VER) || defined(__MSVCRT__)
_set_fmode(_O_BINARY);
#endif
testMallocInstall(tdb_lsm_env()); testMallocInstall(tdb_lsm_env());
if( argc<2 ){ if( argc<2 ){

View File

@ -1,5 +1,5 @@
C Add\sthe\s"PRAGMA\ssecure_delete=FAST"\soption,\swhich\soverwrites\smost\sdeleted\ncontent\swithout\sincreasing\sthe\samount\sof\sI/O.\s\sDeleted\scontent\smight\spersist\non\sthe\sfree\spage\slist,\showever.\s\sAnd\sextra\sCPU\scycles\sare\sused\sfor\szeroing,\nof\scourse. C Adjust\scopy_file()\slsmtest\sfunction\sso\sit\sworks\sproperly\sfor\slocked\sdatabase\sfiles\son\sWin32.
D 2017-07-07T20:06:28.516 D 2017-07-07T20:35:14.495
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
@ -218,7 +218,7 @@ F ext/lsm1/lsm-test/lsmtest2.c 188b09aec776516aeedcfd13b9c6faf85ba16b3671a0897a2
F ext/lsm1/lsm-test/lsmtest3.c 9ab87528a36dbf4a61d7c8ad954f5ee368c0878c127b84b942b2e2abe522de26 F ext/lsm1/lsm-test/lsmtest3.c 9ab87528a36dbf4a61d7c8ad954f5ee368c0878c127b84b942b2e2abe522de26
F ext/lsm1/lsm-test/lsmtest4.c d258d6a245db5d8eaede096e2368d23f859c5e92c80ab9122463f708514fe10c F ext/lsm1/lsm-test/lsmtest4.c d258d6a245db5d8eaede096e2368d23f859c5e92c80ab9122463f708514fe10c
F ext/lsm1/lsm-test/lsmtest5.c 8d5242a0f870d65eeada191c8945781fed9cb8ece3886573790ebd373b62dac5 F ext/lsm1/lsm-test/lsmtest5.c 8d5242a0f870d65eeada191c8945781fed9cb8ece3886573790ebd373b62dac5
F ext/lsm1/lsm-test/lsmtest6.c 1f21509ea5d2b28b74539c2a70b8001619d0713091511067278f57871f4b753a F ext/lsm1/lsm-test/lsmtest6.c dd27f91675c54892d34f2335e7d7f581dda56d3426177d37804a986dbc076f48
F ext/lsm1/lsm-test/lsmtest7.c 7a917455a0f956a8ed3f44f5c9387ec0ea6627714874464cc3fa5c5a9cabb2f2 F ext/lsm1/lsm-test/lsmtest7.c 7a917455a0f956a8ed3f44f5c9387ec0ea6627714874464cc3fa5c5a9cabb2f2
F ext/lsm1/lsm-test/lsmtest8.c b87a1279b0cfbb39df1fff50074696fbf5d83822349f65706fab6d618a7a52fa F ext/lsm1/lsm-test/lsmtest8.c b87a1279b0cfbb39df1fff50074696fbf5d83822349f65706fab6d618a7a52fa
F ext/lsm1/lsm-test/lsmtest9.c dd1a0ebf41134933a744d1e00e60429a2a21fc50d587ae7dd6bdb6e96d805bdc F ext/lsm1/lsm-test/lsmtest9.c dd1a0ebf41134933a744d1e00e60429a2a21fc50d587ae7dd6bdb6e96d805bdc
@ -226,7 +226,7 @@ F ext/lsm1/lsm-test/lsmtest_bt.c d70d9a9be5eef9360af1251dd083948d74fd30137a08f61
F ext/lsm1/lsm-test/lsmtest_datasource.c 5d770be191d0ca51315926723009b2c25c0b4b8136840494ef710ac324aa916c F ext/lsm1/lsm-test/lsmtest_datasource.c 5d770be191d0ca51315926723009b2c25c0b4b8136840494ef710ac324aa916c
F ext/lsm1/lsm-test/lsmtest_func.c 159aa401bc8032bfa3d8cf2977bd687abebab880255895a5eb45770d626fa38d F ext/lsm1/lsm-test/lsmtest_func.c 159aa401bc8032bfa3d8cf2977bd687abebab880255895a5eb45770d626fa38d
F ext/lsm1/lsm-test/lsmtest_io.c ba678e052f497b4c2ff41d47672a1f2a02f495d14083845ee66e0bda678f5b80 F ext/lsm1/lsm-test/lsmtest_io.c ba678e052f497b4c2ff41d47672a1f2a02f495d14083845ee66e0bda678f5b80
F ext/lsm1/lsm-test/lsmtest_main.c f1d18e3a3e9315ec4198901a11c9d2ec6cb96d1a40089fd60b6a64e0b6b8db35 F ext/lsm1/lsm-test/lsmtest_main.c d0a7f9fe1119b0b347ec21908276bae60e0003dd0cba6634bfabcaa71b6db3e4
F ext/lsm1/lsm-test/lsmtest_mem.c c2980abdbc5024628d10910acb703354f2606b4a6f9624679da4e9a56bcee3e9 F ext/lsm1/lsm-test/lsmtest_mem.c c2980abdbc5024628d10910acb703354f2606b4a6f9624679da4e9a56bcee3e9
F ext/lsm1/lsm-test/lsmtest_tdb.c e46c3f44880d45fd444daf2b2a53bca7a64f9df3f6480cbb1b47a039cc95626a F ext/lsm1/lsm-test/lsmtest_tdb.c e46c3f44880d45fd444daf2b2a53bca7a64f9df3f6480cbb1b47a039cc95626a
F ext/lsm1/lsm-test/lsmtest_tdb.h 8733eee249b12956a9df8322994b43d19bd8c02ad2e8b0bb5164db4d6ccc1735 F ext/lsm1/lsm-test/lsmtest_tdb.h 8733eee249b12956a9df8322994b43d19bd8c02ad2e8b0bb5164db4d6ccc1735
@ -1628,8 +1628,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 732f90d6327c5c6368fc8b4cc207bd644ef08e3ae6d2e7295258ab099deaba63 f1682f0faf1a93ded066464b1ddd5f987e21ee0f6bb5e828ed31c3ad903cf2c3 P 38978ce65b280bb7cba3fc08ba91485fb1b84cd9fbba2e950ecf41c021ff452a
R 1f238fbce697fb2308131c37c5985e85 R 1560fcde20282350646516a96135e121
T +closed f1682f0faf1a93ded066464b1ddd5f987e21ee0f6bb5e828ed31c3ad903cf2c3 U mistachkin
U drh Z d23b91b5991a79a51cd11ccd5641741c
Z c2c4f30ab3360a9e7249032b4e3580ff

View File

@ -1 +1 @@
38978ce65b280bb7cba3fc08ba91485fb1b84cd9fbba2e950ecf41c021ff452a 54a3855583deac93c955ed77fe82be6a6b7aadd3fdb7e6b895888e2a4ff530bd