greenplumn CDXLBucket 代码
文件路径:/src/backend/gporca/libnaucrates/include/naucrates/md/CDXLBucket.h
/---------------------------------------------------------------------------
/ Greenplum Database
/ Copyright (C) 2012 EMC Corp.
/
/ @filename:
/ CDXLBucket.h
/
/ @doc:
/ Class representing buckets in a DXL column stats histogram
/---------------------------------------------------------------------------
#ifndef GPMD_CDXLBucket_H
#define GPMD_CDXLBucket_H
#include "gpos/base.h"
#include "gpos/common/CDouble.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "naucrates/dxl/operators/CDXLDatum.h"
namespace gpdxl
{
class CXMLSerializer;
}
namespace gpmd
{
using namespace gpos;
using namespace gpdxl;
/---------------------------------------------------------------------------
/ @class:
/ CDXLBucket
/
/ @doc:
/ Class representing a bucket in DXL column stats
/
/---------------------------------------------------------------------------
class CDXLBucket : public CRefCount
{
private:
/ lower bound value for the bucket
CDXLDatum *m_lower_bound_dxl_datum;
/ max value for the bucket
CDXLDatum *m_upper_bound_dxl_datum;
/ is lower bound closed (i.e., the boundary point is included in the bucket)
BOOL m_is_lower_closed;
/ is upper bound closed (i.e., the boundary point is included in the bucket)
BOOL m_is_upper_closed;
/ frequency
CDouble m_frequency;
/ distinct values
CDouble m_distinct;
/ serialize the bucket boundary
static void SerializeBoundaryValue(CXMLSerializer *xml_serializer,
const CWStringConst *elem_str,
CDXLDatum *dxl_datum,
BOOL is_bound_closed);
public:
CDXLBucket(const CDXLBucket &) = delete;
/ ctor
CDXLBucket(CDXLDatum *dxl_datum_lower, CDXLDatum *dxl_datum_upper,
BOOL is_lower_closed, BOOL is_upper_closed, CDouble frequency,
CDouble distinct);
/ dtor
~CDXLBucket() override;
/ is lower bound closed
BOOL
IsLowerClosed() const
{
return m_is_lower_closed;
}
/ is upper bound closed
BOOL
IsUpperClosed() const
{
return m_is_upper_closed;
}
/ min value for the bucket
const CDXLDatum *GetDXLDatumLower() const;
/ max value for the bucket
const CDXLDatum *GetDXLDatumUpper() const;
/ frequency
CDouble GetFrequency() const;
/ distinct values
CDouble GetNumDistinct() const;
/ serialize bucket in DXL format
void Serialize(gpdxl::CXMLSerializer *) const;
#ifdef GPOS_DEBUG
/ debug print of the bucket
void DebugPrint(IOstream &os) const;
#endif
};
/ array of dxl buckets
using CDXLBucketArray = CDynamicPtrArray<CDXLBucket, CleanupRelease>;
} / namespace gpmd
#endif / !GPMD_CDXLBucket_H
/ EOF
相关信息
相关文章
greenplumn CDXLStatsDerivedColumn 源码
greenplumn CDXLStatsDerivedRelation 源码
greenplumn CMDAggregateGPDB 源码
greenplumn CMDArrayCoerceCastGPDB 源码