From: dan Date: Fri, 28 Jan 2011 15:07:55 +0000 (+0000) Subject: When extending a database file, do so by writing one or more page-size chunks of... X-Git-Tag: version-3.7.5~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb3828c25f95112214905e09cff788553a2aa61f;p=thirdparty%2Fsqlite.git When extending a database file, do so by writing one or more page-size chunks of data to the file, instead of just a single byte to the end. FossilOrigin-Name: 58577135a81d3f19667b1de6167d2e3f1b74cd53 --- diff --git a/manifest b/manifest index 5a8fd8dea0..1a0fcdfffb 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C SQLite\sversion\s3.7.5\srelease\scandidate\s1 -D 2011-01-27T14:35:01.967 +C When\sextending\sa\sdatabase\sfile,\sdo\sso\sby\swriting\sone\sor\smore\spage-size\schunks\sof\sdata\sto\sthe\sfile,\sinstead\sof\sjust\sa\ssingle\sbyte\sto\sthe\send. +D 2011-01-28T15:07:56 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in de6498556d536ae60bb8bb10e8c1ba011448658c F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -165,7 +162,7 @@ F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f F src/os_os2.c 2e452c9f2ca507623ad351c33a8a8b27849b1863 F src/os_unix.c 1be46a35bad4bec5171e4de88aaff817260eb378 F src/os_win.c 9abdcdd925416d854eabb0996c96debd92abfef5 -F src/pager.c 37696d876b1c23aa95d8ad7e4afd72d8675984fa +F src/pager.c 3327c903932466adead8b4f4e9c6e5f958cae2a9 F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76 F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58 F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa @@ -900,14 +897,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 6f2c72a0f6579db3f40c079436ca40e3e52bd6d9 -R 59a65e1de1a8ae7d9445e2c547dd8236 -U drh -Z 98b20f33ccda8aca8fd5329534c7e6b1 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFNQYKZoxKgR168RlERAoZXAJwJ1Csq9EFTXieXNgpSf4QMSqUs5QCfcNG/ -DEbh0HvWPBsaT4iBPcr+lKE= -=bDRk ------END PGP SIGNATURE----- +P 35ac78f55159705af140b949ee33852aedd62816 +R 5a38d0e5da35229b881ee437e0399faf +U dan +Z ba9abebf804867e3ebdd758398513a6b diff --git a/manifest.uuid b/manifest.uuid index dcf56e3c0c..48857721c8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -35ac78f55159705af140b949ee33852aedd62816 \ No newline at end of file +58577135a81d3f19667b1de6167d2e3f1b74cd53 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 28cf452546..1378323126 100644 --- a/src/pager.c +++ b/src/pager.c @@ -2485,7 +2485,12 @@ static int pager_truncate(Pager *pPager, Pgno nPage){ if( currentSize>newSize ){ rc = sqlite3OsTruncate(pPager->fd, newSize); }else{ - rc = sqlite3OsWrite(pPager->fd, "", 1, newSize-1); + char *pTmp = pPager->pTmpSpace; + memset(pTmp, 0, pPager->pageSize); + while( currentSizefd, pTmp, pPager->pageSize, currentSize); + currentSize += pPager->pageSize; + } } if( rc==SQLITE_OK ){ pPager->dbFileSize = nPage;