diff options
author | drh <drh@noemail.net> | 2013-12-13 19:48:04 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2013-12-13 19:48:04 +0000 |
commit | 16f9a81125792f2356b91a7fc966e1943fbbbf5e (patch) | |
tree | 037177f891afae165ad40da0b16773764a00945b /src | |
parent | da8a330a03671577a982a5f1769d49f4016c1bb9 (diff) | |
download | sqlite-16f9a81125792f2356b91a7fc966e1943fbbbf5e.tar.gz sqlite-16f9a81125792f2356b91a7fc966e1943fbbbf5e.zip |
Reduce the number of calls to the subjRequiresPage() routine inside of pager.
FossilOrigin-Name: e50ff39a93a51b5a5be4f0e82a76104b81c9e2a4
Diffstat (limited to 'src')
-rw-r--r-- | src/pager.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/pager.c b/src/pager.c index caa41fe9e..c1675b73e 100644 --- a/src/pager.c +++ b/src/pager.c @@ -1024,15 +1024,12 @@ static char *print_pager_state(Pager *p){ static int subjRequiresPage(PgHdr *pPg){ Pager *pPager = pPg->pPager; PagerSavepoint *p; - Pgno pgno; + Pgno pgno = pPg->pgno; int i; - if( pPager->nSavepoint ){ - pgno = pPg->pgno; - for(i=0; i<pPager->nSavepoint; i++){ - p = &pPager->aSavepoint[i]; - if( p->nOrig>=pgno && 0==sqlite3BitvecTest(p->pInSavepoint, pgno) ){ - return 1; - } + for(i=0; i<pPager->nSavepoint; i++){ + p = &pPager->aSavepoint[i]; + if( p->nOrig>=pgno && 0==sqlite3BitvecTest(p->pInSavepoint, pgno) ){ + return 1; } } return 0; @@ -5677,7 +5674,7 @@ static int pager_write(PgHdr *pPg){ ** to the journal then we can return right away. */ sqlite3PcacheMakeDirty(pPg); - if( pageInJournal(pPg) && !subjRequiresPage(pPg) ){ + if( pageInJournal(pPg) && (pPager->nSavepoint==0 || !subjRequiresPage(pPg)) ){ assert( !pagerUseWal(pPager) ); }else{ |