greenplumn COptColInfo 源码

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

greenplumn COptColInfo 代码

文件路径:/src/include/gpopt/translate/COptColInfo.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2012 EMC Greenplum
//
//	@filename:
//		COptColInfo.h
//
//	@doc:
//		Class to uniquely identify a column in optimizer
//
//	@test:
//
//
//---------------------------------------------------------------------------

#ifndef GPDXL_COptColInfo_H
#define GPDXL_COptColInfo_H

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

namespace gpdxl
{
using namespace gpos;

//---------------------------------------------------------------------------
//	@class:
//		COptColInfo
//
//	@doc:
//		pair of column id and column name
//
//---------------------------------------------------------------------------
class COptColInfo : public CRefCount
{
private:
	// column id
	ULONG m_colid;

	// column name
	CWStringBase *m_str;

public:
	COptColInfo(const COptColInfo &) = delete;

	// ctor
	COptColInfo(ULONG colid, CWStringBase *str) : m_colid(colid), m_str(str)
	{
		GPOS_ASSERT(m_str);
	}

	// dtor
	~COptColInfo() override
	{
		GPOS_DELETE(m_str);
	}

	// accessors
	ULONG
	GetColId() const
	{
		return m_colid;
	}

	CWStringBase *
	GetOptColName() const
	{
		return m_str;
	}

	// equality check
	BOOL
	Equals(const COptColInfo &optcolinfo) const
	{
		// don't need to check name as column id is unique
		return m_colid == optcolinfo.m_colid;
	}

	// hash value
	ULONG
	HashValue() const
	{
		return gpos::HashValue(&m_colid);
	}
};

// hash function
inline ULONG
UlHashOptColInfo(const COptColInfo *opt_col_info)
{
	GPOS_ASSERT(nullptr != opt_col_info);
	return opt_col_info->HashValue();
}

// equality function
inline BOOL
FEqualOptColInfo(const COptColInfo *opt_col_infoA,
				 const COptColInfo *opt_col_infoB)
{
	GPOS_ASSERT(nullptr != opt_col_infoA && nullptr != opt_col_infoB);
	return opt_col_infoA->Equals(*opt_col_infoB);
}

}  // namespace gpdxl

#endif	// !GPDXL_COptColInfo_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CCTEListEntry 源码

greenplumn CContextDXLToPlStmt 源码

greenplumn CContextQueryToDXL 源码

greenplumn CDXLTranslateContext 源码

greenplumn CDXLTranslateContextBaseTable 源码

greenplumn CGPDBAttInfo 源码

greenplumn CGPDBAttOptCol 源码

greenplumn CIndexQualInfo 源码

greenplumn CMappingColIdVar 源码

greenplumn CMappingColIdVarPlStmt 源码

0  赞