Lines Matching refs:pFKey
17208 FKey *pFKey; /* Linked list of all foreign keys in this table */ member
95392 FKey *pFKey;
95394 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
95396 for(j=0; j<pFKey->nCol; j++){
95397 if( pFKey->aCol[j].iFrom==iCol ){
108363 if( (db->flags&SQLITE_ForeignKeys) && pNew->u.tab.pFKey && pDflt ){
109510 FKey *pFKey;
109538 for(pFKey=sParse.pNewTable->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
109539 for(i=0; i<pFKey->nCol; i++){
109540 if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){
109541 renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]);
109543 if( 0==sqlite3_stricmp(pFKey->zTo, zTable)
109544 && 0==sqlite3_stricmp(pFKey->aCol[i].zCol, zOld)
109546 renameTokenFind(&sParse, &sCtx, (void*)pFKey->aCol[i].zCol);
109729 FKey *pFKey;
109731 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
109732 if( sqlite3_stricmp(pFKey->zTo, zOld)==0 ){
109733 renameTokenFind(&sParse, &sCtx, (void*)pFKey->zTo);
116607 FKey *pFKey = 0;
116635 nByte = sizeof(*pFKey) + (nCol-1)*sizeof(pFKey->aCol[0]) + pTo->n + 1;
116641 pFKey = sqlite3DbMallocZero(db, nByte );
116642 if( pFKey==0 ){
116645 pFKey->pFrom = p;
116647 pFKey->pNextFrom = p->u.tab.pFKey;
116648 z = (char*)&pFKey->aCol[nCol];
116649 pFKey->zTo = z;
116657 pFKey->nCol = nCol;
116659 pFKey->aCol[0].iFrom = p->nCol-1;
116665 pFKey->aCol[i].iFrom = j;
116676 sqlite3RenameTokenRemap(pParse, &pFKey->aCol[i], pFromCol->a[i].zEName);
116683 pFKey->aCol[i].zCol = z;
116692 pFKey->isDeferred = 0;
116693 pFKey->aAction[0] = (u8)(flags & 0xff); /* ON DELETE action */
116694 pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff); /* ON UPDATE action */
116698 pFKey->zTo, (void *)pFKey
116700 if( pNextTo==pFKey ){
116706 pFKey->pNextTo = pNextTo;
116707 pNextTo->pPrevTo = pFKey;
116713 p->u.tab.pFKey = pFKey;
116714 pFKey = 0;
116717 sqlite3DbFree(db, pFKey);
116733 FKey *pFKey;
116736 if( (pFKey = pTab->u.tab.pFKey)==0 ) return;
116738 pFKey->isDeferred = (u8)isDeferred;
122728 FKey *pFKey, /* Foreign key to find index for */
122734 int nCol = pFKey->nCol; /* Number of columns in parent key */
122735 char *zKey = pFKey->aCol[0].zCol; /* Name of left-most parent key column */
122784 for(i=0; i<nCol; i++) aiCol[i] = pFKey->aCol[i].iFrom;
122810 if( sqlite3StrICmp(pFKey->aCol[j].zCol, zIdxCol)==0 ){
122811 if( aiCol ) aiCol[i] = pFKey->aCol[j].iFrom;
122826 pFKey->pFrom->zName, pFKey->zTo);
122867 FKey *pFKey, /* Foreign key constraint */
122879 (!pFKey->isDeferred
122892 sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk);
122895 for(i=0; i<pFKey->nCol; i++){
122896 int iReg = sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[i]) + regData + 1;
122913 sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[0])+1+regData, regTemp);
122921 if( pTab==pFKey->pFrom && nIncr==1 ){
122933 int nCol = pFKey->nCol;
122941 sqlite3TableColumnToStorage(pFKey->pFrom, aiCol[i])+1+regData,
122955 if( pTab==pFKey->pFrom && nIncr==1 ){
122958 int iChild = sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[i])
122984 if( !pFKey->isDeferred && !(pParse->db->flags & SQLITE_DeferFKs)
122996 if( nIncr>0 && pFKey->isDeferred==0 ){
122999 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
123100 FKey *pFKey, /* The foreign key linking pSrc to pTab */
123114 assert( pIdx==0 || pIdx->nKeyCol==pFKey->nCol );
123115 assert( pIdx!=0 || pFKey->nCol==1 );
123119 iFkIfZero = sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, 0);
123131 for(i=0; i<pFKey->nCol; i++){
123140 iCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
123142 zCol = pFKey->pFrom->aCol[iCol].zCnName;
123162 if( pTab==pFKey->pFrom && nIncr>0 ){
123197 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
123257 FKey *pFKey;
123259 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
123260 fkTriggerDelete(db, pFKey->apTrigger[0]); pFKey->apTrigger[0] = 0;
123261 fkTriggerDelete(db, pFKey->apTrigger[1]); pFKey->apTrigger[1] = 0;
123298 for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
123402 static int isSetNullAction(Parse *pParse, FKey *pFKey){
123406 if( (p==pFKey->apTrigger[0] && pFKey->aAction[0]==OE_SetNull)
123407 || (p==pFKey->apTrigger[1] && pFKey->aAction[1]==OE_SetNull)
123444 FKey *pFKey; /* Used to iterate through FKs */
123461 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
123471 && sqlite3_stricmp(pTab->zName, pFKey->zTo)!=0
123472 && fkChildIsModified(pTab, pFKey, aChange, bChngRowid)==0
123482 pTo = sqlite3FindTable(db, pFKey->zTo, zDb);
123484 pTo = sqlite3LocateTable(pParse, 0, pFKey->zTo, zDb);
123486 if( !pTo || sqlite3FkLocateIndex(pParse, pTo, pFKey, &pIdx, &aiFree) ){
123498 int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1;
123499 for(i=0; i<pFKey->nCol; i++){
123501 iFromCol = pFKey->aCol[i].iFrom;
123502 iReg = sqlite3TableColumnToStorage(pFKey->pFrom,iFromCol) + regOld+1;
123505 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1);
123509 assert( pFKey->nCol==1 || (aiFree && pIdx) );
123514 iCol = pFKey->aCol[0].iFrom;
123517 for(i=0; i<pFKey->nCol; i++){
123545 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1, bIgnore);
123547 if( regNew!=0 && !isSetNullAction(pParse, pFKey) ){
123556 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1, bIgnore);
123564 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
123569 if( aChange && fkParentIsModified(pTab, pFKey, aChange, bChngRowid)==0 ){
123573 if( !pFKey->isDeferred && !(db->flags & SQLITE_DeferFKs)
123582 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ){
123586 assert( aiCol || pFKey->nCol==1 );
123593 pItem->pTab = pFKey->pFrom;
123594 pItem->zName = pFKey->pFrom->zName;
123599 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
123602 int eAction = pFKey->aAction[aChange!=0];
123603 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1);
123621 if( !pFKey->isDeferred && eAction!=OE_Cascade && eAction!=OE_SetNull ){
123646 for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
123701 bHaveFK = (sqlite3FkReferences(pTab) || pTab->u.tab.pFKey);
123708 for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
123759 FKey *pFKey, /* Foreign key to get action for */
123767 action = pFKey->aAction[iAction];
123771 pTrigger = pFKey->apTrigger[iAction];
123785 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ) return 0;
123786 assert( aiCol || pFKey->nCol==1 );
123788 for(i=0; i<pFKey->nCol; i++){
123796 iFromCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
123802 sqlite3TokenInit(&tFromCol, pFKey->pFrom->aCol[iFromCol].zCnName);
123840 Column *pCol = pFKey->pFrom->aCol + iFromCol;
123847 pDflt = sqlite3ColumnExpr(pFKey->pFrom, pCol);
123863 zFrom = pFKey->pFrom->zName;
123937 pFKey->apTrigger[iAction] = pTrigger;
123961 FKey *pFKey; /* Iterator variable */
123962 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
123963 if( aChange==0 || fkParentIsModified(pTab, pFKey, aChange, bChngRowid) ){
123964 Trigger *pAct = fkActionTrigger(pParse, pTab, pFKey, pChanges);
123981 FKey *pFKey; /* Iterator variable */
123985 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pNext){
123990 if( pFKey->pPrevTo ){
123991 pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
123993 void *p = (void *)pFKey->pNextTo;
123994 const char *z = (p ? pFKey->pNextTo->zTo : pFKey->zTo);
123997 if( pFKey->pNextTo ){
123998 pFKey->pNextTo->pPrevTo = pFKey->pPrevTo;
124005 assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 );
124009 fkTriggerDelete(db, pFKey->apTrigger[0]);
124010 fkTriggerDelete(db, pFKey->apTrigger[1]);
124013 pNext = pFKey->pNextFrom;
124014 sqlite3DbFree(db, pFKey);
126258 (0==pTab->u.tab.pFKey && 0==sqlite3FkReferences(pTab)))
126976 if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->u.tab.pFKey!=0 ){
130963 pFK = pTab->u.tab.pFKey;
131022 if( pTab==0 || !IsOrdinaryTable(pTab) || pTab->u.tab.pFKey==0 ) continue;
131031 for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){
131054 for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){