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){