Lines Matching refs:pFKey
18818 FKey *pFKey; /* Linked list of all foreign keys in this table */ member
103797 FKey *pFKey;
103799 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
103801 for(j=0; j<pFKey->nCol; j++){
103802 if( pFKey->aCol[j].iFrom==iCol ){
118141 if( (db->flags&SQLITE_ForeignKeys) && pNew->u.tab.pFKey && pDflt ){
119344 FKey *pFKey;
119372 for(pFKey=sParse.pNewTable->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
119373 for(i=0; i<pFKey->nCol; i++){
119374 if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){
119375 renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]);
119377 if( 0==sqlite3_stricmp(pFKey->zTo, zTable)
119378 && 0==sqlite3_stricmp(pFKey->aCol[i].zCol, zOld)
119380 renameTokenFind(&sParse, &sCtx, (void*)pFKey->aCol[i].zCol);
119565 FKey *pFKey;
119567 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
119568 if( sqlite3_stricmp(pFKey->zTo, zOld)==0 ){
119569 renameTokenFind(&sParse, &sCtx, (void*)pFKey->zTo);
126611 FKey *pFKey = 0;
126645 pFKey = sqlite3DbMallocZero(db, nByte );
126646 if( pFKey==0 ){
126649 pFKey->pFrom = p;
126651 pFKey->pNextFrom = p->u.tab.pFKey;
126652 z = (char*)&pFKey->aCol[nCol];
126653 pFKey->zTo = z;
126661 pFKey->nCol = nCol;
126663 pFKey->aCol[0].iFrom = p->nCol-1;
126669 pFKey->aCol[i].iFrom = j;
126680 sqlite3RenameTokenRemap(pParse, &pFKey->aCol[i], pFromCol->a[i].zEName);
126687 pFKey->aCol[i].zCol = z;
126696 pFKey->isDeferred = 0;
126697 pFKey->aAction[0] = (u8)(flags & 0xff); /* ON DELETE action */
126698 pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff); /* ON UPDATE action */
126702 pFKey->zTo, (void *)pFKey
126704 if( pNextTo==pFKey ){
126710 pFKey->pNextTo = pNextTo;
126711 pNextTo->pPrevTo = pFKey;
126717 p->u.tab.pFKey = pFKey;
126718 pFKey = 0;
126721 sqlite3DbFree(db, pFKey);
126737 FKey *pFKey;
126740 if( (pFKey = pTab->u.tab.pFKey)==0 ) return;
126742 pFKey->isDeferred = (u8)isDeferred;
133513 FKey *pFKey, /* Foreign key to find index for */
133519 int nCol = pFKey->nCol; /* Number of columns in parent key */
133520 char *zKey = pFKey->aCol[0].zCol; /* Name of left-most parent key column */
133569 for(i=0; i<nCol; i++) aiCol[i] = pFKey->aCol[i].iFrom;
133595 if( sqlite3StrICmp(pFKey->aCol[j].zCol, zIdxCol)==0 ){
133596 if( aiCol ) aiCol[i] = pFKey->aCol[j].iFrom;
133611 pFKey->pFrom->zName, pFKey->zTo);
133652 FKey *pFKey, /* Foreign key constraint */
133664 (!pFKey->isDeferred
133677 sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk);
133680 for(i=0; i<pFKey->nCol; i++){
133681 int iReg = sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[i]) + regData + 1;
133698 sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[0])+1+regData, regTemp);
133706 if( pTab==pFKey->pFrom && nIncr==1 ){
133718 int nCol = pFKey->nCol;
133725 sqlite3TableColumnToStorage(pFKey->pFrom, aiCol[i])+1+regData,
133739 if( pTab==pFKey->pFrom && nIncr==1 ){
133742 int iChild = sqlite3TableColumnToStorage(pFKey->pFrom,aiCol[i])
133767 if( !pFKey->isDeferred && !(pParse->db->flags & SQLITE_DeferFKs)
133779 if( nIncr>0 && pFKey->isDeferred==0 ){
133782 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
133879 FKey *pFKey, /* The foreign key linking pSrc to pTab */
133893 assert( pIdx==0 || pIdx->nKeyCol==pFKey->nCol );
133894 assert( pIdx!=0 || pFKey->nCol==1 );
133898 iFkIfZero = sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, 0);
133910 for(i=0; i<pFKey->nCol; i++){
133919 iCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
133921 zCol = pFKey->pFrom->aCol[iCol].zCnName;
133941 if( pTab==pFKey->pFrom && nIncr>0 ){
133976 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
134036 FKey *pFKey;
134038 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
134039 fkTriggerDelete(db, pFKey->apTrigger[0]); pFKey->apTrigger[0] = 0;
134040 fkTriggerDelete(db, pFKey->apTrigger[1]); pFKey->apTrigger[1] = 0;
134077 for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
134181 static int isSetNullAction(Parse *pParse, FKey *pFKey){
134185 if( (p==pFKey->apTrigger[0] && pFKey->aAction[0]==OE_SetNull)
134186 || (p==pFKey->apTrigger[1] && pFKey->aAction[1]==OE_SetNull)
134224 FKey *pFKey; /* Used to iterate through FKs */
134241 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
134251 && sqlite3_stricmp(pTab->zName, pFKey->zTo)!=0
134252 && fkChildIsModified(pTab, pFKey, aChange, bChngRowid)==0
134262 pTo = sqlite3FindTable(db, pFKey->zTo, zDb);
134264 pTo = sqlite3LocateTable(pParse, 0, pFKey->zTo, zDb);
134266 if( !pTo || sqlite3FkLocateIndex(pParse, pTo, pFKey, &pIdx, &aiFree) ){
134278 int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1;
134279 for(i=0; i<pFKey->nCol; i++){
134281 iFromCol = pFKey->aCol[i].iFrom;
134282 iReg = sqlite3TableColumnToStorage(pFKey->pFrom,iFromCol) + regOld+1;
134285 sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1);
134289 assert( pFKey->nCol==1 || (aiFree && pIdx) );
134294 iCol = pFKey->aCol[0].iFrom;
134297 for(i=0; i<pFKey->nCol; i++){
134325 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1, bIgnore);
134327 if( regNew!=0 && !isSetNullAction(pParse, pFKey) ){
134336 fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1, bIgnore);
134344 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
134349 if( aChange && fkParentIsModified(pTab, pFKey, aChange, bChngRowid)==0 ){
134353 if( !pFKey->isDeferred && !(db->flags & SQLITE_DeferFKs)
134362 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ){
134366 assert( aiCol || pFKey->nCol==1 );
134373 pItem->pSTab = pFKey->pFrom;
134374 pItem->zName = pFKey->pFrom->zName;
134379 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
134382 int eAction = pFKey->aAction[aChange!=0];
134385 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1);
134403 if( !pFKey->isDeferred && eAction!=OE_Cascade && eAction!=OE_SetNull ){
134428 for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
134483 bHaveFK = (sqlite3FkReferences(pTab) || pTab->u.tab.pFKey);
134490 for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
134545 FKey *pFKey, /* Foreign key to get action for */
134553 action = pFKey->aAction[iAction];
134558 pTrigger = pFKey->apTrigger[iAction];
134572 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ) return 0;
134573 assert( aiCol || pFKey->nCol==1 );
134575 for(i=0; i<pFKey->nCol; i++){
134583 iFromCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
134589 sqlite3TokenInit(&tFromCol, pFKey->pFrom->aCol[iFromCol].zCnName);
134627 Column *pCol = pFKey->pFrom->aCol + iFromCol;
134634 pDflt = sqlite3ColumnExpr(pFKey->pFrom, pCol);
134650 zFrom = pFKey->pFrom->zName;
134731 pFKey->apTrigger[iAction] = pTrigger;
134755 FKey *pFKey; /* Iterator variable */
134756 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
134757 if( aChange==0 || fkParentIsModified(pTab, pFKey, aChange, bChngRowid) ){
134758 Trigger *pAct = fkActionTrigger(pParse, pTab, pFKey, pChanges);
134775 FKey *pFKey; /* Iterator variable */
134780 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pNext){
134785 if( pFKey->pPrevTo ){
134786 pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
134788 const char *z = (pFKey->pNextTo ? pFKey->pNextTo->zTo : pFKey->zTo);
134789 sqlite3HashInsert(&pTab->pSchema->fkeyHash, z, pFKey->pNextTo);
134791 if( pFKey->pNextTo ){
134792 pFKey->pNextTo->pPrevTo = pFKey->pPrevTo;
134799 assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 );
134803 fkTriggerDelete(db, pFKey->apTrigger[0]);
134804 fkTriggerDelete(db, pFKey->apTrigger[1]);
134807 pNext = pFKey->pNextFrom;
134808 sqlite3DbFree(db, pFKey);
137315 (0==pTab->u.tab.pFKey && 0==sqlite3FkReferences(pTab)))
138033 if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->u.tab.pFKey!=0 ){
142163 pFK = pTab->u.tab.pFKey;
142220 if( pTab==0 || !IsOrdinaryTable(pTab) || pTab->u.tab.pFKey==0 ) continue;
142229 for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){
142252 for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){