greenplumn CPoint 源码
greenplumn CPoint 代码
文件路径:/src/backend/gporca/libnaucrates/include/naucrates/statistics/CPoint.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2011 EMC Corp.
//
// @filename:
// CPoint.h
//
// @doc:
// Point in the datum space
//---------------------------------------------------------------------------
#ifndef GPNAUCRATES_CPoint_H
#define GPNAUCRATES_CPoint_H
#include "gpos/base.h"
#include "gpos/common/CDouble.h"
#include "naucrates/base/IDatum.h"
namespace gpopt
{
class CMDAccessor;
}
namespace gpnaucrates
{
using namespace gpos;
using namespace gpmd;
using namespace gpopt;
//---------------------------------------------------------------------------
// @class:
// CPoint
//
// @doc:
// One dimensional point in the datum space
//---------------------------------------------------------------------------
class CPoint : public CRefCount, public DbgPrintMixin<CPoint>
{
private:
// datum corresponding to the point
IDatum *m_datum;
public:
CPoint &operator=(CPoint &) = delete;
CPoint(const CPoint &) = delete;
// c'tor
explicit CPoint(IDatum *);
// get underlying datum
IDatum *
GetDatum() const
{
return m_datum;
}
// is this point equal to another
BOOL Equals(const CPoint *) const;
// is this point not equal to another
BOOL IsNotEqual(const CPoint *) const;
// less than
BOOL IsLessThan(const CPoint *) const;
// less than or equals
BOOL IsLessThanOrEqual(const CPoint *) const;
// greater than
BOOL IsGreaterThan(const CPoint *) const;
// greater than or equals
BOOL IsGreaterThanOrEqual(const CPoint *) const;
// distance between two points
CDouble Distance(const CPoint *) const;
// distance between two points, taking bounds into account
CDouble Width(const CPoint *, BOOL include_lower, BOOL include_upper) const;
// print function
IOstream &OsPrint(IOstream &os) const;
// d'tor
~CPoint() override
{
m_datum->Release();
}
// translate the point into its DXL representation
CDXLDatum *GetDatumVal(CMemoryPool *mp, CMDAccessor *md_accessor) const;
// minimum of two points using <=
static CPoint *MinPoint(CPoint *point1, CPoint *point2);
// maximum of two points using >=
static CPoint *MaxPoint(CPoint *point1, CPoint *point2);
}; // class CPoint
// array of CPoints
using CPointArray = CDynamicPtrArray<CPoint, CleanupRelease>;
} // namespace gpnaucrates
#endif // !GPNAUCRATES_CPoint_H
// EOF
相关信息
相关文章
greenplumn CFilterStatsProcessor 源码
greenplumn CGroupByStatsProcessor 源码
greenplumn CInnerJoinStatsProcessor 源码
greenplumn CJoinStatsProcessor 源码
greenplumn CLeftAntiSemiJoinStatsProcessor 源码
greenplumn CLeftOuterJoinStatsProcessor 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦