greenplumn CGPDBAttInfo 代码
文件路径:/src/include/gpopt/translate/CGPDBAttInfo.h
/---------------------------------------------------------------------------
/ Greenplum Database
/ Copyright (C) 2012 EMC Corp.
/
/ @filename:
/ CGPDBAttInfo.h
/
/ @doc:
/ Class to uniquely identify a column in GPDB
/
/ @test:
/
/
/---------------------------------------------------------------------------
#ifndef GPDXL_CGPDBAttInfo_H
#define GPDXL_CGPDBAttInfo_H
#include "gpos/base.h"
#include "gpos/common/CRefCount.h"
#include "gpos/utils.h"
#include "naucrates/dxl/gpdb_types.h"
namespace gpdxl
{
using namespace gpos;
/---------------------------------------------------------------------------
/ @class:
/ CGPDBAttInfo
/
/ @doc:
/ Class to uniquely identify a column in GPDB
/
/---------------------------------------------------------------------------
class CGPDBAttInfo : public CRefCount
{
private:
/ query level number
ULONG m_query_level;
/ varno in the rtable
ULONG m_varno;
/ attno
INT m_attno;
public:
CGPDBAttInfo(const CGPDBAttInfo &) = delete;
/ ctor
CGPDBAttInfo(ULONG query_level, ULONG var_no, INT attrnum)
: m_query_level(query_level), m_varno(var_no), m_attno(attrnum)
{
}
/ d'tor
~CGPDBAttInfo() override = default;
/ accessor
ULONG
GetQueryLevel() const
{
return m_query_level;
}
/ accessor
ULONG
GetVarNo() const
{
return m_varno;
}
/ accessor
INT
GetAttNo() const
{
return m_attno;
}
/ equality check
BOOL
Equals(const CGPDBAttInfo &gpdb_att_info) const
{
return m_query_level == gpdb_att_info.m_query_level &&
m_varno == gpdb_att_info.m_varno &&
m_attno == gpdb_att_info.m_attno;
}
/ hash value
ULONG
HashValue() const
{
return gpos::CombineHashes(
gpos::HashValue(&m_query_level),
gpos::CombineHashes(gpos::HashValue(&m_varno),
gpos::HashValue(&m_attno)));
}
};
/ hash function
inline ULONG
HashGPDBAttInfo(const CGPDBAttInfo *gpdb_att_info)
{
GPOS_ASSERT(nullptr != gpdb_att_info);
return gpdb_att_info->HashValue();
}
/ equality function
inline BOOL
EqualGPDBAttInfo(const CGPDBAttInfo *gpdb_att_info_a,
const CGPDBAttInfo *gpdb_att_info_b)
{
GPOS_ASSERT(nullptr != gpdb_att_info_a && nullptr != gpdb_att_info_b);
return gpdb_att_info_a->Equals(*gpdb_att_info_b);
}
} / namespace gpdxl
#endif / !GPDXL_CGPDBAttInfo_H
/ EOF
相关信息
相关文章
greenplumn CContextDXLToPlStmt 源码
greenplumn CContextQueryToDXL 源码
greenplumn CDXLTranslateContext 源码
greenplumn CDXLTranslateContextBaseTable 源码
greenplumn CMappingColIdVar 源码