greenplumn CMDProviderRelcache 源码

2022-08-18 浏览 (535)

greenplumn CMDProviderRelcache 代码

文件路径:/src/backend/gpopt/relcache/CMDProviderRelcache.cpp

/---------------------------------------------------------------------------
/	Greenplum Database
/	Copyright (C) 2011 EMC Corp.
/
/	@filename:
/		CMDProviderRelcache.cpp
/
/	@doc:
/		Implementation of a relcache-based metadata provider, which uses GPDB's
/		relcache to lookup objects given their ids.
/
/	@test:
/
/
/---------------------------------------------------------------------------

extern "C" {
#include "postgres.h"
}
#include "gpopt/mdcache/CMDAccessor.h"
#include "gpopt/relcache/CMDProviderRelcache.h"
#include "gpopt/translate/CTranslatorRelcacheToDXL.h"
#include "naucrates/dxl/CDXLUtils.h"
#include "naucrates/exception.h"

using namespace gpos;
using namespace gpdxl;
using namespace gpmd;

/---------------------------------------------------------------------------
/	@function:
/		CMDProviderRelcache::CMDProviderRelcache
/
/	@doc:
/		Constructs a file-based metadata provider
/
/---------------------------------------------------------------------------
CMDProviderRelcache::CMDProviderRelcache(CMemoryPool *mp) : m_mp(mp)
{
	GPOS_ASSERT(nullptr != m_mp);
}

/---------------------------------------------------------------------------
/	@function:
/		CMDProviderRelcache::GetMDObjDXLStr
/
/	@doc:
/		Returns the DXL of the requested object in the provided memory pool
/
/---------------------------------------------------------------------------
CWStringBase *
CMDProviderRelcache::GetMDObjDXLStr(CMemoryPool *mp, CMDAccessor *md_accessor,
									IMDId *md_id) const
{
	IMDCacheObject *md_obj =
		CTranslatorRelcacheToDXL::RetrieveObject(mp, md_accessor, md_id);

	GPOS_ASSERT(nullptr != md_obj);

	CWStringDynamic *str = CDXLUtils::SerializeMDObj(
		m_mp, md_obj, true /*fSerializeHeaders*/, false /*findent*/);

	/ cleanup DXL object
	md_obj->Release();

	return str;
}

/ return the requested metadata object
IMDCacheObject *
CMDProviderRelcache::GetMDObj(CMemoryPool *mp, CMDAccessor *md_accessor,
							  IMDId *mdid) const
{
	IMDCacheObject *md_obj =
		CTranslatorRelcacheToDXL::RetrieveObject(mp, md_accessor, mdid);
	GPOS_ASSERT(nullptr != md_obj);

	return md_obj;
}

/ EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn adminpack 源码

greenplumn verify_nbtree 源码

greenplumn auth_delay 源码

greenplumn auto_explain 源码

greenplumn blcost 源码

greenplumn blinsert 源码

greenplumn bloom 源码

greenplumn blscan 源码

greenplumn blutils 源码

greenplumn blvacuum 源码

  • 所属分类: 大数据
  • 本文标签: greenplum
  • 版权声明: 本文链接 https://seaxiang.com/blog/cfb7db42c1d04d68867ea4c10b1801d2