greenplumn CDefaultComparator 源码
greenplumn CDefaultComparator 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/base/CDefaultComparator.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2014 VMware, Inc. or its affiliates.
//
// @filename:
// CDefaultComparator.h
//
// @doc:
// Default comparator for IDatum instances
//
// @owner:
//
//
// @test:
//
//---------------------------------------------------------------------------
#ifndef GPOPT_CDefaultComparator_H
#define GPOPT_CDefaultComparator_H
#include "gpos/base.h"
#include "gpopt/base/IComparator.h"
#include "naucrates/md/IMDType.h"
#include "naucrates/traceflags/traceflags.h"
namespace gpmd
{
// fwd declarations
class IMDId;
} // namespace gpmd
namespace gpnaucrates
{
// fwd declarations
class IDatum;
} // namespace gpnaucrates
namespace gpopt
{
using namespace gpmd;
using namespace gpnaucrates;
using namespace gpos;
// fwd declarations
class IConstExprEvaluator;
//---------------------------------------------------------------------------
// @class:
// CDefaultComparator
//
// @doc:
// Default comparator for IDatum instances. It is a singleton accessed
// via CompGetInstance.
//
//---------------------------------------------------------------------------
class CDefaultComparator : public IComparator
{
private:
// constant expression evaluator
IConstExprEvaluator *m_pceeval;
// construct a comparison expression from the given components and evaluate it
BOOL FEvalComparison(CMemoryPool *mp, const IDatum *datum1,
const IDatum *datum2,
IMDType::ECmpType cmp_type) const;
// return true iff we should use the internal (stats-based) evaluation
static BOOL FUseInternalEvaluator(const IDatum *datum1,
const IDatum *datum2,
BOOL *can_use_external_evaluator);
public:
CDefaultComparator(const CDefaultComparator &) = delete;
// ctor
CDefaultComparator(IConstExprEvaluator *pceeval);
// dtor
~CDefaultComparator() override = default;
// tests if the two arguments are equal
BOOL Equals(const IDatum *datum1, const IDatum *datum2) const override;
// tests if the first argument is less than the second
BOOL IsLessThan(const IDatum *datum1, const IDatum *datum2) const override;
// tests if the first argument is less or equal to the second
BOOL IsLessThanOrEqual(const IDatum *datum1,
const IDatum *datum2) const override;
// tests if the first argument is greater than the second
BOOL IsGreaterThan(const IDatum *datum1,
const IDatum *datum2) const override;
// tests if the first argument is greater or equal to the second
BOOL IsGreaterThanOrEqual(const IDatum *datum1,
const IDatum *datum2) const override;
}; // CDefaultComparator
} // namespace gpopt
#endif // !CDefaultComparator_H
// EOF
相关信息
相关文章
greenplumn CColConstraintsArrayMapper 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦