void CRUCache::FetchNonInvolvedUsedObjectsMetadata() { DSListPosition pos = mvList_.GetHeadPosition(); while (NULL != pos) { CRUMV *pMV = mvList_.GetNext(pos); if (FALSE == pMV->IsInvolved() || CDDObject::eON_REQUEST != pMV->GetRefreshType()) { continue; } if (NULL == GetTable(pMV->GetUID())) { CDDSchema *pddSch = GetDDSchemaByName(pMV->GetCatName(), pMV->GetSchName()); CDDMV *pddMV = GetDDMVByName(pddSch, pMV->GetName()); CRUTbl *pTbl = new CRUMVTbl(pddMV); pTbl->FetchMetadata(); tableList_.AddTail(pTbl); } } }
void CRUCache::FixupMVTblInterfaces() { DSListPosition pos = mvList_.GetHeadPosition(); while (NULL != pos) { CRUMV *pMV = mvList_.GetNext(pos); if (FALSE == pMV->IsInvolved()) { continue; // Skip the non-involved MVs } CRUTbl *pTbl = GetTable(pMV->GetUID()); if (NULL == pTbl) { continue; // No table object in the cache, skip } // Setup pointers MV <---> table pMV->SetTblInterface(pTbl); pTbl->SetMVInterface(pMV); } }
CRUMV *CRUCache::GetMV(TInt64 objUid) const { DSListPosition pos = mvList_.GetHeadPosition(); while (NULL != pos) { CRUMV *pMV = mvList_.GetNext(pos); if (pMV->GetUID() == objUid) { return pMV; } } return NULL; }