Lines Matching refs:pFKey

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