greenplumn CMDCastGPDB 源码

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

greenplumn CMDCastGPDB 代码

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

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2013 EMC Corp.
//
//	@filename:
//		CMDCastGPDB.h
//
//	@doc:
//		Implementation of GPDB-specific cast functions in the metadata cache
//---------------------------------------------------------------------------


#ifndef GPMD_CMDCastGPDB_H
#define GPMD_CMDCastGPDB_H

#include "gpos/base.h"

#include "naucrates/md/IMDCast.h"

namespace gpmd
{
using namespace gpdxl;

//---------------------------------------------------------------------------
//	@class:
//		CMDCastGPDB
//
//	@doc:
//		Implementation for GPDB-specific cast functions in the metadata cache
//
//---------------------------------------------------------------------------
class CMDCastGPDB : public IMDCast
{
private:
protected:
	// memory pool
	CMemoryPool *m_mp;

	// DXL for object
	const CWStringDynamic *m_dxl_str;

	// func id
	IMDId *m_mdid;

	// func name
	CMDName *m_mdname;

	// source type
	IMDId *m_mdid_src;

	// destination type
	IMDId *m_mdid_dest;

	// is cast between binary coercible types, i.e. the types are binary compatible
	BOOL m_is_binary_coercible;

	// cast func id
	IMDId *m_mdid_cast_func;

	// coercion path type
	EmdCoercepathType m_path_type;

public:
	CMDCastGPDB(const CMDCastGPDB &) = delete;

	// ctor
	CMDCastGPDB(CMemoryPool *mp, IMDId *mdid, CMDName *mdname, IMDId *mdid_src,
				IMDId *mdid_dest, BOOL is_binary_coercible,
				IMDId *mdid_cast_func, EmdCoercepathType path_type = EmdtNone);

	// dtor
	~CMDCastGPDB() override;

	// accessors
	const CWStringDynamic *
	GetStrRepr() const override
	{
		return m_dxl_str;
	}

	// cast object id
	IMDId *MDId() const override;

	// cast object name
	CMDName Mdname() const override;

	// source type
	IMDId *MdidSrc() const override;

	// destination type
	IMDId *MdidDest() const override;

	// is this a cast between binary coeercible types, i.e. the types are binary compatible
	BOOL IsBinaryCoercible() const override;

	// return the coercion path type
	EmdCoercepathType GetMDPathType() const override;

	// cast function id
	IMDId *GetCastFuncMdId() const override;

	// serialize object in DXL format
	void Serialize(gpdxl::CXMLSerializer *xml_serializer) const override;

#ifdef GPOS_DEBUG
	// debug print of the type in the provided stream
	void DebugPrint(IOstream &os) const override;
#endif
};
}  // namespace gpmd

#endif	// !GPMD_CMDCastGPDB_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CDXLBucket 源码

greenplumn CDXLColStats 源码

greenplumn CDXLRelStats 源码

greenplumn CDXLStatsDerivedColumn 源码

greenplumn CDXLStatsDerivedRelation 源码

greenplumn CGPDBTypeHelper 源码

greenplumn CMDAggregateGPDB 源码

greenplumn CMDArrayCoerceCastGPDB 源码

greenplumn CMDCheckConstraintGPDB 源码

greenplumn CMDColumn 源码

0  赞