Lines Matching refs:pCheck
10154 IntegrityCk *pCheck, in checkAppendMsg() argument
10159 if( !pCheck->mxErr ) return; in checkAppendMsg()
10160 pCheck->mxErr--; in checkAppendMsg()
10161 pCheck->nErr++; in checkAppendMsg()
10163 if( pCheck->errMsg.nChar ){ in checkAppendMsg()
10164 sqlite3_str_append(&pCheck->errMsg, "\n", 1); in checkAppendMsg()
10166 if( pCheck->zPfx ){ in checkAppendMsg()
10167 sqlite3_str_appendf(&pCheck->errMsg, pCheck->zPfx, pCheck->v1, pCheck->v2); in checkAppendMsg()
10169 sqlite3_str_vappendf(&pCheck->errMsg, zFormat, ap); in checkAppendMsg()
10171 if( pCheck->errMsg.accError==SQLITE_NOMEM ){ in checkAppendMsg()
10172 pCheck->bOomFault = 1; in checkAppendMsg()
10183 static int getPageReferenced(IntegrityCk *pCheck, Pgno iPg){ in getPageReferenced() argument
10184 assert( iPg<=pCheck->nPage && sizeof(pCheck->aPgRef[0])==1 ); in getPageReferenced()
10185 return (pCheck->aPgRef[iPg/8] & (1 << (iPg & 0x07))); in getPageReferenced()
10191 static void setPageReferenced(IntegrityCk *pCheck, Pgno iPg){ in setPageReferenced() argument
10192 assert( iPg<=pCheck->nPage && sizeof(pCheck->aPgRef[0])==1 ); in setPageReferenced()
10193 pCheck->aPgRef[iPg/8] |= (1 << (iPg & 0x07)); in setPageReferenced()
10205 static int checkRef(IntegrityCk *pCheck, Pgno iPage){ in checkRef() argument
10206 if( iPage>pCheck->nPage || iPage==0 ){ in checkRef()
10207 checkAppendMsg(pCheck, "invalid page number %d", iPage); in checkRef()
10210 if( getPageReferenced(pCheck, iPage) ){ in checkRef()
10211 checkAppendMsg(pCheck, "2nd reference to page %d", iPage); in checkRef()
10214 if( AtomicLoad(&pCheck->db->u1.isInterrupted) ) return 1; in checkRef()
10215 setPageReferenced(pCheck, iPage); in checkRef()
10226 IntegrityCk *pCheck, /* Integrity check context */ in checkPtrmap() argument
10235 rc = ptrmapGet(pCheck->pBt, iChild, &ePtrmapType, &iPtrmapParent); in checkPtrmap()
10237 if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ) pCheck->bOomFault = 1; in checkPtrmap()
10238 checkAppendMsg(pCheck, "Failed to read ptrmap key=%d", iChild); in checkPtrmap()
10243 checkAppendMsg(pCheck, in checkPtrmap()
10255 IntegrityCk *pCheck, /* Integrity checking context */ in checkList() argument
10262 int nErrAtStart = pCheck->nErr; in checkList()
10263 while( iPage!=0 && pCheck->mxErr ){ in checkList()
10266 if( checkRef(pCheck, iPage) ) break; in checkList()
10268 if( sqlite3PagerGet(pCheck->pPager, (Pgno)iPage, &pOvflPage, 0) ){ in checkList()
10269 checkAppendMsg(pCheck, "failed to get page %d", iPage); in checkList()
10276 if( pCheck->pBt->autoVacuum ){ in checkList()
10277 checkPtrmap(pCheck, iPage, PTRMAP_FREEPAGE, 0); in checkList()
10280 if( n>pCheck->pBt->usableSize/4-2 ){ in checkList()
10281 checkAppendMsg(pCheck, in checkList()
10288 if( pCheck->pBt->autoVacuum ){ in checkList()
10289 checkPtrmap(pCheck, iFreePage, PTRMAP_FREEPAGE, 0); in checkList()
10292 checkRef(pCheck, iFreePage); in checkList()
10303 if( pCheck->pBt->autoVacuum && N>0 ){ in checkList()
10305 checkPtrmap(pCheck, i, PTRMAP_OVERFLOW2, iPage); in checkList()
10312 if( N && nErrAtStart==pCheck->nErr ){ in checkList()
10313 checkAppendMsg(pCheck, in checkList()
10388 IntegrityCk *pCheck, /* Context for the sanity check */ in checkTreePage() argument
10414 const char *saved_zPfx = pCheck->zPfx; in checkTreePage()
10415 int saved_v1 = pCheck->v1; in checkTreePage()
10416 int saved_v2 = pCheck->v2; in checkTreePage()
10421 pBt = pCheck->pBt; in checkTreePage()
10424 if( checkRef(pCheck, iPage) ) return 0; in checkTreePage()
10425 pCheck->zPfx = "Page %u: "; in checkTreePage()
10426 pCheck->v1 = iPage; in checkTreePage()
10428 checkAppendMsg(pCheck, in checkTreePage()
10439 checkAppendMsg(pCheck, in checkTreePage()
10445 checkAppendMsg(pCheck, "free space corruption", rc); in checkTreePage()
10452 pCheck->zPfx = "On tree page %u cell %d: "; in checkTreePage()
10472 pCheck->zPfx = "On page %u at right child: "; in checkTreePage()
10473 checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage); in checkTreePage()
10476 depth = checkTreePage(pCheck, pgno, &maxKey, maxKey); in checkTreePage()
10481 heap = pCheck->heap; in checkTreePage()
10487 for(i=nCell-1; i>=0 && pCheck->mxErr; i--){ in checkTreePage()
10491 pCheck->v2 = i; in checkTreePage()
10496 checkAppendMsg(pCheck, "Offset %d out of range %d..%d", in checkTreePage()
10504 checkAppendMsg(pCheck, "Extends off end of page"); in checkTreePage()
10512 checkAppendMsg(pCheck, "Rowid %lld out of order", info.nKey); in checkTreePage()
10527 checkPtrmap(pCheck, pgnoOvfl, PTRMAP_OVERFLOW1, iPage); in checkTreePage()
10530 checkList(pCheck, 0, pgnoOvfl, nPage); in checkTreePage()
10538 checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage); in checkTreePage()
10541 d2 = checkTreePage(pCheck, pgno, &maxKey, maxKey); in checkTreePage()
10544 checkAppendMsg(pCheck, "Child page depth differs"); in checkTreePage()
10556 pCheck->zPfx = 0; in checkTreePage()
10557 if( doCoverageCheck && pCheck->mxErr>0 ){ in checkTreePage()
10562 heap = pCheck->heap; in checkTreePage()
10612 checkAppendMsg(pCheck, in checkTreePage()
10627 checkAppendMsg(pCheck, in checkTreePage()
10636 pCheck->zPfx = saved_zPfx; in checkTreePage()
10637 pCheck->v1 = saved_v1; in checkTreePage()
10638 pCheck->v2 = saved_v2; in checkTreePage()