greenplumn CStatsPred 源码
greenplumn CStatsPred 代码
文件路径:/src/backend/gporca/libnaucrates/include/naucrates/statistics/CStatsPred.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2013 EMC Corp.
//
// @filename:
// CStatsPred.h
//
// @doc:
// Filter on statistics
//---------------------------------------------------------------------------
#ifndef GPNAUCRATES_CStatsPred_H
#define GPNAUCRATES_CStatsPred_H
#include "gpos/base.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/common/CRefCount.h"
namespace gpnaucrates
{
using namespace gpos;
//---------------------------------------------------------------------------
// @class:
// CStatsPred
//
// @doc:
// Filter on statistics
//---------------------------------------------------------------------------
class CStatsPred : public CRefCount
{
public:
enum EStatsPredType
{
EsptPoint, // filter with literals
EsptArrayCmp, // filter with = ANY/ALL(ARRAY[...])
EsptConj, // conjunctive filter
EsptDisj, // disjunctive filter
EsptLike, // LIKE filter
EsptUnsupported, // unsupported filter for statistics calculation
EsptSentinel
};
// comparison types for stats computation
enum EStatsCmpType
{
EstatscmptEq, // equals
EstatscmptNEq, // not equals
EstatscmptL, // less than
EstatscmptLEq, // less or equal to
EstatscmptG, // greater than
EstatscmptGEq, // greater or equal to
EstatscmptIDF, // is distinct from
EstatscmptINDF, // is not distinct from
EstatscmptLike, // LIKE predicate comparison
EstatscmptNotLike, // NOT LIKE predicate comparison
// NDV comparison for equality predicate on columns with functions, ex f(a) = b or a = f(b)
EstatscmptEqNDV,
EstatscmptOther
};
private:
protected:
// column id
ULONG m_colid;
public:
CStatsPred &operator=(CStatsPred &) = delete;
CStatsPred(const CStatsPred &) = delete;
// ctor
explicit CStatsPred(ULONG colid) : m_colid(colid)
{
}
// dtor
~CStatsPred() override = default;
// accessors
virtual ULONG
GetColId() const
{
return m_colid;
}
// type id
virtual EStatsPredType GetPredStatsType() const = 0;
// comparison function
static inline INT StatsPredSortCmpFunc(const void *val1, const void *val2);
}; // class CStatsPred
// array of filters
using CStatsPredPtrArry = CDynamicPtrArray<CStatsPred, CleanupRelease>;
// comparison function for sorting predicates
INT
CStatsPred::StatsPredSortCmpFunc(const void *val1, const void *val2)
{
const CStatsPred *stats_pred1 = *(const CStatsPred **) val1;
const CStatsPred *stats_pred2 = *(const CStatsPred **) val2;
return (INT) stats_pred1->GetColId() - (INT) stats_pred2->GetColId();
}
} // namespace gpnaucrates
#endif // !GPNAUCRATES_CStatsPred_H
// EOF
相关信息
相关文章
greenplumn CFilterStatsProcessor 源码
greenplumn CGroupByStatsProcessor 源码
greenplumn CInnerJoinStatsProcessor 源码
greenplumn CJoinStatsProcessor 源码
greenplumn CLeftAntiSemiJoinStatsProcessor 源码
greenplumn CLeftOuterJoinStatsProcessor 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦