pFKey 11510 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey; /* Linked list of all foreign keys in this table */ pFKey 77658 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey; pFKey 77659 ext/sqlite3/libsqlite/sqlite3.c for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){ pFKey 77661 ext/sqlite3/libsqlite/sqlite3.c for(j=0; j<pFKey->nCol; j++){ pFKey 77662 ext/sqlite3/libsqlite/sqlite3.c if( pFKey->aCol[j].iFrom==iCol ){ pFKey 87905 ext/sqlite3/libsqlite/sqlite3.c if( (db->flags&SQLITE_ForeignKeys) && pNew->pFKey && pDflt ){ pFKey 93370 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey = 0; pFKey 93398 ext/sqlite3/libsqlite/sqlite3.c nByte = sizeof(*pFKey) + (nCol-1)*sizeof(pFKey->aCol[0]) + pTo->n + 1; pFKey 93404 ext/sqlite3/libsqlite/sqlite3.c pFKey = sqlite3DbMallocZero(db, nByte ); pFKey 93405 ext/sqlite3/libsqlite/sqlite3.c if( pFKey==0 ){ pFKey 93408 ext/sqlite3/libsqlite/sqlite3.c pFKey->pFrom = p; pFKey 93409 ext/sqlite3/libsqlite/sqlite3.c pFKey->pNextFrom = p->pFKey; pFKey 93410 ext/sqlite3/libsqlite/sqlite3.c z = (char*)&pFKey->aCol[nCol]; pFKey 93411 ext/sqlite3/libsqlite/sqlite3.c pFKey->zTo = z; pFKey 93416 ext/sqlite3/libsqlite/sqlite3.c pFKey->nCol = nCol; pFKey 93418 ext/sqlite3/libsqlite/sqlite3.c pFKey->aCol[0].iFrom = p->nCol-1; pFKey 93424 ext/sqlite3/libsqlite/sqlite3.c pFKey->aCol[i].iFrom = j; pFKey 93439 ext/sqlite3/libsqlite/sqlite3.c pFKey->aCol[i].zCol = z; pFKey 93445 ext/sqlite3/libsqlite/sqlite3.c pFKey->isDeferred = 0; pFKey 93446 ext/sqlite3/libsqlite/sqlite3.c pFKey->aAction[0] = (u8)(flags & 0xff); /* ON DELETE action */ pFKey 93447 ext/sqlite3/libsqlite/sqlite3.c pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff); /* ON UPDATE action */ pFKey 93451 ext/sqlite3/libsqlite/sqlite3.c pFKey->zTo, (void *)pFKey pFKey 93453 ext/sqlite3/libsqlite/sqlite3.c if( pNextTo==pFKey ){ pFKey 93459 ext/sqlite3/libsqlite/sqlite3.c pFKey->pNextTo = pNextTo; pFKey 93460 ext/sqlite3/libsqlite/sqlite3.c pNextTo->pPrevTo = pFKey; pFKey 93465 ext/sqlite3/libsqlite/sqlite3.c p->pFKey = pFKey; pFKey 93466 ext/sqlite3/libsqlite/sqlite3.c pFKey = 0; pFKey 93469 ext/sqlite3/libsqlite/sqlite3.c sqlite3DbFree(db, pFKey); pFKey 93485 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey; pFKey 93486 ext/sqlite3/libsqlite/sqlite3.c if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return; pFKey 93488 ext/sqlite3/libsqlite/sqlite3.c pFKey->isDeferred = (u8)isDeferred; pFKey 98413 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey, /* Foreign key to find index for */ pFKey 98419 ext/sqlite3/libsqlite/sqlite3.c int nCol = pFKey->nCol; /* Number of columns in parent key */ pFKey 98420 ext/sqlite3/libsqlite/sqlite3.c char *zKey = pFKey->aCol[0].zCol; /* Name of left-most parent key column */ pFKey 98467 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<nCol; i++) aiCol[i] = pFKey->aCol[i].iFrom; pFKey 98493 ext/sqlite3/libsqlite/sqlite3.c if( sqlite3StrICmp(pFKey->aCol[j].zCol, zIdxCol)==0 ){ pFKey 98494 ext/sqlite3/libsqlite/sqlite3.c if( aiCol ) aiCol[i] = pFKey->aCol[j].iFrom; pFKey 98509 ext/sqlite3/libsqlite/sqlite3.c pFKey->pFrom->zName, pFKey->zTo); pFKey 98550 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey, /* Foreign key constraint */ pFKey 98569 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk); pFKey 98572 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<pFKey->nCol; i++){ pFKey 98597 ext/sqlite3/libsqlite/sqlite3.c if( pTab==pFKey->pFrom && nIncr==1 ){ pFKey 98609 ext/sqlite3/libsqlite/sqlite3.c int nCol = pFKey->nCol; pFKey 98629 ext/sqlite3/libsqlite/sqlite3.c if( pTab==pFKey->pFrom && nIncr==1 ){ pFKey 98654 ext/sqlite3/libsqlite/sqlite3.c if( !pFKey->isDeferred && !(pParse->db->flags & SQLITE_DeferFKs) pFKey 98666 ext/sqlite3/libsqlite/sqlite3.c if( nIncr>0 && pFKey->isDeferred==0 ){ pFKey 98669 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr); pFKey 98769 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey, /* The foreign key linking pSrc to pTab */ pFKey 98783 ext/sqlite3/libsqlite/sqlite3.c assert( pIdx==0 || pIdx->nKeyCol==pFKey->nCol ); pFKey 98784 ext/sqlite3/libsqlite/sqlite3.c assert( pIdx!=0 || pFKey->nCol==1 ); pFKey 98788 ext/sqlite3/libsqlite/sqlite3.c iFkIfZero = sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, 0); pFKey 98800 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<pFKey->nCol; i++){ pFKey 98809 ext/sqlite3/libsqlite/sqlite3.c iCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom; pFKey 98811 ext/sqlite3/libsqlite/sqlite3.c zCol = pFKey->pFrom->aCol[iCol].zName; pFKey 98828 ext/sqlite3/libsqlite/sqlite3.c if( pTab==pFKey->pFrom && nIncr>0 ){ pFKey 98862 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr); pFKey 98942 ext/sqlite3/libsqlite/sqlite3.c for(p=pTab->pFKey; p; p=p->pNextFrom){ pFKey 99045 ext/sqlite3/libsqlite/sqlite3.c static int isSetNullAction(Parse *pParse, FKey *pFKey){ pFKey 99049 ext/sqlite3/libsqlite/sqlite3.c if( (p==pFKey->apTrigger[0] && pFKey->aAction[0]==OE_SetNull) pFKey 99050 ext/sqlite3/libsqlite/sqlite3.c || (p==pFKey->apTrigger[1] && pFKey->aAction[1]==OE_SetNull) pFKey 99087 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey; /* Used to iterate through FKs */ pFKey 99103 ext/sqlite3/libsqlite/sqlite3.c for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){ pFKey 99113 ext/sqlite3/libsqlite/sqlite3.c && sqlite3_stricmp(pTab->zName, pFKey->zTo)!=0 pFKey 99114 ext/sqlite3/libsqlite/sqlite3.c && fkChildIsModified(pTab, pFKey, aChange, bChngRowid)==0 pFKey 99124 ext/sqlite3/libsqlite/sqlite3.c pTo = sqlite3FindTable(db, pFKey->zTo, zDb); pFKey 99126 ext/sqlite3/libsqlite/sqlite3.c pTo = sqlite3LocateTable(pParse, 0, pFKey->zTo, zDb); pFKey 99128 ext/sqlite3/libsqlite/sqlite3.c if( !pTo || sqlite3FkLocateIndex(pParse, pTo, pFKey, &pIdx, &aiFree) ){ pFKey 99140 ext/sqlite3/libsqlite/sqlite3.c int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1; pFKey 99141 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<pFKey->nCol; i++){ pFKey 99142 ext/sqlite3/libsqlite/sqlite3.c int iReg = pFKey->aCol[i].iFrom + regOld + 1; pFKey 99145 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1); pFKey 99149 ext/sqlite3/libsqlite/sqlite3.c assert( pFKey->nCol==1 || (aiFree && pIdx) ); pFKey 99154 ext/sqlite3/libsqlite/sqlite3.c iCol = pFKey->aCol[0].iFrom; pFKey 99157 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<pFKey->nCol; i++){ pFKey 99184 ext/sqlite3/libsqlite/sqlite3.c fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1, bIgnore); pFKey 99186 ext/sqlite3/libsqlite/sqlite3.c if( regNew!=0 && !isSetNullAction(pParse, pFKey) ){ pFKey 99195 ext/sqlite3/libsqlite/sqlite3.c fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1, bIgnore); pFKey 99203 ext/sqlite3/libsqlite/sqlite3.c for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){ pFKey 99208 ext/sqlite3/libsqlite/sqlite3.c if( aChange && fkParentIsModified(pTab, pFKey, aChange, bChngRowid)==0 ){ pFKey 99212 ext/sqlite3/libsqlite/sqlite3.c if( !pFKey->isDeferred && !(db->flags & SQLITE_DeferFKs) pFKey 99221 ext/sqlite3/libsqlite/sqlite3.c if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ){ pFKey 99225 ext/sqlite3/libsqlite/sqlite3.c assert( aiCol || pFKey->nCol==1 ); pFKey 99232 ext/sqlite3/libsqlite/sqlite3.c pItem->pTab = pFKey->pFrom; pFKey 99233 ext/sqlite3/libsqlite/sqlite3.c pItem->zName = pFKey->pFrom->zName; pFKey 99238 ext/sqlite3/libsqlite/sqlite3.c fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1); pFKey 99241 ext/sqlite3/libsqlite/sqlite3.c int eAction = pFKey->aAction[aChange!=0]; pFKey 99242 ext/sqlite3/libsqlite/sqlite3.c fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1); pFKey 99260 ext/sqlite3/libsqlite/sqlite3.c if( !pFKey->isDeferred && eAction!=OE_Cascade && eAction!=OE_SetNull ){ pFKey 99285 ext/sqlite3/libsqlite/sqlite3.c for(p=pTab->pFKey; p; p=p->pNextFrom){ pFKey 99325 ext/sqlite3/libsqlite/sqlite3.c return (sqlite3FkReferences(pTab) || pTab->pFKey); pFKey 99332 ext/sqlite3/libsqlite/sqlite3.c for(p=pTab->pFKey; p; p=p->pNextFrom){ pFKey 99377 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey, /* Foreign key to get action for */ pFKey 99385 ext/sqlite3/libsqlite/sqlite3.c action = pFKey->aAction[iAction]; pFKey 99386 ext/sqlite3/libsqlite/sqlite3.c pTrigger = pFKey->apTrigger[iAction]; pFKey 99401 ext/sqlite3/libsqlite/sqlite3.c if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ) return 0; pFKey 99402 ext/sqlite3/libsqlite/sqlite3.c assert( aiCol || pFKey->nCol==1 ); pFKey 99404 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<pFKey->nCol; i++){ pFKey 99412 ext/sqlite3/libsqlite/sqlite3.c iFromCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom; pFKey 99416 ext/sqlite3/libsqlite/sqlite3.c tFromCol.z = pFKey->pFrom->aCol[iFromCol].zName; pFKey 99461 ext/sqlite3/libsqlite/sqlite3.c Expr *pDflt = pFKey->pFrom->aCol[iFromCol].pDflt; pFKey 99476 ext/sqlite3/libsqlite/sqlite3.c zFrom = pFKey->pFrom->zName; pFKey 99549 ext/sqlite3/libsqlite/sqlite3.c pFKey->apTrigger[iAction] = pTrigger; pFKey 99573 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey; /* Iterator variable */ pFKey 99574 ext/sqlite3/libsqlite/sqlite3.c for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){ pFKey 99575 ext/sqlite3/libsqlite/sqlite3.c if( aChange==0 || fkParentIsModified(pTab, pFKey, aChange, bChngRowid) ){ pFKey 99576 ext/sqlite3/libsqlite/sqlite3.c Trigger *pAct = fkActionTrigger(pParse, pTab, pFKey, pChanges); pFKey 99593 ext/sqlite3/libsqlite/sqlite3.c FKey *pFKey; /* Iterator variable */ pFKey 99597 ext/sqlite3/libsqlite/sqlite3.c for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){ pFKey 99601 ext/sqlite3/libsqlite/sqlite3.c if( pFKey->pPrevTo ){ pFKey 99602 ext/sqlite3/libsqlite/sqlite3.c pFKey->pPrevTo->pNextTo = pFKey->pNextTo; pFKey 99604 ext/sqlite3/libsqlite/sqlite3.c void *p = (void *)pFKey->pNextTo; pFKey 99605 ext/sqlite3/libsqlite/sqlite3.c const char *z = (p ? pFKey->pNextTo->zTo : pFKey->zTo); pFKey 99608 ext/sqlite3/libsqlite/sqlite3.c if( pFKey->pNextTo ){ pFKey 99609 ext/sqlite3/libsqlite/sqlite3.c pFKey->pNextTo->pPrevTo = pFKey->pPrevTo; pFKey 99616 ext/sqlite3/libsqlite/sqlite3.c assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 ); pFKey 99620 ext/sqlite3/libsqlite/sqlite3.c fkTriggerDelete(db, pFKey->apTrigger[0]); pFKey 99621 ext/sqlite3/libsqlite/sqlite3.c fkTriggerDelete(db, pFKey->apTrigger[1]); pFKey 99624 ext/sqlite3/libsqlite/sqlite3.c pNext = pFKey->pNextFrom; pFKey 99625 ext/sqlite3/libsqlite/sqlite3.c sqlite3DbFree(db, pFKey); pFKey 101550 ext/sqlite3/libsqlite/sqlite3.c if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->pFKey!=0 ){ pFKey 104795 ext/sqlite3/libsqlite/sqlite3.c pFK = pTab->pFKey; pFKey 104873 ext/sqlite3/libsqlite/sqlite3.c if( pTab==0 || pTab->pFKey==0 ) continue; pFKey 104879 ext/sqlite3/libsqlite/sqlite3.c for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){ pFKey 104901 ext/sqlite3/libsqlite/sqlite3.c for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){