greenplumn CDXLColStats 源码
greenplumn CDXLColStats 代码
文件路径:/src/backend/gporca/libnaucrates/include/naucrates/md/CDXLColStats.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2012 EMC Corp.
//
// @filename:
// CDXLColStats.h
//
// @doc:
// Class representing column stats
//---------------------------------------------------------------------------
#ifndef GPMD_CDXLColStats_H
#define GPMD_CDXLColStats_H
#include "gpos/base.h"
#include "gpos/common/CDouble.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/string/CWStringDynamic.h"
#include "naucrates/md/CDXLBucket.h"
#include "naucrates/md/CMDIdColStats.h"
#include "naucrates/md/IMDColStats.h"
namespace gpdxl
{
class CXMLSerializer;
}
namespace gpmd
{
using namespace gpos;
using namespace gpdxl;
//---------------------------------------------------------------------------
// @class:
// CDXLColStats
//
// @doc:
// Class representing column stats
//
//---------------------------------------------------------------------------
class CDXLColStats : public IMDColStats
{
private:
// memory pool
CMemoryPool *m_mp;
// metadata id of the object
CMDIdColStats *m_mdid_col_stats;
// column name
CMDName *m_mdname;
// column width
CDouble m_width;
// null fraction
CDouble m_null_freq;
// ndistinct of remaining tuples
CDouble m_distinct_remaining;
// frequency of remaining tuples
CDouble m_freq_remaining;
// histogram buckets
CDXLBucketArray *m_dxl_stats_bucket_array;
// is column statistics missing in the database
BOOL m_is_col_stats_missing;
// DXL string for object
CWStringDynamic *m_dxl_str;
public:
CDXLColStats(const CDXLColStats &) = delete;
// ctor
CDXLColStats(CMemoryPool *mp, CMDIdColStats *mdid_col_stats,
CMDName *mdname, CDouble width, CDouble null_freq,
CDouble distinct_remaining, CDouble freq_remaining,
CDXLBucketArray *dxl_stats_bucket_array,
BOOL is_col_stats_missing);
// dtor
~CDXLColStats() override;
// the metadata id
IMDId *MDId() const override;
// relation name
CMDName Mdname() const override;
// DXL string representation of cache object
const CWStringDynamic *GetStrRepr() const override;
// number of buckets
ULONG Buckets() const override;
// width
CDouble
Width() const override
{
return m_width;
}
// null fraction
CDouble
GetNullFreq() const override
{
return m_null_freq;
}
// ndistinct of remaining tuples
CDouble
GetDistinctRemain() const override
{
return m_distinct_remaining;
}
// frequency of remaining tuples
CDouble
GetFreqRemain() const override
{
return m_freq_remaining;
}
// is the column statistics missing in the database
BOOL
IsColStatsMissing() const override
{
return m_is_col_stats_missing;
}
// get the bucket at the given position
const CDXLBucket *GetDXLBucketAt(ULONG ul) const override;
// serialize column stats in DXL format
void Serialize(gpdxl::CXMLSerializer *) const override;
#ifdef GPOS_DEBUG
// debug print of the column stats
void DebugPrint(IOstream &os) const override;
#endif
// dummy colstats
static CDXLColStats *CreateDXLDummyColStats(CMemoryPool *mp, IMDId *mdid,
CMDName *mdname, CDouble width);
};
// array of dxl column stats
using CDXLColStatsArray = CDynamicPtrArray<CDXLColStats, CleanupRelease>;
} // namespace gpmd
#endif // !GPMD_CDXLColStats_H
// EOF
相关信息
相关文章
greenplumn CDXLStatsDerivedColumn 源码
greenplumn CDXLStatsDerivedRelation 源码
greenplumn CMDAggregateGPDB 源码
greenplumn CMDArrayCoerceCastGPDB 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦