greenplumn CJobGroup 源码

  • 2022-08-18
  • 浏览 (363)

greenplumn CJobGroup 代码

文件路径:/src/backend/gporca/libgpopt/src/search/CJobGroup.cpp

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2011 Greenplum, Inc.
//
//	@filename:
//		CJobGroup.cpp
//
//	@doc:
//		Implementation of group job superclass
//---------------------------------------------------------------------------

#include "gpopt/search/CJobGroup.h"

#include "gpopt/search/CGroupProxy.h"
#include "gpopt/search/CJobFactory.h"
#include "gpopt/search/CJobGroupExpressionExploration.h"
#include "gpopt/search/CJobGroupExpressionImplementation.h"

using namespace gpopt;


//---------------------------------------------------------------------------
//	@function:
//		CJobGroup::Init
//
//	@doc:
//		Initialize job
//
//---------------------------------------------------------------------------
void
CJobGroup::Init(CGroup *pgroup)
{
	GPOS_ASSERT(!FInit());
	GPOS_ASSERT(nullptr != pgroup);

	m_pgroup = pgroup;
	m_pgexprLastScheduled = nullptr;
}


//---------------------------------------------------------------------------
//	@function:
//		CJobGroup::PgexprFirstUnschedNonLogical
//
//	@doc:
//		Get first non-logical group expression with an unscheduled job
//
//---------------------------------------------------------------------------
CGroupExpression *
CJobGroup::PgexprFirstUnschedNonLogical()
{
	CGroupExpression *pgexpr = nullptr;
	{
		CGroupProxy gp(m_pgroup);
		if (nullptr == m_pgexprLastScheduled)
		{
			// get first group expression
			pgexpr = gp.PgexprSkipLogical(nullptr /*pgexpr*/);
		}
		else
		{
			// get group expression next to last scheduled one
			pgexpr = gp.PgexprSkipLogical(m_pgexprLastScheduled);
		}
	}

	return pgexpr;
}


//---------------------------------------------------------------------------
//	@function:
//		CJobGroup::PgexprFirstUnschedLogical
//
//	@doc:
//		Get first logical group expression with an unscheduled job
//
//---------------------------------------------------------------------------
CGroupExpression *
CJobGroup::PgexprFirstUnschedLogical()
{
	CGroupExpression *pgexpr = nullptr;
	{
		CGroupProxy gp(m_pgroup);
		if (nullptr == m_pgexprLastScheduled)
		{
			// get first group expression
			pgexpr = gp.PgexprFirst();
		}
		else
		{
			// get group expression next to last scheduled one
			pgexpr = gp.PgexprNext(m_pgexprLastScheduled);
		}
	}

	return pgexpr;
}

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CBinding 源码

greenplumn CGroup 源码

greenplumn CGroupExpression 源码

greenplumn CGroupProxy 源码

greenplumn CJob 源码

greenplumn CJobFactory 源码

greenplumn CJobGroupExploration 源码

greenplumn CJobGroupExpression 源码

greenplumn CJobGroupExpressionExploration 源码

greenplumn CJobGroupExpressionImplementation 源码

0  赞