greenplumn CMDIdGPDB 源码
greenplumn CMDIdGPDB 代码
文件路径:/src/backend/gporca/libnaucrates/include/naucrates/md/CMDIdGPDB.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2011 Greenplum, Inc.
//
// @filename:
// CMDIdGPDB.h
//
// @doc:
// Class for representing id and version of metadata objects in GPDB
//---------------------------------------------------------------------------
#ifndef GPMD_CMDIdGPDB_H
#define GPMD_CMDIdGPDB_H
#include "gpos/base.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/string/CWStringConst.h"
#include "naucrates/dxl/gpdb_types.h"
#include "naucrates/md/CSystemId.h"
#include "naucrates/md/IMDId.h"
// TODO: - Feb 1, 2012; remove once system id is part of the mdid
#define GPMD_GPDB_SYSID GPOS_WSZ_LIT("GPDB")
namespace gpmd
{
using namespace gpos;
//---------------------------------------------------------------------------
// @class:
// CMDIdGPDB
//
// @doc:
// Class for representing ids of GPDB metadata objects
//
//---------------------------------------------------------------------------
class CMDIdGPDB : public IMDId
{
protected:
// source system id
CSystemId m_sysid;
// id from GPDB system catalog
OID m_oid;
// major version number
ULONG m_major_version;
// minor version number
ULONG m_minor_version;
// buffer for the serialized mdid
WCHAR m_mdid_array[GPDXL_MDID_LENGTH];
// string representation of the mdid
CWStringStatic m_str;
// serialize mdid
virtual void Serialize();
public:
// ctors
CMDIdGPDB(CSystemId sysid, OID oid);
explicit CMDIdGPDB(OID oid);
CMDIdGPDB(OID oid, ULONG version_major, ULONG version_minor);
// copy ctor
explicit CMDIdGPDB(const CMDIdGPDB &mdidSource);
EMDIdType
MdidType() const override
{
return EmdidGPDB;
}
// string representation of mdid
const WCHAR *GetBuffer() const override;
// source system id
CSystemId
Sysid() const override
{
return m_sysid;
}
// oid
virtual OID Oid() const;
// major version
virtual ULONG VersionMajor() const;
// minor version
virtual ULONG VersionMinor() const;
// equality check
BOOL Equals(const IMDId *mdid) const override;
// computes the hash value for the metadata id
ULONG
HashValue() const override
{
return gpos::CombineHashes(
MdidType(),
gpos::CombineHashes(
gpos::HashValue(&m_oid),
gpos::CombineHashes(gpos::HashValue(&m_major_version),
gpos::HashValue(&m_minor_version))));
}
// is the mdid valid
BOOL IsValid() const override;
// serialize mdid in DXL as the value of the specified attribute
void Serialize(CXMLSerializer *xml_serializer,
const CWStringConst *pstrAttribute) const override;
// debug print of the metadata id
IOstream &OsPrint(IOstream &os) const override;
// const converter
static const CMDIdGPDB *
CastMdid(const IMDId *mdid)
{
GPOS_ASSERT(nullptr != mdid && EmdidGPDB == mdid->MdidType());
return dynamic_cast<const CMDIdGPDB *>(mdid);
}
// non-const converter
static CMDIdGPDB *
CastMdid(IMDId *mdid)
{
GPOS_ASSERT(nullptr != mdid && (EmdidGPDB == mdid->MdidType() ||
EmdidGPDBCtas == mdid->MdidType()));
return dynamic_cast<CMDIdGPDB *>(mdid);
}
IMDId *
Copy(CMemoryPool *mp) const override
{
return GPOS_NEW(mp) CMDIdGPDB(*this);
}
// invalid mdid
static CMDIdGPDB m_mdid_invalid_key;
// int2 mdid
static CMDIdGPDB m_mdid_int2;
// int4 mdid
static CMDIdGPDB m_mdid_int4;
// int8 mdid
static CMDIdGPDB m_mdid_int8;
// oid mdid
static CMDIdGPDB m_mdid_oid;
// bool mdid
static CMDIdGPDB m_mdid_bool;
// numeric mdid
static CMDIdGPDB m_mdid_numeric;
// date mdid
static CMDIdGPDB m_mdid_date;
// time mdid
static CMDIdGPDB m_mdid_time;
// time with time zone mdid
static CMDIdGPDB m_mdid_timeTz;
// timestamp mdid
static CMDIdGPDB m_mdid_timestamp;
// timestamp with time zone mdid
static CMDIdGPDB m_mdid_timestampTz;
// absolute time mdid
static CMDIdGPDB m_mdid_abs_time;
// relative time mdid
static CMDIdGPDB m_mdid_relative_time;
// interval mdid
static CMDIdGPDB m_mdid_interval;
// time interval mdid
static CMDIdGPDB m_mdid_time_interval;
// char mdid
static CMDIdGPDB m_mdid_char;
// bpchar mdid
static CMDIdGPDB m_mdid_bpchar;
// varchar mdid
static CMDIdGPDB m_mdid_varchar;
// text mdid
static CMDIdGPDB m_mdid_text;
// name mdid
static CMDIdGPDB m_mdid_name;
// float4 mdid
static CMDIdGPDB m_mdid_float4;
// float8 mdid
static CMDIdGPDB m_mdid_float8;
// cash mdid
static CMDIdGPDB m_mdid_cash;
// inet mdid
static CMDIdGPDB m_mdid_inet;
// cidr mdid
static CMDIdGPDB m_mdid_cidr;
// macaddr mdid
static CMDIdGPDB m_mdid_macaddr;
// count(*) mdid
static CMDIdGPDB m_mdid_count_star;
// count(Any) mdid
static CMDIdGPDB m_mdid_count_any;
// uuid mdid
static CMDIdGPDB m_mdid_uuid;
// unknown datatype mdid
static CMDIdGPDB m_mdid_unknown;
};
} // namespace gpmd
#endif // !GPMD_CMDIdGPDB_H
// EOF
相关信息
相关文章
greenplumn CDXLStatsDerivedColumn 源码
greenplumn CDXLStatsDerivedRelation 源码
greenplumn CMDAggregateGPDB 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦