Lines Matching refs:pCheck
18800 ExprList *pCheck; /* All CHECK constraints */ member
29381 CheckMutex *pCheck = (CheckMutex*)p; in checkMutexFree() local
29382 pGlobalMutexMethods->xMutexFree(pCheck->mutex); in checkMutexFree()
29383 sqlite3_free(pCheck); in checkMutexFree()
29396 CheckMutex *pCheck = (CheckMutex*)p; in checkMutexEnter() local
29397 if( pCheck->iType==SQLITE_MUTEX_WARNONCONTENTION ){ in checkMutexEnter()
29398 if( SQLITE_OK==pGlobalMutexMethods->xMutexTry(pCheck->mutex) ){ in checkMutexEnter()
29405 pGlobalMutexMethods->xMutexEnter(pCheck->mutex); in checkMutexEnter()
29412 CheckMutex *pCheck = (CheckMutex*)p; in checkMutexTry() local
29413 return pGlobalMutexMethods->xMutexTry(pCheck->mutex); in checkMutexTry()
29420 CheckMutex *pCheck = (CheckMutex*)p; in checkMutexLeave() local
29421 pGlobalMutexMethods->xMutexLeave(pCheck->mutex); in checkMutexLeave()
29450 CheckMutex *pCheck = (CheckMutex*)p; in sqlite3MutexWarnOnContention() local
29451 assert( pCheck->iType==SQLITE_MUTEX_RECURSIVE ); in sqlite3MutexWarnOnContention()
29452 pCheck->iType = SQLITE_MUTEX_WARNONCONTENTION; in sqlite3MutexWarnOnContention()
82062 static void checkOom(IntegrityCk *pCheck){
82063 pCheck->rc = SQLITE_NOMEM;
82064 pCheck->mxErr = 0; /* Causes integrity_check processing to stop */
82065 if( pCheck->nErr==0 ) pCheck->nErr++;
82072 static void checkProgress(IntegrityCk *pCheck){
82073 sqlite3 *db = pCheck->db;
82075 pCheck->rc = SQLITE_INTERRUPT;
82076 pCheck->nErr++;
82077 pCheck->mxErr = 0;
82082 pCheck->nStep++;
82083 if( (pCheck->nStep % db->nProgressOps)==0
82086 pCheck->rc = SQLITE_INTERRUPT;
82087 pCheck->nErr++;
82088 pCheck->mxErr = 0;
82098 IntegrityCk *pCheck,
82103 checkProgress(pCheck);
82104 if( !pCheck->mxErr ) return;
82105 pCheck->mxErr--;
82106 pCheck->nErr++;
82108 if( pCheck->errMsg.nChar ){
82109 sqlite3_str_append(&pCheck->errMsg, "\n", 1);
82111 if( pCheck->zPfx ){
82112 sqlite3_str_appendf(&pCheck->errMsg, pCheck->zPfx,
82113 pCheck->v0, pCheck->v1, pCheck->v2);
82115 sqlite3_str_vappendf(&pCheck->errMsg, zFormat, ap);
82117 if( pCheck->errMsg.accError==SQLITE_NOMEM ){
82118 checkOom(pCheck);
82129 static int getPageReferenced(IntegrityCk *pCheck, Pgno iPg){
82130 assert( pCheck->aPgRef!=0 );
82131 assert( iPg<=pCheck->nCkPage && sizeof(pCheck->aPgRef[0])==1 );
82132 return (pCheck->aPgRef[iPg/8] & (1 << (iPg & 0x07)));
82138 static void setPageReferenced(IntegrityCk *pCheck, Pgno iPg){
82139 assert( pCheck->aPgRef!=0 );
82140 assert( iPg<=pCheck->nCkPage && sizeof(pCheck->aPgRef[0])==1 );
82141 pCheck->aPgRef[iPg/8] |= (1 << (iPg & 0x07));
82153 static int checkRef(IntegrityCk *pCheck, Pgno iPage){
82154 if( iPage>pCheck->nCkPage || iPage==0 ){
82155 checkAppendMsg(pCheck, "invalid page number %u", iPage);
82158 if( getPageReferenced(pCheck, iPage) ){
82159 checkAppendMsg(pCheck, "2nd reference to page %u", iPage);
82162 setPageReferenced(pCheck, iPage);
82173 IntegrityCk *pCheck, /* Integrity check context */
82182 rc = ptrmapGet(pCheck->pBt, iChild, &ePtrmapType, &iPtrmapParent);
82184 if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ) checkOom(pCheck);
82185 checkAppendMsg(pCheck, "Failed to read ptrmap key=%u", iChild);
82190 checkAppendMsg(pCheck,
82202 IntegrityCk *pCheck, /* Integrity checking context */
82209 int nErrAtStart = pCheck->nErr;
82210 while( iPage!=0 && pCheck->mxErr ){
82213 if( checkRef(pCheck, iPage) ) break;
82215 if( sqlite3PagerGet(pCheck->pPager, (Pgno)iPage, &pOvflPage, 0) ){
82216 checkAppendMsg(pCheck, "failed to get page %u", iPage);
82223 if( pCheck->pBt->autoVacuum ){
82224 checkPtrmap(pCheck, iPage, PTRMAP_FREEPAGE, 0);
82227 if( n>pCheck->pBt->usableSize/4-2 ){
82228 checkAppendMsg(pCheck,
82235 if( pCheck->pBt->autoVacuum ){
82236 checkPtrmap(pCheck, iFreePage, PTRMAP_FREEPAGE, 0);
82239 checkRef(pCheck, iFreePage);
82250 if( pCheck->pBt->autoVacuum && N>0 ){
82252 checkPtrmap(pCheck, i, PTRMAP_OVERFLOW2, iPage);
82259 if( N && nErrAtStart==pCheck->nErr ){
82260 checkAppendMsg(pCheck,
82337 IntegrityCk *pCheck, /* Context for the sanity check */
82363 const char *saved_zPfx = pCheck->zPfx;
82364 int saved_v1 = pCheck->v1;
82365 int saved_v2 = pCheck->v2;
82370 checkProgress(pCheck);
82371 if( pCheck->mxErr==0 ) goto end_of_check;
82372 pBt = pCheck->pBt;
82375 if( checkRef(pCheck, iPage) ) return 0;
82376 pCheck->zPfx = "Tree %u page %u: ";
82377 pCheck->v1 = iPage;
82379 checkAppendMsg(pCheck,
82381 if( rc==SQLITE_IOERR_NOMEM ) pCheck->rc = SQLITE_NOMEM;
82391 checkAppendMsg(pCheck,
82397 checkAppendMsg(pCheck, "free space corruption", rc);
82404 pCheck->zPfx = "Tree %u page %u cell %u: ";
82413 pCheck->nRow += nCell;
82427 pCheck->zPfx = "Tree %u page %u right child: ";
82428 checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage);
82431 depth = checkTreePage(pCheck, pgno, &maxKey, maxKey);
82436 heap = pCheck->heap;
82442 for(i=nCell-1; i>=0 && pCheck->mxErr; i--){
82446 pCheck->v2 = i;
82451 checkAppendMsg(pCheck, "Offset %u out of range %u..%u",
82459 checkAppendMsg(pCheck, "Extends off end of page");
82467 checkAppendMsg(pCheck, "Rowid %lld out of order", info.nKey);
82482 checkPtrmap(pCheck, pgnoOvfl, PTRMAP_OVERFLOW1, iPage);
82485 checkList(pCheck, 0, pgnoOvfl, nPage);
82493 checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage);
82496 d2 = checkTreePage(pCheck, pgno, &maxKey, maxKey);
82499 checkAppendMsg(pCheck, "Child page depth differs");
82511 pCheck->zPfx = 0;
82512 if( doCoverageCheck && pCheck->mxErr>0 ){
82517 heap = pCheck->heap;
82568 checkAppendMsg(pCheck,
82583 checkAppendMsg(pCheck,
82592 pCheck->zPfx = saved_zPfx;
82593 pCheck->v1 = saved_v1;
82594 pCheck->v2 = saved_v2;
118215 if( pNew->pCheck!=0
119355 sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
119581 sqlite3WalkExprList(&sWalker, pTab->pCheck);
119733 sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
123843 sqlite3ExprListDelete(db, pTable->pCheck);
124903 pTab->pCheck = sqlite3ExprListAppend(pParse, pTab->pCheck, pCheckExpr);
124906 sqlite3ExprListSetName(pParse, pTab->pCheck,
124914 sqlite3ExprListSetName(pParse, pTab->pCheck, &t, 1);
125726 if( p->pCheck ){
125727 sqlite3ResolveSelfReference(pParse, p, NC_IsCheck, 0, p->pCheck);
125731 sqlite3ExprListDelete(db, p->pCheck);
125732 p->pCheck = 0;
125734 markExprListImmutable(p->pCheck);
126032 p->pCheck = sqlite3ExprListDup(db, pCNames, EXPRDUP_REDUCE);
126153 }else if( pTable->pCheck ){
126160 sqlite3ColumnsFromExprList(pParse, pTable->pCheck,
136875 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
136876 ExprList *pCheck = pTab->pCheck;
136879 for(i=0; i<pCheck->nExpr; i++){
136882 Expr *pExpr = pCheck->a[i].pExpr;
136904 char *zName = pCheck->a[i].zEName;
138017 if( pDest->pCheck
138019 && sqlite3ExprListCompare(pSrc->pCheck,pDest->pCheck,-1)
142687 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
142688 ExprList *pCheck = sqlite3ExprListDup(db, pTab->pCheck, 0);
142695 for(k=pCheck->nExpr-1; k>0; k--){
142696 sqlite3ExprIfFalse(pParse, pCheck->a[k].pExpr, addrCkFault, 0);
142698 sqlite3ExprIfTrue(pParse, pCheck->a[0].pExpr, addrCkOk,
142708 sqlite3ExprListDelete(db, pCheck);
203667 sqlite3_stmt *pCheck = 0; /* Statement to query database with */
203670 rc = fts3SqlStmt(p, SQL_SEGMENT_IS_APPENDABLE, &pCheck, 0);
203672 sqlite3_bind_int64(pCheck, 1, iEnd);
203673 if( SQLITE_ROW==sqlite3_step(pCheck) ) bRes = 1;
203674 rc = sqlite3_reset(pCheck);
217303 static void rtreeCheckReset(RtreeCheck *pCheck, sqlite3_stmt *pStmt){
217305 if( pCheck->rc==SQLITE_OK ) pCheck->rc = rc;
217317 RtreeCheck *pCheck, /* RtreeCheck object */
217327 if( pCheck->rc==SQLITE_OK ){
217329 pCheck->rc = SQLITE_NOMEM;
217331 pCheck->rc = sqlite3_prepare_v2(pCheck->db, z, -1, &pRet, 0);
217345 static void rtreeCheckAppendMsg(RtreeCheck *pCheck, const char *zFmt, ...){
217348 if( pCheck->rc==SQLITE_OK && pCheck->nErr<RTREE_CHECK_MAX_ERROR ){
217351 pCheck->rc = SQLITE_NOMEM;
217353 pCheck->zReport = sqlite3_mprintf("%z%s%z",
217354 pCheck->zReport, (pCheck->zReport ? "\n" : ""), z
217356 if( pCheck->zReport==0 ){
217357 pCheck->rc = SQLITE_NOMEM;
217360 pCheck->nErr++;
217379 static u8 *rtreeCheckGetNode(RtreeCheck *pCheck, i64 iNode, int *pnNode){
217382 if( pCheck->rc==SQLITE_OK && pCheck->pGetNode==0 ){
217383 pCheck->pGetNode = rtreeCheckPrepare(pCheck,
217385 pCheck->zDb, pCheck->zTab
217389 if( pCheck->rc==SQLITE_OK ){
217390 sqlite3_bind_int64(pCheck->pGetNode, 1, iNode);
217391 if( sqlite3_step(pCheck->pGetNode)==SQLITE_ROW ){
217392 int nNode = sqlite3_column_bytes(pCheck->pGetNode, 0);
217393 const u8 *pNode = (const u8*)sqlite3_column_blob(pCheck->pGetNode, 0);
217396 pCheck->rc = SQLITE_NOMEM;
217402 rtreeCheckReset(pCheck, pCheck->pGetNode);
217403 if( pCheck->rc==SQLITE_OK && pRet==0 ){
217404 rtreeCheckAppendMsg(pCheck, "Node %lld missing from database", iNode);
217424 RtreeCheck *pCheck, /* RtreeCheck object */
217437 if( pCheck->aCheckMapping[bLeaf]==0 ){
217438 pCheck->aCheckMapping[bLeaf] = rtreeCheckPrepare(pCheck,
217439 azSql[bLeaf], pCheck->zDb, pCheck->zTab
217442 if( pCheck->rc!=SQLITE_OK ) return;
217444 pStmt = pCheck->aCheckMapping[bLeaf];
217448 rtreeCheckAppendMsg(pCheck, "Mapping (%lld -> %lld) missing from %s table",
217454 rtreeCheckAppendMsg(pCheck,
217460 rtreeCheckReset(pCheck, pStmt);
217476 RtreeCheck *pCheck,
217486 for(i=0; i<pCheck->nDim; i++){
217491 if( pCheck->bInt ? c1.i>c2.i : c1.f>c2.f ){
217492 rtreeCheckAppendMsg(pCheck,
217501 if( (pCheck->bInt ? c1.i<p1.i : c1.f<p1.f)
217502 || (pCheck->bInt ? c2.i>p2.i : c2.f>p2.f)
217504 rtreeCheckAppendMsg(pCheck,
217522 RtreeCheck *pCheck,
217531 assert( pCheck->nDim>0 );
217533 aNode = rtreeCheckGetNode(pCheck, iNode, &nNode);
217536 rtreeCheckAppendMsg(pCheck,
217545 rtreeCheckAppendMsg(pCheck, "Rtree depth out of range (%d)", iDepth);
217551 if( (4 + nCell*(8 + pCheck->nDim*2*4))>nNode ){
217552 rtreeCheckAppendMsg(pCheck,
217558 u8 *pCell = &aNode[4 + i*(8 + pCheck->nDim*2*4)];
217560 rtreeCheckCellCoord(pCheck, iNode, i, &pCell[8], aParent);
217563 rtreeCheckMapping(pCheck, 0, iVal, iNode);
217564 rtreeCheckNode(pCheck, iDepth-1, &pCell[8], iVal);
217565 pCheck->nNonLeaf++;
217567 rtreeCheckMapping(pCheck, 1, iVal, iNode);
217568 pCheck->nLeaf++;
217584 static void rtreeCheckCount(RtreeCheck *pCheck, const char *zTbl, i64 nExpect){
217585 if( pCheck->rc==SQLITE_OK ){
217587 pCount = rtreeCheckPrepare(pCheck, "SELECT count(*) FROM %Q.'%q%s'",
217588 pCheck->zDb, pCheck->zTab, zTbl
217594 rtreeCheckAppendMsg(pCheck, "Wrong number of entries in %%%s table"
217599 pCheck->rc = sqlite3_finalize(pCount);