Lines Matching refs:pCheck
17190 ExprList *pCheck; /* All CHECK constraints */ member
26748 CheckMutex *pCheck = (CheckMutex*)p;
26749 pGlobalMutexMethods->xMutexFree(pCheck->mutex);
26750 sqlite3_free(pCheck);
26763 CheckMutex *pCheck = (CheckMutex*)p;
26764 if( pCheck->iType==SQLITE_MUTEX_WARNONCONTENTION ){
26765 if( SQLITE_OK==pGlobalMutexMethods->xMutexTry(pCheck->mutex) ){
26772 pGlobalMutexMethods->xMutexEnter(pCheck->mutex);
26779 CheckMutex *pCheck = (CheckMutex*)p;
26780 return pGlobalMutexMethods->xMutexTry(pCheck->mutex);
26787 CheckMutex *pCheck = (CheckMutex*)p;
26788 pGlobalMutexMethods->xMutexLeave(pCheck->mutex);
26817 CheckMutex *pCheck = (CheckMutex*)p;
26818 assert( pCheck->iType==SQLITE_MUTEX_RECURSIVE );
26819 pCheck->iType = SQLITE_MUTEX_WARNONCONTENTION;
75512 IntegrityCk *pCheck,
75517 if( !pCheck->mxErr ) return;
75518 pCheck->mxErr--;
75519 pCheck->nErr++;
75521 if( pCheck->errMsg.nChar ){
75522 sqlite3_str_append(&pCheck->errMsg, "\n", 1);
75524 if( pCheck->zPfx ){
75525 sqlite3_str_appendf(&pCheck->errMsg, pCheck->zPfx, pCheck->v1, pCheck->v2);
75527 sqlite3_str_vappendf(&pCheck->errMsg, zFormat, ap);
75529 if( pCheck->errMsg.accError==SQLITE_NOMEM ){
75530 pCheck->bOomFault = 1;
75541 static int getPageReferenced(IntegrityCk *pCheck, Pgno iPg){
75542 assert( iPg<=pCheck->nPage && sizeof(pCheck->aPgRef[0])==1 );
75543 return (pCheck->aPgRef[iPg/8] & (1 << (iPg & 0x07)));
75549 static void setPageReferenced(IntegrityCk *pCheck, Pgno iPg){
75550 assert( iPg<=pCheck->nPage && sizeof(pCheck->aPgRef[0])==1 );
75551 pCheck->aPgRef[iPg/8] |= (1 << (iPg & 0x07));
75563 static int checkRef(IntegrityCk *pCheck, Pgno iPage){
75564 if( iPage>pCheck->nPage || iPage==0 ){
75565 checkAppendMsg(pCheck, "invalid page number %d", iPage);
75568 if( getPageReferenced(pCheck, iPage) ){
75569 checkAppendMsg(pCheck, "2nd reference to page %d", iPage);
75572 if( AtomicLoad(&pCheck->db->u1.isInterrupted) ) return 1;
75573 setPageReferenced(pCheck, iPage);
75584 IntegrityCk *pCheck, /* Integrity check context */
75593 rc = ptrmapGet(pCheck->pBt, iChild, &ePtrmapType, &iPtrmapParent);
75595 if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ) pCheck->bOomFault = 1;
75596 checkAppendMsg(pCheck, "Failed to read ptrmap key=%d", iChild);
75601 checkAppendMsg(pCheck,
75613 IntegrityCk *pCheck, /* Integrity checking context */
75620 int nErrAtStart = pCheck->nErr;
75621 while( iPage!=0 && pCheck->mxErr ){
75624 if( checkRef(pCheck, iPage) ) break;
75626 if( sqlite3PagerGet(pCheck->pPager, (Pgno)iPage, &pOvflPage, 0) ){
75627 checkAppendMsg(pCheck, "failed to get page %d", iPage);
75634 if( pCheck->pBt->autoVacuum ){
75635 checkPtrmap(pCheck, iPage, PTRMAP_FREEPAGE, 0);
75638 if( n>pCheck->pBt->usableSize/4-2 ){
75639 checkAppendMsg(pCheck,
75646 if( pCheck->pBt->autoVacuum ){
75647 checkPtrmap(pCheck, iFreePage, PTRMAP_FREEPAGE, 0);
75650 checkRef(pCheck, iFreePage);
75661 if( pCheck->pBt->autoVacuum && N>0 ){
75663 checkPtrmap(pCheck, i, PTRMAP_OVERFLOW2, iPage);
75670 if( N && nErrAtStart==pCheck->nErr ){
75671 checkAppendMsg(pCheck,
75746 IntegrityCk *pCheck, /* Context for the sanity check */
75772 const char *saved_zPfx = pCheck->zPfx;
75773 int saved_v1 = pCheck->v1;
75774 int saved_v2 = pCheck->v2;
75779 pBt = pCheck->pBt;
75782 if( checkRef(pCheck, iPage) ) return 0;
75783 pCheck->zPfx = "Page %u: ";
75784 pCheck->v1 = iPage;
75786 checkAppendMsg(pCheck,
75797 checkAppendMsg(pCheck,
75803 checkAppendMsg(pCheck, "free space corruption", rc);
75810 pCheck->zPfx = "On tree page %u cell %d: ";
75830 pCheck->zPfx = "On page %u at right child: ";
75831 checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage);
75834 depth = checkTreePage(pCheck, pgno, &maxKey, maxKey);
75839 heap = pCheck->heap;
75845 for(i=nCell-1; i>=0 && pCheck->mxErr; i--){
75849 pCheck->v2 = i;
75854 checkAppendMsg(pCheck, "Offset %d out of range %d..%d",
75862 checkAppendMsg(pCheck, "Extends off end of page");
75870 checkAppendMsg(pCheck, "Rowid %lld out of order", info.nKey);
75885 checkPtrmap(pCheck, pgnoOvfl, PTRMAP_OVERFLOW1, iPage);
75888 checkList(pCheck, 0, pgnoOvfl, nPage);
75896 checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage);
75899 d2 = checkTreePage(pCheck, pgno, &maxKey, maxKey);
75902 checkAppendMsg(pCheck, "Child page depth differs");
75914 pCheck->zPfx = 0;
75915 if( doCoverageCheck && pCheck->mxErr>0 ){
75920 heap = pCheck->heap;
75970 checkAppendMsg(pCheck,
75985 checkAppendMsg(pCheck,
75994 pCheck->zPfx = saved_zPfx;
75995 pCheck->v1 = saved_v1;
75996 pCheck->v2 = saved_v2;
108437 if( pNew->pCheck!=0
109521 sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
109745 sqlite3WalkExprList(&sWalker, pTab->pCheck);
109882 sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
113901 sqlite3ExprListDelete(db, pTable->pCheck);
114954 pTab->pCheck = sqlite3ExprListAppend(pParse, pTab->pCheck, pCheckExpr);
114956 sqlite3ExprListSetName(pParse, pTab->pCheck, &pParse->constraintName, 1);
114963 sqlite3ExprListSetName(pParse, pTab->pCheck, &t, 1);
115749 if( p->pCheck ){
115750 sqlite3ResolveSelfReference(pParse, p, NC_IsCheck, 0, p->pCheck);
115754 sqlite3ExprListDelete(db, p->pCheck);
115755 p->pCheck = 0;
115757 markExprListImmutable(p->pCheck);
116037 p->pCheck = sqlite3ExprListDup(db, pCNames, EXPRDUP_REDUCE);
116155 }else if( pTable->pCheck ){
116162 sqlite3ColumnsFromExprList(pParse, pTable->pCheck,
125818 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
125819 ExprList *pCheck = pTab->pCheck;
125822 for(i=0; i<pCheck->nExpr; i++){
125825 Expr *pExpr = pCheck->a[i].pExpr;
125847 char *zName = pCheck->a[i].zEName;
126963 if( pDest->pCheck && sqlite3ExprListCompare(pSrc->pCheck,pDest->pCheck,-1) ){
131321 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
131322 ExprList *pCheck = sqlite3ExprListDup(db, pTab->pCheck, 0);
131329 for(k=pCheck->nExpr-1; k>0; k--){
131330 sqlite3ExprIfFalse(pParse, pCheck->a[k].pExpr, addrCkFault, 0);
131332 sqlite3ExprIfTrue(pParse, pCheck->a[0].pExpr, addrCkOk,
131342 sqlite3ExprListDelete(db, pCheck);
187082 sqlite3_stmt *pCheck = 0; /* Statement to query database with */
187085 rc = fts3SqlStmt(p, SQL_SEGMENT_IS_APPENDABLE, &pCheck, 0);
187087 sqlite3_bind_int64(pCheck, 1, iEnd);
187088 if( SQLITE_ROW==sqlite3_step(pCheck) ) bRes = 1;
187089 rc = sqlite3_reset(pCheck);
197904 static void rtreeCheckReset(RtreeCheck *pCheck, sqlite3_stmt *pStmt){
197906 if( pCheck->rc==SQLITE_OK ) pCheck->rc = rc;
197918 RtreeCheck *pCheck, /* RtreeCheck object */
197928 if( pCheck->rc==SQLITE_OK ){
197930 pCheck->rc = SQLITE_NOMEM;
197932 pCheck->rc = sqlite3_prepare_v2(pCheck->db, z, -1, &pRet, 0);
197946 static void rtreeCheckAppendMsg(RtreeCheck *pCheck, const char *zFmt, ...){
197949 if( pCheck->rc==SQLITE_OK && pCheck->nErr<RTREE_CHECK_MAX_ERROR ){
197952 pCheck->rc = SQLITE_NOMEM;
197954 pCheck->zReport = sqlite3_mprintf("%z%s%z",
197955 pCheck->zReport, (pCheck->zReport ? "\n" : ""), z
197957 if( pCheck->zReport==0 ){
197958 pCheck->rc = SQLITE_NOMEM;
197961 pCheck->nErr++;
197980 static u8 *rtreeCheckGetNode(RtreeCheck *pCheck, i64 iNode, int *pnNode){
197983 if( pCheck->rc==SQLITE_OK && pCheck->pGetNode==0 ){
197984 pCheck->pGetNode = rtreeCheckPrepare(pCheck,
197986 pCheck->zDb, pCheck->zTab
197990 if( pCheck->rc==SQLITE_OK ){
197991 sqlite3_bind_int64(pCheck->pGetNode, 1, iNode);
197992 if( sqlite3_step(pCheck->pGetNode)==SQLITE_ROW ){
197993 int nNode = sqlite3_column_bytes(pCheck->pGetNode, 0);
197994 const u8 *pNode = (const u8*)sqlite3_column_blob(pCheck->pGetNode, 0);
197997 pCheck->rc = SQLITE_NOMEM;
198003 rtreeCheckReset(pCheck, pCheck->pGetNode);
198004 if( pCheck->rc==SQLITE_OK && pRet==0 ){
198005 rtreeCheckAppendMsg(pCheck, "Node %lld missing from database", iNode);
198025 RtreeCheck *pCheck, /* RtreeCheck object */
198038 if( pCheck->aCheckMapping[bLeaf]==0 ){
198039 pCheck->aCheckMapping[bLeaf] = rtreeCheckPrepare(pCheck,
198040 azSql[bLeaf], pCheck->zDb, pCheck->zTab
198043 if( pCheck->rc!=SQLITE_OK ) return;
198045 pStmt = pCheck->aCheckMapping[bLeaf];
198049 rtreeCheckAppendMsg(pCheck, "Mapping (%lld -> %lld) missing from %s table",
198055 rtreeCheckAppendMsg(pCheck,
198061 rtreeCheckReset(pCheck, pStmt);
198077 RtreeCheck *pCheck,
198087 for(i=0; i<pCheck->nDim; i++){
198092 if( pCheck->bInt ? c1.i>c2.i : c1.f>c2.f ){
198093 rtreeCheckAppendMsg(pCheck,
198102 if( (pCheck->bInt ? c1.i<p1.i : c1.f<p1.f)
198103 || (pCheck->bInt ? c2.i>p2.i : c2.f>p2.f)
198105 rtreeCheckAppendMsg(pCheck,
198123 RtreeCheck *pCheck,
198132 assert( pCheck->nDim>0 );
198134 aNode = rtreeCheckGetNode(pCheck, iNode, &nNode);
198137 rtreeCheckAppendMsg(pCheck,
198146 rtreeCheckAppendMsg(pCheck, "Rtree depth out of range (%d)", iDepth);
198152 if( (4 + nCell*(8 + pCheck->nDim*2*4))>nNode ){
198153 rtreeCheckAppendMsg(pCheck,
198159 u8 *pCell = &aNode[4 + i*(8 + pCheck->nDim*2*4)];
198161 rtreeCheckCellCoord(pCheck, iNode, i, &pCell[8], aParent);
198164 rtreeCheckMapping(pCheck, 0, iVal, iNode);
198165 rtreeCheckNode(pCheck, iDepth-1, &pCell[8], iVal);
198166 pCheck->nNonLeaf++;
198168 rtreeCheckMapping(pCheck, 1, iVal, iNode);
198169 pCheck->nLeaf++;
198185 static void rtreeCheckCount(RtreeCheck *pCheck, const char *zTbl, i64 nExpect){
198186 if( pCheck->rc==SQLITE_OK ){
198188 pCount = rtreeCheckPrepare(pCheck, "SELECT count(*) FROM %Q.'%q%s'",
198189 pCheck->zDb, pCheck->zTab, zTbl
198195 rtreeCheckAppendMsg(pCheck, "Wrong number of entries in %%%s table"
198200 pCheck->rc = sqlite3_finalize(pCount);