//--------------------------------------------------------------------------// // CRURefreshTaskExecutor::VerifyForceTblListCorrectness() // // Check that the user did not refered to a un-existing base table //--------------------------------------------------------------------------// void CRURefreshTaskExecutor::VerifyForceTblListCorrectness() { const CRUMVForceOptions &forceOption = *GetRefreshTask()->GetRootMV().GetMVForceOption(); const CRUTableForceOptionsList &tblList = forceOption.GetTableForceList(); DSListPosition pos = tblList.GetHeadPosition(); while (NULL != pos) { CRUTableForceOptions* forceOpt = tblList.GetNext(pos); CRUTbl *pTbl = GetRefreshTask()->GetRootMV().GetUsedTableByName(forceOpt->GetFullName()); if(NULL == pTbl) { CRUException ex; ex.SetError(IDS_RU_FORCE_FILE_TABLE_NOT_EXISTS); ex.AddArgument(GetRefreshTask()->GetRootMV().GetFullName()); ex.AddArgument(forceOpt->GetFullName()); throw ex; } } }
CRUTableForceOptions* CRURefreshTaskExecutor::GetForceOptionForTable(const CDSString &name) { CRUMV &rootMV = GetRefreshTask()->GetRootMV(); const CRUMVForceOptions* pForceOption = rootMV.GetMVForceOption(); if (NULL == pForceOption) { return NULL; } const CRUTableForceOptionsList &tblList = pForceOption->GetTableForceList(); DSListPosition pos = tblList.GetHeadPosition(); while (NULL != pos) { CRUTableForceOptions* forceOpt = tblList.GetNext(pos); if (name == forceOpt->GetFullName()) { return forceOpt; } } return NULL; }
void CRURefreshTaskExecutor::ComposeControlTableStmtForUsedTable(CRUTbl &tbl, Int32 &stmtIndex, CRUForceOptions::MdamOptions mdamOpt) { CRURefreshSQLComposer myComposer(GetRefreshTask()); if (CRUForceOptions::MDAM_NO_FORCE == mdamOpt) { CRUTableForceOptions *forceOpt = GetForceOptionForTable(tbl.GetFullName()); if (NULL == forceOpt) { mdamOpt = GetDefaultMdamOptForTable(tbl); } else { mdamOpt = forceOpt->GetMdamOptions(); } } if (CRUForceOptions::MDAM_NO_FORCE != mdamOpt) { // Compose CONTROL TABLE table_name MDAM option myComposer.ComposeCntrlTableMDAMText(mdamOpt, &(tbl.GetFullName())); pRefreshTEDynamicContainer_->SetStatementText #pragma nowarn(1506) // warning elimination (stmtIndex++, myComposer.GetSQL()); #pragma warn(1506) // warning elimination forceFlags_ |= FORCE_TABLE_MDAM; } }
CRUForceOptions::MdamOptions CRUMVForceOptions::GetForceMdamOptionForTable(const CDSString& tableName) const { DSListPosition pos = pTablesList_->GetHeadPosition(); while (NULL != pos) { CRUTableForceOptions* aTable = pTablesList_-> GetNext(pos); if (tableName == aTable->GetFullName()) { return aTable->GetMdamOptions(); } } return CRUForceOptions::MDAM_NO_FORCE; }
CRUTableForceOptions::CRUTableForceOptions(const CRUTableForceOptions& srcTbl) { tableName_ = srcTbl.GetFullName(); mdam_ = srcTbl.GetMdamOptions(); }