greenplumn CMDRequest 源码

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

greenplumn CMDRequest 代码

文件路径:/src/backend/gporca/libnaucrates/include/naucrates/md/CMDRequest.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2012 EMC Corp.
//
//	@filename:
//		CMDRequest.h
//
//	@doc:
//		Class for a representing MD requests
//---------------------------------------------------------------------------



#ifndef GPMD_CMDRequest_H
#define GPMD_CMDRequest_H

#include "gpos/base.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/common/CRefCount.h"

#include "naucrates/md/CSystemId.h"
#include "naucrates/md/IMDFunction.h"
#include "naucrates/md/IMDType.h"

namespace gpmd
{
using namespace gpos;


//--------------------------------------------------------------------------
//	@class:
//		CMDRequest
//
//	@doc:
//		Class for representing MD requests
//
//--------------------------------------------------------------------------
class CMDRequest : public CRefCount
{
public:
	// fwd decl
	struct SMDTypeRequest;
	struct SMDFuncRequest;

	// array of type requests
	using SMDTypeRequestArray = CDynamicPtrArray<SMDTypeRequest, CleanupDelete>;

	//---------------------------------------------------------------------------
	//	@class:
	//		SMDTypeRequest
	//
	//	@doc:
	//		Struct for representing requests for types metadata
	//
	//---------------------------------------------------------------------------
	struct SMDTypeRequest
	{
		// system id
		CSystemId m_sysid;

		// type info
		IMDType::ETypeInfo m_type_info;

		// ctor
		SMDTypeRequest(CSystemId sysid, IMDType::ETypeInfo type_info)
			: m_sysid(sysid), m_type_info(type_info)
		{
		}
	};

private:
	// memory pool
	CMemoryPool *m_mp;

	// array of mdids
	IMdIdArray *m_mdid_array;

	// type info requests
	SMDTypeRequestArray *m_mdtype_request_array;

	// serialize system id
	CWStringDynamic *GetStrRepr(CSystemId sysid);

public:
	CMDRequest(const CMDRequest &) = delete;

	// ctor
	CMDRequest(CMemoryPool *mp, IMdIdArray *mdid_array,
			   SMDTypeRequestArray *mdtype_request_array);

	// ctor: type request only
	CMDRequest(CMemoryPool *mp, SMDTypeRequest *md_type_request);

	// dtor
	~CMDRequest() override;

	// accessors

	// array of mdids
	IMdIdArray *
	GetMdIdArray() const
	{
		return m_mdid_array;
	}

	// array of type info requests
	SMDTypeRequestArray *
	GetMDTypeRequestArray() const
	{
		return m_mdtype_request_array;
	}

	// serialize request in DXL format
	virtual void Serialize(gpdxl::CXMLSerializer *xml_serializer);
};
}  // namespace gpmd

#endif	// !GPMD_CMDRequest_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CDXLBucket 源码

greenplumn CDXLColStats 源码

greenplumn CDXLRelStats 源码

greenplumn CDXLStatsDerivedColumn 源码

greenplumn CDXLStatsDerivedRelation 源码

greenplumn CGPDBTypeHelper 源码

greenplumn CMDAggregateGPDB 源码

greenplumn CMDArrayCoerceCastGPDB 源码

greenplumn CMDCastGPDB 源码

greenplumn CMDCheckConstraintGPDB 源码

0  赞