Lines Matching refs:pFKey
9932 FKey *pFKey; /* Linked list of all foreign keys in this table */ member
70032 FKey *pFKey;
70033 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
70035 for(j=0; j<pFKey->nCol; j++){
70036 if( pFKey->aCol[j].iFrom==iCol ){
77452 if( (db->flags&SQLITE_ForeignKeys) && pNew->pFKey && pDflt ){
81326 FKey *pFKey = 0;
81354 nByte = sizeof(*pFKey) + (nCol-1)*sizeof(pFKey->aCol[0]) + pTo->n + 1;
81360 pFKey = sqlite3DbMallocZero(db, nByte );
81361 if( pFKey==0 ){
81364 pFKey->pFrom = p;
81365 pFKey->pNextFrom = p->pFKey;
81366 z = (char*)&pFKey->aCol[nCol];
81367 pFKey->zTo = z;
81372 pFKey->nCol = nCol;
81374 pFKey->aCol[0].iFrom = p->nCol-1;
81380 pFKey->aCol[i].iFrom = j;
81395 pFKey->aCol[i].zCol = z;
81401 pFKey->isDeferred = 0;
81402 pFKey->aAction[0] = (u8)(flags & 0xff); /* ON DELETE action */
81403 pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff); /* ON UPDATE action */
81407 pFKey->zTo, sqlite3Strlen30(pFKey->zTo), (void *)pFKey
81409 if( pNextTo==pFKey ){
81415 pFKey->pNextTo = pNextTo;
81416 pNextTo->pPrevTo = pFKey;
81421 p->pFKey = pFKey;
81422 pFKey = 0;
81425 sqlite3DbFree(db, pFKey);
81441 FKey *pFKey;
81442 if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
81444 pFKey->isDeferred = (u8)isDeferred;
85844 FKey *pFKey, /* Foreign key to find index for */
85850 int nCol = pFKey->nCol; /* Number of columns in parent key */
85851 char *zKey = pFKey->aCol[0].zCol; /* Name of left-most parent key column */
85898 for(i=0; i<nCol; i++) aiCol[i] = pFKey->aCol[i].iFrom;
85924 if( sqlite3StrICmp(pFKey->aCol[j].zCol, zIdxCol)==0 ){
85925 if( aiCol ) aiCol[i] = pFKey->aCol[j].iFrom;
85979 FKey *pFKey, /* Foreign key constraint */
85998 sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk);
86000 for(i=0; i<pFKey->nCol; i++){
86024 if( pTab==pFKey->pFrom && nIncr==1 ){
86035 int nCol = pFKey->nCol;
86056 if( pTab==pFKey->pFrom && nIncr==1 ){
86081 if( !pFKey->isDeferred && !pParse->pToplevel && !pParse->isMultiWrite ){
86091 if( nIncr>0 && pFKey->isDeferred==0 ){
86094 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
86134 FKey *pFKey, /* Foreign key relationship */
86150 iFkIfZero = sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, 0);
86161 for(i=0; i<pFKey->nCol; i++){
86185 iCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
86187 zCol = pFKey->pFrom->aCol[iCol].zName;
86197 if( pTab==pFKey->pFrom && nIncr>0 ){
86224 if( nIncr>0 && pFKey->isDeferred==0 ){
86227 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
86308 for(p=pTab->pFKey; p; p=p->pNextFrom){
86362 FKey *pFKey; /* Used to iterate through FKs */
86378 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
86392 pTo = sqlite3FindTable(db, pFKey->zTo, zDb);
86394 pTo = sqlite3LocateTable(pParse, 0, pFKey->zTo, zDb);
86396 if( !pTo || locateFkeyIndex(pParse, pTo, pFKey, &pIdx, &aiFree) ){
86408 int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1;
86409 for(i=0; i<pFKey->nCol; i++){
86410 int iReg = pFKey->aCol[i].iFrom + regOld + 1;
86413 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1);
86417 assert( pFKey->nCol==1 || (aiFree && pIdx) );
86422 iCol = pFKey->aCol[0].iFrom;
86425 for(i=0; i<pFKey->nCol; i++){
86452 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1,isIgnore);
86457 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1,isIgnore);
86464 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
86469 if( !pFKey->isDeferred && !pParse->pToplevel && !pParse->isMultiWrite ){
86476 if( locateFkeyIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ){
86480 assert( aiCol || pFKey->nCol==1 );
86488 pItem->pTab = pFKey->pFrom;
86489 pItem->zName = pFKey->pFrom->zName;
86494 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
86503 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1);
86526 for(p=pTab->pFKey; p; p=p->pNextFrom){
86565 return (sqlite3FkReferences(pTab) || pTab->pFKey);
86573 for(p=pTab->pFKey; p; p=p->pNextFrom){
86632 FKey *pFKey, /* Foreign key to get action for */
86640 action = pFKey->aAction[iAction];
86641 pTrigger = pFKey->apTrigger[iAction];
86656 if( locateFkeyIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ) return 0;
86657 assert( aiCol || pFKey->nCol==1 );
86659 for(i=0; i<pFKey->nCol; i++){
86667 iFromCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
86670 tFromCol.z = pFKey->pFrom->aCol[iFromCol].zName;
86715 Expr *pDflt = pFKey->pFrom->aCol[iFromCol].pDflt;
86730 zFrom = pFKey->pFrom->zName;
86803 pFKey->apTrigger[iAction] = pTrigger;
86825 FKey *pFKey; /* Iterator variable */
86826 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
86827 Trigger *pAction = fkActionTrigger(pParse, pTab, pFKey, pChanges);
86843 FKey *pFKey; /* Iterator variable */
86847 for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){
86851 if( pFKey->pPrevTo ){
86852 pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
86854 void *p = (void *)pFKey->pNextTo;
86855 const char *z = (p ? pFKey->pNextTo->zTo : pFKey->zTo);
86858 if( pFKey->pNextTo ){
86859 pFKey->pNextTo->pPrevTo = pFKey->pPrevTo;
86866 assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 );
86870 fkTriggerDelete(db, pFKey->apTrigger[0]);
86871 fkTriggerDelete(db, pFKey->apTrigger[1]);
86874 pNext = pFKey->pNextFrom;
86875 sqlite3DbFree(db, pFKey);
88626 if( (pParse->db->flags & SQLITE_ForeignKeys)!=0 && pDest->pFKey!=0 ){
90956 pFK = pTab->pFKey;