greenplumn CMDAggregateGPDB 源码

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

greenplumn CMDAggregateGPDB 代码

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

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2011 EMC Corp.
//
//	@filename:
//		CMDAggregateGPDB.h
//
//	@doc:
//		Class for representing for GPDB-specific aggregates in the metadata cache
//---------------------------------------------------------------------------



#ifndef GPMD_CMDAggregateGPDB_H
#define GPMD_CMDAggregateGPDB_H

#include "gpos/base.h"

#include "naucrates/dxl/xml/CXMLSerializer.h"
#include "naucrates/md/IMDAggregate.h"


namespace gpmd
{
using namespace gpos;


//---------------------------------------------------------------------------
//	@class:
//		CMDAggregateGPDB
//
//	@doc:
//		Class for representing GPDB-specific aggregates in the metadata
//		cache
//
//---------------------------------------------------------------------------
class CMDAggregateGPDB : public IMDAggregate
{
	// memory pool
	CMemoryPool *m_mp;

	// DXL for object
	const CWStringDynamic *m_dxl_str;

	// aggregate id
	IMDId *m_mdid;

	// aggregate name
	CMDName *m_mdname;

	// result type
	IMDId *m_mdid_type_result;

	// type of intermediate results
	IMDId *m_mdid_type_intermediate;

	// is aggregate ordered
	BOOL m_is_ordered;

	// is aggregate splittable
	BOOL m_is_splittable;

	// is aggregate hash capable
	BOOL m_hash_agg_capable;

public:
	CMDAggregateGPDB(const CMDAggregateGPDB &) = delete;

	// ctor
	CMDAggregateGPDB(CMemoryPool *mp, IMDId *mdid, CMDName *mdname,
					 IMDId *result_type_mdid,
					 IMDId *intermediate_result_type_mdid, BOOL is_ordered_agg,
					 BOOL is_splittable, BOOL is_hash_agg_capable);

	//dtor
	~CMDAggregateGPDB() override;

	// string representation of object
	const CWStringDynamic *
	GetStrRepr() const override
	{
		return m_dxl_str;
	}

	// aggregate id
	IMDId *MDId() const override;

	// aggregate name
	CMDName Mdname() const override;

	// result id
	IMDId *GetResultTypeMdid() const override;

	// intermediate result id
	IMDId *GetIntermediateResultTypeMdid() const override;

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

	// is an ordered aggregate
	BOOL
	IsOrdered() const override
	{
		return m_is_ordered;
	}

	// is aggregate splittable
	BOOL
	IsSplittable() const override
	{
		return m_is_splittable;
	}

	// is aggregate hash capable
	BOOL
	IsHashAggCapable() const override
	{
		return m_hash_agg_capable;
	}

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

#endif	// !GPMD_CMDAggregateGPDB_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CDXLBucket 源码

greenplumn CDXLColStats 源码

greenplumn CDXLRelStats 源码

greenplumn CDXLStatsDerivedColumn 源码

greenplumn CDXLStatsDerivedRelation 源码

greenplumn CGPDBTypeHelper 源码

greenplumn CMDArrayCoerceCastGPDB 源码

greenplumn CMDCastGPDB 源码

greenplumn CMDCheckConstraintGPDB 源码

greenplumn CMDColumn 源码

0  赞