greenplumn COptColInfo 源码
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 CContextDXLToPlStmt 源码
greenplumn CContextQueryToDXL 源码
greenplumn CDXLTranslateContext 源码
greenplumn CDXLTranslateContextBaseTable 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦