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; } }
//--------------------------------------------------------------------------// // CRURefreshTaskExecutor::ComposeMDAMStatements() // //--------------------------------------------------------------------------// void CRURefreshTaskExecutor::ComposeMDAMStatements() { BOOL hasActiveCQS = FALSE; CRURefreshSQLComposer myComposer(GetRefreshTask()); CRUMV &rootMV = GetRefreshTask()->GetRootMV(); const CRUMVForceOptions* pForceOption = rootMV.GetMVForceOption(); // Even if there are no force options, we still force mdam for tables // with more than two columns. ComposeControlTableStmtForUsedTables(); // MV base tables force options // LCOV_EXCL_START :rfi if (NULL != pForceOption && CRUForceOptions::MDAM_NO_FORCE != pForceOption->GetMDAMoption()) { // Compose CONTROL TABLE mv_name MDAM option myComposer.ComposeCntrlTableMDAMText(pForceOption->GetMDAMoption(), &rootMV.GetFullName()); pRefreshTEDynamicContainer_->SetStatementText(MV_MDAM_STAT, myComposer.GetSQL()); forceFlags_ |= FORCE_MV_MDAM; } // Compose reset MDAMs if (forceFlags_ & FORCE_MV_MDAM || forceFlags_ & FORCE_TABLE_MDAM) { // Compose CONTROL TABLE * MDAM 'RESET' myComposer.ComposeResetCntrlTableMDAMText(); pRefreshTEDynamicContainer_->SetStatementText(RESET_MDAM_STAT, myComposer.GetSQL()); } // LCOV_EXCL_STOP }
void CRULogCleanupTaskExecutor::ComposeMySql() { CRULogCleanupSQLComposer myComposer(GetLogCleanupTask()); myComposer.ComposeIUDLogCleanup(CLEAN_IUD_BASIC); logCleanupTEDynamicContainer_. SetStatementText(CLEAN_IUD_BASIC, myComposer.GetSQL()); myComposer.ComposeIUDLogCleanup(CLEAN_IUD_FIRSTN); logCleanupTEDynamicContainer_. SetStatementText(CLEAN_IUD_FIRSTN, myComposer.GetSQL()); myComposer.ComposeIUDLogCleanup(CLEAN_IUD_MCOMMIT); logCleanupTEDynamicContainer_. SetStatementText(CLEAN_IUD_MCOMMIT, myComposer.GetSQL()); if (TRUE == hasRangeLog_) { myComposer.ComposeRangeLogCleanup(); logCleanupTEDynamicContainer_. SetStatementText(CLEAN_RANGE,myComposer.GetSQL()); } myComposer.composeGetRowCount(); logCleanupTEDynamicContainer_. SetStatementText(CLEAN_ROWCOUNT, myComposer.GetSQL()); }
void CRUUnAuditRefreshTaskExecutor::ComposeMySql() { CRURefreshTask *pTask = GetRefreshTask(); CRUMV &mv = pTask->GetRootMV(); CRUSimpleRefreshSQLComposer myComposer(pTask); // UNLOCK TABLE statement myComposer.ComposeUnLock(GetRootMVName()); unAuditRefreshTEDynamicContainer_.SetStatementText (RU_UNLOCK_TABLE, myComposer.GetSQL()); // POPINDEX CatApi request if (TRUE == isPopindex_) { numOfIndexes_ = mv.GetIndexList().GetCount(); if (0 < numOfIndexes_) { ComposeIndexesSql(); } } // Compose the LOCK TABLE sql statements for locking all tables // in the on statement MV initialization if (CDDObject::eON_STATEMENT == GetRootMVType()) { CRUTblList &tblList = mv.GetTablesUsedByMe(); DSListPosition pos = tblList.GetHeadPosition(); pLockTablesTEDynamicContainer_ = new CRUSQLDynamicStatementContainer((short)tblList.GetCount()); Int32 i=0; while (NULL != pos) { CRUTbl *pTbl = tblList.GetNext(pos); myComposer.ComposeLock(pTbl->GetFullName(), FALSE /*shared*/); pLockTablesTEDynamicContainer_->SetStatementText #pragma nowarn(1506) // warning elimination (i,myComposer.GetSQL()); #pragma warn(1506) // warning elimination i++; } } }
void CRURefreshTaskExecutor::ComposeMySql() { CRURefreshSQLComposer myComposer(GetRefreshTask()); CRUMV &rootMV = GetRefreshTask()->GetRootMV(); numOfStmtInContainer_ = rootMV.GetTablesUsedByMe().GetCount() + FIRST_TBL_STAT; pRefreshTEDynamicContainer_ = #pragma nowarn(1506) // warning elimination new CRUSQLDynamicStatementContainer(numOfStmtInContainer_); #pragma warn(1506) // warning elimination ComposeForceStatements(); }
void CRUAuditRefreshTaskExecutor::ComposeMySql() { CRUSimpleRefreshSQLComposer myComposer(GetRefreshTask()); CRUMV &rootMV = GetRootMV(); if (TRUE == isDeleteMultiTxnContext_) { myComposer.ComposeDeleteContextLogTable(); auditRefreshTEDynamicContainer_.SetStatementText (DELETE_MULT_TXN_CTX_TBL,myComposer.GetSQL()); } // POPINDEX CatApi request if (TRUE == isPopindex_) { numOfIndexes_ = rootMV.GetIndexList().GetCount(); if (0 < numOfIndexes_) { ComposeIndexesSql(); } } // Compose the LOCK TABLE sql statements for locking all tables // in the on statement MV initialization if (CDDObject::eON_STATEMENT == GetRootMVType()) { CRUTblList &tblList = rootMV.GetTablesUsedByMe(); DSListPosition pos = tblList.GetHeadPosition(); pLockTablesTEDynamicContainer_ = new CRUSQLDynamicStatementContainer((short)tblList.GetCount()); Int32 i=0; while (NULL != pos) { CRUTbl *pTbl = tblList.GetNext(pos); myComposer.ComposeLock(pTbl->GetFullName(), FALSE /*shared*/); pLockTablesTEDynamicContainer_->SetStatementText (i,myComposer.GetSQL()); i++; } } }
//--------------------------------------------------------------------------// // CRURefreshTaskExecutor::ComposeCQSStatements() // //--------------------------------------------------------------------------// void CRURefreshTaskExecutor::ComposeCQSStatements() { BOOL hasActiveCQS = FALSE; CRURefreshSQLComposer myComposer(GetRefreshTask()); CRUMV &rootMV = GetRefreshTask()->GetRootMV(); const CRUMVForceOptions* pForceOption = rootMV.GetMVForceOption(); if (NULL == pForceOption) { return; } // MV force options // LCOV_EXCL_START :rfi if ((CRUForceOptions::GB_NO_FORCE != pForceOption->GetGroupByoption() || CRUForceOptions::JOIN_NO_FORCE != pForceOption->GetJoinoption())) { // Compose Control query shape for internal refresh stmt myComposer.ComposeControlQueryShape(); pRefreshTEDynamicContainer_->SetStatementText(CQS_STAT, myComposer.GetSQL()); forceFlags_ = forceFlags_ | FORCE_CQS; hasActiveCQS = TRUE; } // Deal with a specific user CQS if (FALSE == pForceOption->GetCQSStatment().IsEmpty()) { pRefreshTEDynamicContainer_->SetStatementText (USER_CQS_FORCE, pForceOption->GetCQSStatment()); forceFlags_ = forceFlags_ | FORCE_USER_CQS; hasActiveCQS = TRUE; } if (TRUE == hasActiveCQS) { myComposer.ComposeControlQueryShapeCut(); pRefreshTEDynamicContainer_->SetStatementText(CQS_CUT_STAT, myComposer.GetSQL()); } // LCOV_EXCL_STOP }
void CRURefreshTaskExecutor::ComposeForceStatements() { CRUMV &rootMV = GetRefreshTask()->GetRootMV(); const CRUMVForceOptions* pForceOption = rootMV.GetMVForceOption(); CRURefreshSQLComposer myComposer(GetRefreshTask()); // Deal with explain data // LCOV_EXCL_START :rfi if (NULL != pForceOption && CRUForceOptions::EXPLAIN_ON == pForceOption->GetExplainOption()) { forceFlags_ = forceFlags_ | FORCE_SHOW_EXPLAIN; myComposer.ComposeShowExplain(); pRefreshTEDynamicContainer_->SetStatementText(SHOW_EXPLAIN, myComposer.GetSQL()); } // LCOV_EXCL_STOP ComposeCQSStatements(); ComposeMDAMStatements(); }