Lines Matching refs:pFKey
17464 FKey *pFKey; /* Linked list of all foreign keys in this table */ member
93360 FKey *pFKey;
93361 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
93363 for(j=0; j<pFKey->nCol; j++){
93364 if( pFKey->aCol[j].iFrom==iCol ){
105829 if( (db->flags&SQLITE_ForeignKeys) && pNew->pFKey && pDflt ){
106862 FKey *pFKey;
106886 for(pFKey=sParse.pNewTable->pFKey; pFKey; pFKey=pFKey->pNextFrom){
106887 for(i=0; i<pFKey->nCol; i++){
106888 if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){
106889 renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]);
106891 if( 0==sqlite3_stricmp(pFKey->zTo, zTable)
106892 && 0==sqlite3_stricmp(pFKey->aCol[i].zCol, zOld)
106894 renameTokenFind(&sParse, &sCtx, (void*)pFKey->aCol[i].zCol);
107068 FKey *pFKey;
107069 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
107070 if( sqlite3_stricmp(pFKey->zTo, zOld)==0 ){
107071 renameTokenFind(&sParse, &sCtx, (void*)pFKey->zTo);
113192 FKey *pFKey = 0;
113220 nByte = sizeof(*pFKey) + (nCol-1)*sizeof(pFKey->aCol[0]) + pTo->n + 1;
113226 pFKey = sqlite3DbMallocZero(db, nByte );
113227 if( pFKey==0 ){
113230 pFKey->pFrom = p;
113231 pFKey->pNextFrom = p->pFKey;
113232 z = (char*)&pFKey->aCol[nCol];
113233 pFKey->zTo = z;
113241 pFKey->nCol = nCol;
113243 pFKey->aCol[0].iFrom = p->nCol-1;
113249 pFKey->aCol[i].iFrom = j;
113260 sqlite3RenameTokenRemap(pParse, &pFKey->aCol[i], pFromCol->a[i].zEName);
113267 pFKey->aCol[i].zCol = z;
113276 pFKey->isDeferred = 0;
113277 pFKey->aAction[0] = (u8)(flags & 0xff); /* ON DELETE action */
113278 pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff); /* ON UPDATE action */
113282 pFKey->zTo, (void *)pFKey
113284 if( pNextTo==pFKey ){
113290 pFKey->pNextTo = pNextTo;
113291 pNextTo->pPrevTo = pFKey;
113296 p->pFKey = pFKey;
113297 pFKey = 0;
113300 sqlite3DbFree(db, pFKey);
113316 FKey *pFKey;
113317 if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
113319 pFKey->isDeferred = (u8)isDeferred;
118884 FKey *pFKey, /* Foreign key to find index for */
118890 int nCol = pFKey->nCol; /* Number of columns in parent key */
118891 char *zKey = pFKey->aCol[0].zCol; /* Name of left-most parent key column */
118938 for(i=0; i<nCol; i++) aiCol[i] = pFKey->aCol[i].iFrom;
118964 if( sqlite3StrICmp(pFKey->aCol[j].zCol, zIdxCol)==0 ){
118965 if( aiCol ) aiCol[i] = pFKey->aCol[j].iFrom;
118980 pFKey->pFrom->zName, pFKey->zTo);
119021 FKey *pFKey, /* Foreign key constraint */
119033 (!pFKey->isDeferred
119046 sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk);
119049 for(i=0; i<pFKey->nCol; i++){
119050 int iReg = sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[i]) + regData + 1;
119067 sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[0])+1+regData, regTemp);
119075 if( pTab==pFKey->pFrom && nIncr==1 ){
119087 int nCol = pFKey->nCol;
119095 sqlite3TableColumnToStorage(pFKey->pFrom, aiCol[i])+1+regData,
119109 if( pTab==pFKey->pFrom && nIncr==1 ){
119112 int iChild = sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[i])
119138 if( !pFKey->isDeferred && !(pParse->db->flags & SQLITE_DeferFKs)
119150 if( nIncr>0 && pFKey->isDeferred==0 ){
119153 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
119253 FKey *pFKey, /* The foreign key linking pSrc to pTab */
119267 assert( pIdx==0 || pIdx->nKeyCol==pFKey->nCol );
119268 assert( pIdx!=0 || pFKey->nCol==1 );
119272 iFkIfZero = sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, 0);
119284 for(i=0; i<pFKey->nCol; i++){
119293 iCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
119295 zCol = pFKey->pFrom->aCol[iCol].zName;
119315 if( pTab==pFKey->pFrom && nIncr>0 ){
119350 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
119432 for(p=pTab->pFKey; p; p=p->pNextFrom){
119536 static int isSetNullAction(Parse *pParse, FKey *pFKey){
119540 if( (p==pFKey->apTrigger[0] && pFKey->aAction[0]==OE_SetNull)
119541 || (p==pFKey->apTrigger[1] && pFKey->aAction[1]==OE_SetNull)
119578 FKey *pFKey; /* Used to iterate through FKs */
119594 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
119604 && sqlite3_stricmp(pTab->zName, pFKey->zTo)!=0
119605 && fkChildIsModified(pTab, pFKey, aChange, bChngRowid)==0
119615 pTo = sqlite3FindTable(db, pFKey->zTo, zDb);
119617 pTo = sqlite3LocateTable(pParse, 0, pFKey->zTo, zDb);
119619 if( !pTo || sqlite3FkLocateIndex(pParse, pTo, pFKey, &pIdx, &aiFree) ){
119631 int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1;
119632 for(i=0; i<pFKey->nCol; i++){
119634 iFromCol = pFKey->aCol[i].iFrom;
119635 iReg = sqlite3TableColumnToStorage(pFKey->pFrom,iFromCol) + regOld+1;
119638 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1);
119642 assert( pFKey->nCol==1 || (aiFree && pIdx) );
119647 iCol = pFKey->aCol[0].iFrom;
119650 for(i=0; i<pFKey->nCol; i++){
119678 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1, bIgnore);
119680 if( regNew!=0 && !isSetNullAction(pParse, pFKey) ){
119689 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1, bIgnore);
119697 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
119702 if( aChange && fkParentIsModified(pTab, pFKey, aChange, bChngRowid)==0 ){
119706 if( !pFKey->isDeferred && !(db->flags & SQLITE_DeferFKs)
119715 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ){
119719 assert( aiCol || pFKey->nCol==1 );
119726 pItem->pTab = pFKey->pFrom;
119727 pItem->zName = pFKey->pFrom->zName;
119732 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
119735 int eAction = pFKey->aAction[aChange!=0];
119736 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1);
119754 if( !pFKey->isDeferred && eAction!=OE_Cascade && eAction!=OE_SetNull ){
119779 for(p=pTab->pFKey; p; p=p->pNextFrom){
119831 eRet = (sqlite3FkReferences(pTab) || pTab->pFKey);
119838 for(p=pTab->pFKey; p; p=p->pNextFrom){
119889 FKey *pFKey, /* Foreign key to get action for */
119897 action = pFKey->aAction[iAction];
119901 pTrigger = pFKey->apTrigger[iAction];
119915 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ) return 0;
119916 assert( aiCol || pFKey->nCol==1 );
119918 for(i=0; i<pFKey->nCol; i++){
119926 iFromCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
119932 sqlite3TokenInit(&tFromCol, pFKey->pFrom->aCol[iFromCol].zName);
119970 Column *pCol = pFKey->pFrom->aCol + iFromCol;
119993 zFrom = pFKey->pFrom->zName;
120066 pFKey->apTrigger[iAction] = pTrigger;
120090 FKey *pFKey; /* Iterator variable */
120091 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
120092 if( aChange==0 || fkParentIsModified(pTab, pFKey, aChange, bChngRowid) ){
120093 Trigger *pAct = fkActionTrigger(pParse, pTab, pFKey, pChanges);
120110 FKey *pFKey; /* Iterator variable */
120115 for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){
120119 if( pFKey->pPrevTo ){
120120 pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
120122 void *p = (void *)pFKey->pNextTo;
120123 const char *z = (p ? pFKey->pNextTo->zTo : pFKey->zTo);
120126 if( pFKey->pNextTo ){
120127 pFKey->pNextTo->pPrevTo = pFKey->pPrevTo;
120134 assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 );
120138 fkTriggerDelete(db, pFKey->apTrigger[0]);
120139 fkTriggerDelete(db, pFKey->apTrigger[1]);
120142 pNext = pFKey->pNextFrom;
120143 sqlite3DbFree(db, pFKey);
122188 (0==pTab->pFKey && 0==sqlite3FkReferences(pTab)))
122877 if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->pFKey!=0 ){
126695 pFK = pTab->pFKey;
126755 if( pTab==0 || pTab->pFKey==0 ) continue;
126762 for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){
126784 for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){