Branch Coverage

pager.c
Criterion Covered Total %
branch 220 478 46.0


line true false branch
319 17 0 if( rc==SQLITE_OK && format>JOURNAL_FORMAT_1 ){
17 0 if( rc==SQLITE_OK && format>JOURNAL_FORMAT_1 ){
376 0 0 if( pPager->errMask & PAGER_ERR_LOCK ) rc = SQLITE_PROTOCOL;
377 0 0 if( pPager->errMask & PAGER_ERR_DISK ) rc = SQLITE_IOERR;
378 0 0 if( pPager->errMask & PAGER_ERR_FULL ) rc = SQLITE_FULL;
379 0 0 if( pPager->errMask & PAGER_ERR_MEM ) rc = SQLITE_NOMEM;
380 0 0 if( pPager->errMask & PAGER_ERR_CORRUPT ) rc = SQLITE_CORRUPT;
395 0 0 if( pPg->inCkpt ) return;
398 0 0 if( pPager->pCkpt ){
406 634 0 if( !pPg->inCkpt ) return;
407 0 0 if( pPg->pPrevCkpt ){
414 0 0 if( pPg->pNextCkpt ){
429 768 375 while( p && p->pgno!=pgno ){
0 768 while( p && p->pgno!=pgno ){
443 628 256 for(pPg=pPager->pAll; pPg; pPg=pNext){
453 0 256 if( pPager->state>=SQLITE_WRITELOCK ){
476 0 156 if( pPager->state
478 0 156 if( pPager->ckptOpen ){
482 98 58 if( pPager->journalOpen ){
488 321 98 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){
497 156 0 if( rc==SQLITE_OK ){
535 0 4 if( rc!=SQLITE_OK ) return rc;
537 0 4 if( rc!=SQLITE_OK ) return rc;
544 0 4 if( pgRec.pgno==0 ){
547 0 4 if( pgRec.pgno>(unsigned)pPager->dbSize ){
550 4 0 if( format>=JOURNAL_FORMAT_3 ){
552 0 4 if( rc ) return rc;
553 0 4 if( pager_cksum(pPager, pgRec.pgno, pgRec.aData)!=cksum ){
565 4 0 if( pPg ){
647 0 3 if( rc!=SQLITE_OK ){
657 0 3 if( szJ < sizeof(aMagic)+sizeof(Pgno) ){
665 0 3 if( rc!=SQLITE_OK ){
669 3 0 if( memcmp(aMagic, aJournalMagic3, sizeof(aMagic))==0 ){
671 0 0 }else if( memcmp(aMagic, aJournalMagic2, sizeof(aMagic))==0 ){
673 0 0 }else if( memcmp(aMagic, aJournalMagic1, sizeof(aMagic))==0 ){
679 3 0 if( format>=JOURNAL_FORMAT_3 ){
680 0 3 if( szJ < sizeof(aMagic) + 3*sizeof(u32) ){
690 0 3 if( rc ) goto end_playback;
692 0 3 if( rc ) goto end_playback;
693 3 0 if( nRec==0xffffffff || useJournalSize ){
3 0 if( nRec==0xffffffff || useJournalSize ){
701 0 3 if( rc!=SQLITE_OK ){
706 0 3 if( rc!=SQLITE_OK ){
713 4 3 for(i=0; i
715 0 4 if( rc!=SQLITE_OK ){
716 0 0 if( rc==SQLITE_DONE ){
727 3 0 if( rc==SQLITE_OK ){
729 7 3 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){
731 7 0 if( !pPg->dirty ) continue;
732 0 0 if( (int)pPg->pgno <= pPager->origDbSize ){
737 0 0 if( rc ) break;
741 0 0 if( pPg->nRef==0 || memcmp(zBuf, PGHDR_TO_DATA(pPg), SQLITE_PAGE_SIZE) ){
0 0 if( pPg->nRef==0 || memcmp(zBuf, PGHDR_TO_DATA(pPg), SQLITE_PAGE_SIZE) ){
751 0 3 if( rc!=SQLITE_OK ){
797 0 0 for(i=nRec-1; i>=0; i--){
800 0 0 if( rc!=SQLITE_OK ) goto end_ckpt_playback;
807 0 0 if( rc!=SQLITE_OK ){
811 0 0 if( rc!=SQLITE_OK ){
815 0 0 for(i=nRec-1; i>=0; i--){
817 0 0 if( rc!=SQLITE_OK ){
824 0 0 if( rc!=SQLITE_OK ){
842 54 0 if( mxPage>=0 ){
844 27 27 if( pPager->noSync==0 ) pPager->needSync = 0;
849 54 0 if( mxPage>10 ){
881 54 0 pPager->noSync = level==1 || pPager->tempFile;
27 27 pPager->noSync = level==1 || pPager->tempFile;
882 0 54 pPager->fullSync = level==3 && !pPager->tempFile;
0 0 pPager->fullSync = level==3 && !pPager->tempFile;
883 27 27 if( pPager->noSync==0 ) pPager->needSync = 0;
902 28 0 }while( cnt>0 && rc!=SQLITE_OK );
0 28 }while( cnt>0 && rc!=SQLITE_OK );
933 0 53 if( sqlite_malloc_failed ){
936 25 28 if( zFilename && zFilename[0] ){
25 0 if( zFilename && zFilename[0] ){
946 0 53 if( sqlite_malloc_failed ){
949 0 53 if( rc!=SQLITE_OK ){
955 0 53 if( pPager==0 ){
966 744 0 for(i=nameLen; i>0 && pPager->zDirectory[i-1]!='/'; i--){}
691 53 for(i=nameLen; i>0 && pPager->zDirectory[i-1]!='/'; i--){}
967 53 0 if( i>0 ) pPager->zDirectory[i-1] = 0;
981 53 0 pPager->mxPage = mxPage>5 ? mxPage : 10;
987 25 28 pPager->noSync = pPager->tempFile || !useJournal;
0 25 pPager->noSync = pPager->tempFile || !useJournal;
1016 565 259 if( pPager->dbSize>=0 ){
1019 0 259 if( sqliteOsFileSize(&pPager->fd, &n)!=SQLITE_OK ){
1024 259 0 if( pPager->state!=SQLITE_UNLOCK ){
1040 0 0 if( pPager->dbSize<0 ){
1043 0 0 if( pPager->errMask!=0 ){
1047 0 0 if( nPage>=(unsigned)pPager->dbSize ){
1052 0 0 if( rc==SQLITE_OK ){
1085 6 53 for(pPg=pPager->pAll; pPg; pPg=pNext){
1097 0 53 if( pPager->zFilename!=(char*)&pPager[1] ){
1122 60 0 if( pPg->nRef==0 ){
1124 15 45 if( pPg==pPg->pPager->pFirstSynced ){
1126 0 15 while( p && p->needSync ){ p = p->pNextFree; }
0 0 while( p && p->needSync ){ p = p->pNextFree; }
1129 37 23 if( pPg->pPrevFree ){
1134 32 28 if( pPg->pNextFree ){
1151 0 12 page_ref(pPg);
1182 68 23 if( pPager->needSync ){
1183 68 0 if( !pPager->tempFile ){
1203 0 68 if( pPager->fullSync ){
1206 0 0 if( rc!=0 ) return rc;
1210 0 68 if( rc ) return rc;
1217 0 68 if( rc!=0 ) return rc;
1224 257 68 for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){
1255 0 91 if( pList==0 ) return SQLITE_OK;
1257 225 91 while( pList ){
1264 0 225 if( rc ) return rc;
1279 304 91 for(p=pPager->pAll; p; p=p->pNextAll){
1280 225 79 if( p->dirty ){
1320 0 1356 if( pPager->errMask & ~(PAGER_ERR_FULL) ){
1327 259 1097 if( pPager->nRef==0 ){
1329 0 259 if( rc!=SQLITE_OK ){
1336 256 3 if( pPager->useJournal && sqliteOsFileExists(pPager->zJournal) ){
0 256 if( pPager->useJournal && sqliteOsFileExists(pPager->zJournal) ){
1342 0 0 if( rc!=SQLITE_OK ){
1343 0 0 if( sqliteOsUnlock(&pPager->fd)!=SQLITE_OK ){
1360 0 0 if( rc!=SQLITE_OK ){
1372 0 0 if( rc!=SQLITE_OK ){
1381 634 722 if( pPg==0 ){
1385 0 634 if( pPager->nPagemxPage || pPager->pFirst==0 ){
0 0 if( pPager->nPagemxPage || pPager->pFirst==0 ){
1389 0 634 if( pPg==0 ){
1397 375 259 if( pPager->pAll ){
1414 0 0 if( pPg==0 ){
1416 0 0 if( rc!=0 ){
1426 0 0 if( pPg->dirty ){
1430 0 0 if( rc!=SQLITE_OK ){
1445 0 0 if( pPg->alwaysRollback ){
1451 0 0 if( pPg==pPager->pFirstSynced ){
1453 0 0 while( p && p->needSync ){ p = p->pNextFree; }
0 0 while( p && p->needSync ){ p = p->pNextFree; }
1456 0 0 if( pPg->pPrevFree ){
1462 0 0 if( pPg->pNextFree ){
1469 0 0 if( pPg->pNextHash ){
1472 0 0 if( pPg->pPrevHash ){
1483 221 413 if( pPager->aInJournal && (int)pgno<=pPager->origDbSize ){
145 76 if( pPager->aInJournal && (int)pgno<=pPager->origDbSize ){
1492 0 634 if( pPager->aInCkpt && (int)pgno<=pPager->ckptSize
0 0 if( pPager->aInCkpt && (int)pgno<=pPager->ckptSize
1493 0 0 && (pPager->aInCkpt[pgno/8] & (1<<(pgno&7)))!=0 ){
1505 0 634 if( pPg->pNextHash ){
1509 634 0 if( pPager->nExtra>0 ){
1512 259 375 if( pPager->dbSize<0 ) sqlitepager_pagecount(pPager);
1513 0 634 if( pPager->errMask!=0 ){
1518 166 468 if( pPager->dbSize<(int)pgno ){
1526 0 468 if( rc!=SQLITE_OK ){
1528 0 0 if( sqliteOsFileSize(&pPager->fd,&fileSize)!=SQLITE_OK
1529 0 0 || fileSize>=pgno*SQLITE_PAGE_SIZE ){
1540 60 662 page_ref(pPg);
1562 0 2 if( pPager->errMask & ~(PAGER_ERR_FULL) ){
1570 0 2 if( pPg==0 ) return 0;
1571 0 2 page_ref(pPg);
1596 691 676 if( pPg->nRef==0 ){
1602 409 282 if( pPg->pPrevFree ){
1607 493 198 if( pPg->needSync==0 && pPager->pFirstSynced==0 ){
215 278 if( pPg->needSync==0 && pPager->pFirstSynced==0 ){
1610 691 0 if( pPager->xDestructor ){
1619 256 435 if( pPager->nRef==0 ){
1640 0 98 if( pPager->aInJournal==0 ){
1646 0 98 if( rc!=SQLITE_OK ){
1659 0 98 if( pPager->errMask!=0 ){
1666 98 0 if( rc==SQLITE_OK ){
1667 23 75 rc = write32bits(&pPager->jfd, pPager->noSync ? 0xffffffff : 0);
1669 98 0 if( rc==SQLITE_OK ){
1679 98 0 if( rc==SQLITE_OK ){
1682 0 98 if( pPager->ckptAutoopen && rc==SQLITE_OK ){
0 0 if( pPager->ckptAutoopen && rc==SQLITE_OK ){
1685 0 98 if( rc!=SQLITE_OK ){
1687 0 0 if( rc==SQLITE_OK ){
1720 156 279 if( pPager->state==SQLITE_READLOCK ){
1723 0 156 if( rc!=SQLITE_OK ){
1729 153 3 if( pPager->useJournal && !pPager->tempFile ){
75 78 if( pPager->useJournal && !pPager->tempFile ){
1760 0 426 if( pPager->errMask ){
1763 0 426 if( pPager->readOnly ){
1771 147 279 if( pPg->inJournal && (pPg->inCkpt || pPager->ckptInUse==0) ){
147 0 if( pPg->inJournal && (pPg->inCkpt || pPager->ckptInUse==0) ){
147 0 if( pPg->inJournal && (pPg->inCkpt || pPager->ckptInUse==0) ){
1785 0 279 if( rc!=SQLITE_OK ){
1789 55 224 if( !pPager->journalOpen && pPager->useJournal ){
23 32 if( !pPager->journalOpen && pPager->useJournal ){
1791 0 23 if( rc!=SQLITE_OK ) return rc;
1800 279 0 if( !pPg->inJournal && pPager->useJournal ){
247 32 if( !pPg->inJournal && pPager->useJournal ){
1801 130 117 if( (int)pPg->pgno <= pPager->origDbSize ){
1820 0 130 if( rc!=SQLITE_OK ){
1830 0 130 if( pPager->ckptInUse ){
1835 117 0 pPg->needSync = !pPager->journalStarted && !pPager->noSync;
72 45 pPg->needSync = !pPager->journalStarted && !pPager->noSync;
1838 200 47 if( pPg->needSync ){
1848 0 279 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
0 0 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
0 0 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
1855 0 0 if( rc!=SQLITE_OK ){
1868 106 173 if( pPager->dbSize<(int)pPg->pgno ){
1893 0 0 if( rc==SQLITE_OK ){
1895 0 0 if( rc==SQLITE_OK ){
1932 40 0 if( pPg && pPg->dirty ){
8 32 if( pPg && pPg->dirty ){
1933 0 8 if( pPager->dbSize==(int)pPg->pgno && pPager->origDbSizedbSize ){
0 0 if( pPager->dbSize==(int)pPg->pgno && pPager->origDbSizedbSize ){
1959 7 0 if( pPager->state!=SQLITE_WRITELOCK || pPager->journalOpen==0 ) return;
0 7 if( pPager->state!=SQLITE_WRITELOCK || pPager->journalOpen==0 ) return;
1960 7 0 if( pPg->alwaysRollback || pPager->alwaysRollback ) return;
0 7 if( pPg->alwaysRollback || pPager->alwaysRollback ) return;
1961 7 0 if( !pPg->inJournal && (int)pPg->pgno <= pPager->origDbSize ){
7 0 if( !pPg->inJournal && (int)pPg->pgno <= pPager->origDbSize ){
1965 0 7 if( pPager->ckptInUse ){
1971 0 7 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
0 0 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
0 0 if( pPager->ckptInUse && !pPg->inCkpt && (int)pPg->pgno<=pPager->ckptSize ){
1990 0 143 if( pPager->errMask==PAGER_ERR_FULL ){
1992 0 0 if( rc==SQLITE_OK ){
1997 0 143 if( pPager->errMask!=0 ){
2001 0 143 if( pPager->state!=SQLITE_WRITELOCK ){
2005 52 91 if( pPager->dirtyFile==0 ){
2015 0 91 if( rc!=SQLITE_OK ){
2019 91 0 if( pPg ){
2021 91 0 if( rc || (!pPager->noSync && sqliteOsSync(&pPager->fd)!=SQLITE_OK) ){
68 23 if( rc || (!pPager->noSync && sqliteOsSync(&pPager->fd)!=SQLITE_OK) ){
68 0 if( rc || (!pPager->noSync && sqliteOsSync(&pPager->fd)!=SQLITE_OK) ){
2033 0 0 if( rc==SQLITE_OK ){
2054 6 7 if( !pPager->dirtyFile || !pPager->journalOpen ){
3 3 if( !pPager->dirtyFile || !pPager->journalOpen ){
2060 0 3 if( pPager->errMask!=0 && pPager->errMask!=PAGER_ERR_FULL ){
0 0 if( pPager->errMask!=0 && pPager->errMask!=PAGER_ERR_FULL ){
2061 0 0 if( pPager->state>=SQLITE_WRITELOCK ){
2066 0 3 if( pPager->state!=SQLITE_WRITELOCK ){
2070 0 3 if( rc!=SQLITE_OK ){
2113 0 0 if( !pPager->journalOpen ){
2120 0 0 if( pPager->aInCkpt==0 ){
2133 0 0 if( !pPager->ckptOpen ){
2135 0 0 if( rc ) goto ckpt_begin_failed;
2143 0 0 if( pPager->aInCkpt ){
2154 0 156 if( pPager->ckptInUse ){
2162 0 0 for(pPg=pPager->pCkpt; pPg; pPg=pNext){
2179 0 0 if( pPager->ckptInUse ){