Esempio n. 1
0
//--------------------------------------------------------------------------//
//	CRUTask::Dump()
//
//	Called by CRUDependenceGraph::Dump()
//
//	Prints the "standard" task's dump
//--------------------------------------------------------------------------//
// LCOV_EXCL_START :dpm
void CRUTask::Dump(CDSString &to)
{
    char idStr[10];
    sprintf(idStr,"%d",GetId());

    to += "\nTASK ID = " + CDSString(idStr);
    to += "\n\t" + GetTaskName() + "\n";

    if (0 == pSuccList_->GetCount())
    {
        to += "\tNo tasks depend on me.\n";
    }
    else
    {
        to += "\tTasks that depend on me:\n";

        DSListPosition pos = pSuccList_->GetHeadPosition();
        while (NULL != pos)
        {
            CRUTask *pTask = pSuccList_->GetNext(pos);
            sprintf(idStr,"%d",pTask->GetId());
            to += "\t\tTask id = " + CDSString(idStr) + "\n";
        }
    }
}
//--------------------------------------------------------------------------//
//	CRURefreshTaskExecutor::LoadRequest()
//--------------------------------------------------------------------------//
// LCOV_EXCL_START :cnu
void CRURefreshTaskExecutor::
	LoadRequest(CUOFsIpcMessageTranslator &translator)
{
	inherited::LoadRequest(translator);

	translator.ReadBlock(&isRecompute_,sizeof(BOOL));

	Int32 stringSize;
	char buffer[CUOFsIpcMessageTranslator::MaxMsgSize];

	translator.ReadBlock(&stringSize, sizeof(Int32));
#pragma nowarn(1506)   // warning elimination 
	translator.ReadBlock(buffer, stringSize);
#pragma warn(1506)  // warning elimination 

	rootMVName_ = CDSString(buffer);

	translator.ReadBlock(&stringSize, sizeof(Int32));
#pragma nowarn(1506)   // warning elimination 
	translator.ReadBlock(buffer, stringSize);
#pragma warn(1506)  // warning elimination 

	rootMVSchema_ = CDSString(buffer);

	translator.ReadBlock(&stringSize, sizeof(Int32));
#pragma nowarn(1506)   // warning elimination 
	translator.ReadBlock(buffer, stringSize);
#pragma warn(1506)  // warning elimination 

	rootMVCatalog_ = CDSString(buffer);
	
	translator.ReadBlock(&rootMVUID_, sizeof(TInt64));
	
	translator.ReadBlock(&rootMVType_, sizeof(Int32));

	translator.ReadBlock(&forceFlags_, sizeof(TInt32));

	if (NO_FORCE != forceFlags_)
	{
		translator.ReadBlock(&numOfStmtInContainer_, sizeof(TInt32));
		
		pRefreshTEDynamicContainer_ = 
#pragma nowarn(1506)   // warning elimination 
			new CRUSQLDynamicStatementContainer(numOfStmtInContainer_);		
#pragma warn(1506)  // warning elimination 
		// Handle refresh executor sql dynamic container
		pRefreshTEDynamicContainer_->LoadData(translator);
	}
	
	// Handle lock table dynamic container
	short lockTable;
	translator.ReadBlock(&lockTable, sizeof(short));
	
	if (1 == lockTable)
	{
	  tableLockProtocol_ = new CRUTableLockProtocol();
	  tableLockProtocol_->LoadData(translator);
	}
}
Esempio n. 3
0
void CRUJournal::Close()
{
	SetTimePrint(TRUE);
	LogMessage(RefreshDiags[1] + CDSString("\n"));

        // if the user specified an OUTFILE option and the file is open
	if ((!emsOnlyLog_) && (logfile_.IsOpen()))
	  logfile_.Close();
}
void CRULogCleanupTaskExecutor::Start()
{
	CDSString msg;
	
	msg = RefreshDiags[17];
	msg += GetLogCleanupTask()->GetTable().GetFullName();
	msg += CDSString("...\n");
	
	CRUGlobals::GetInstance()->GetJournal().LogMessage(msg);
	
	SetState(EX_CLEAN);
}
CDSString CRUDupElimSQLComposer::
ComposeIUDLogKeyColName(const CRUKeyColumn *pKeyCol)
{
	CDSString name(pKeyCol->GetName());

	if (CDSString("SYSKEY") == name)
	{
		// If the original table has a syskey, it becomes @SYSKEY in the log
		// (the log has a syskey of its own).
		name = ComposeQuotedColName(name);
	}

	return name;
}
Esempio n. 6
0
void CRUJournal::Open()
{
	RUASSERT(FALSE == logfile_.IsOpen());

        // if the user does not specify an OUTFILE option REFRESH messages are only sent to EMS
        if (!emsOnlyLog_)
        {
	   logfile_.OpenWOHeader(fname_.c_string(), CDSLogfile::eWrite);
	   if (FALSE == logfile_.IsOpen())
	   {
		   // Failed to open the file
		   CDSException ex;
		   ex.SetError(IDS_RU_OUTFILE_FAILED);
		   ex.AddArgument(fname_);
   
		   throw ex;
	   }
        }
	LogMessage(CDSString(RefreshDiags[0] + CDSString("\n")));
	SetTimePrint(FALSE);

	rowNum_ = 0;
}
void CRULogCleanupTaskExecutor::Epilogue()
{
	CRULogCleanupTask *pTask = GetLogCleanupTask();
	RUASSERT(NULL != pTask);
	CRUTbl &tbl = pTask->GetTable();

	// Update the T.MIN_EPOCH metadata variable
	BeginTransaction();
	tbl.SetMinLogEpoch(pTask->GetMaxInapplicableEpoch()+1);
	tbl.SaveMetadata();
	CommitTransaction();

	CDSString msg(RefreshDiags[18]);
	msg += GetLogCleanupTask()->GetTable().GetFullName();
	msg += CDSString(".\n");

	CRUGlobals::GetInstance()->GetJournal().LogMessage(msg);
	
	SetState(EX_COMPLETE);
}
void CRUTableSyncTaskExecutor::
	LoadRequest(CUOFsIpcMessageTranslator &translator)
{
	inherited::LoadRequest(translator);

	Int32 stringSize;
	Int32 const maxStringSize = CUOFsIpcMessageTranslator::MaxMsgSize;
	char buffer[maxStringSize];

	translator.ReadBlock(&stringSize, sizeof(Int32));
	
	RUASSERT(maxStringSize > stringSize);

#pragma nowarn(1506)   // warning elimination 
	translator.ReadBlock(buffer, stringSize);
#pragma warn(1506)  // warning elimination 
	
	tableName_ = CDSString(buffer);

	syncTableDynamicContainer_.LoadData(translator);
}
Esempio n. 9
0
//--------------------------------------------------------------------------//
//	CRUTask::DumpGraphNode()
//
//	Called by CRUDependenceGraph::DumpGraph()
//
//	Prints the task's edges dump acceptable for the Dotty GUI
//
//--------------------------------------------------------------------------//
// LCOV_EXCL_START :dpm
void CRUTask::DumpGraphEdges(CDSString &to)
{
    if (0 == pSuccList_->GetCount())
    {
        return;
    }

    char fromChr[10],toChr[10];
    sprintf(fromChr,"%d",GetId());

    CDSString fromStr(fromChr);
    fromStr = "\t\t" + fromStr + " -> ";

    DSListPosition pos = pSuccList_->GetHeadPosition();
    while (NULL != pos)
    {
        CRUTask *pTask = pSuccList_->GetNext(pos);
        sprintf(toChr,"%d",pTask->GetId());
        to += fromStr + CDSString(toChr) + ";\n";
    }
}
Esempio n. 10
0
void CRUJournal::LogError(CDSException &ex)
{
	enum { BUFSIZE = 4096 };

	Int32 nerr = ex.GetNumErrors();
	char buffer[BUFSIZE];
	CDSString msg;

	for (Int32 i=0; i<nerr; i++) 
	{
		ex.GetErrorMsg(i, buffer, BUFSIZE);
		
		if (buffer[0] != 0)
		{
			// Clear the trailing whitespace
			char *p = buffer + strlen(buffer) - 1;
			for (;buffer != p && isspace((unsigned char)*p); p--, *p=0); // For VS2003
		}

		msg += buffer + CDSString("\n");
	}

        LogMessage(msg, FALSE /* don't print row number */, TRUE /* it is an error msg */);
}
void CRURefreshSQLComposer::AddPhaseParam()
{
	sql_+= " \n\tPHASE "; 
	sql_+= CDSString(CRUSQLDynamicStatementContainer::COMPILED_PARAM_TOKEN);
	sql_+= " ";
}