diff options
author | drh <drh@noemail.net> | 2017-05-29 17:59:29 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2017-05-29 17:59:29 +0000 |
commit | 1e669f02bc57b22afd05e8e1ff4812f7e7ed9b89 (patch) | |
tree | 475af6aad5f53d9e72a390a4613ca8d4164e6312 /src | |
parent | 8c9ed054b3c6b8312d0f099af2e6757decce692b (diff) | |
parent | 77f6af2b9600a30936abf9901a813f08e0c1056c (diff) | |
download | sqlite-1e669f02bc57b22afd05e8e1ff4812f7e7ed9b89.tar.gz sqlite-1e669f02bc57b22afd05e8e1ff4812f7e7ed9b89.zip |
Omit unnecessary fstat() calls for determining the database file size,
resulting in smaller and faster code.
FossilOrigin-Name: dd61c736775c53450821327495276485dced7935d0b4b5ebd17662731afc8adb
Diffstat (limited to 'src')
-rw-r--r-- | src/pager.c | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/pager.c b/src/pager.c index cdc5751e8..aee50e531 100644 --- a/src/pager.c +++ b/src/pager.c @@ -3304,23 +3304,21 @@ static int pagerOpenWalIfPresent(Pager *pPager){ if( !pPager->tempFile ){ int isWal; /* True if WAL file exists */ - Pgno nPage; /* Size of the database file */ - - rc = pagerPagecount(pPager, &nPage); - if( rc ) return rc; - if( nPage==0 ){ - rc = sqlite3OsDelete(pPager->pVfs, pPager->zWal, 0); - if( rc==SQLITE_IOERR_DELETE_NOENT ) rc = SQLITE_OK; - isWal = 0; - }else{ - rc = sqlite3OsAccess( - pPager->pVfs, pPager->zWal, SQLITE_ACCESS_EXISTS, &isWal - ); - } + rc = sqlite3OsAccess( + pPager->pVfs, pPager->zWal, SQLITE_ACCESS_EXISTS, &isWal + ); if( rc==SQLITE_OK ){ if( isWal ){ - testcase( sqlite3PcachePagecount(pPager->pPCache)==0 ); - rc = sqlite3PagerOpenWal(pPager, 0); + Pgno nPage; /* Size of the database file */ + + rc = pagerPagecount(pPager, &nPage); + if( rc ) return rc; + if( nPage==0 ){ + rc = sqlite3OsDelete(pPager->pVfs, pPager->zWal, 0); + }else{ + testcase( sqlite3PcachePagecount(pPager->pPCache)==0 ); + rc = sqlite3PagerOpenWal(pPager, 0); + } }else if( pPager->journalMode==PAGER_JOURNALMODE_WAL ){ pPager->journalMode = PAGER_JOURNALMODE_DELETE; } @@ -5263,19 +5261,14 @@ int sqlite3PagerSharedLock(Pager *pPager){ ** detected. The chance of an undetected change is so small that ** it can be neglected. */ - Pgno nPage = 0; char dbFileVers[sizeof(pPager->dbFileVers)]; - rc = pagerPagecount(pPager, &nPage); - if( rc ) goto failed; - - if( nPage>0 ){ - IOTRACE(("CKVERS %p %d\n", pPager, sizeof(dbFileVers))); - rc = sqlite3OsRead(pPager->fd, &dbFileVers, sizeof(dbFileVers), 24); - if( rc!=SQLITE_OK && rc!=SQLITE_IOERR_SHORT_READ ){ + IOTRACE(("CKVERS %p %d\n", pPager, sizeof(dbFileVers))); + rc = sqlite3OsRead(pPager->fd, &dbFileVers, sizeof(dbFileVers), 24); + if( rc!=SQLITE_OK ){ + if( rc!=SQLITE_IOERR_SHORT_READ ){ goto failed; } - }else{ memset(dbFileVers, 0, sizeof(dbFileVers)); } |