greenplumn ICostModelParams 源码
greenplumn ICostModelParams 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/cost/ICostModelParams.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2014 VMware, Inc. or its affiliates.
//
// @filename:
// ICostModelParams.h
//
// @doc:
// Interface for the parameters of the underlying cost model
//---------------------------------------------------------------------------
#ifndef GPOPT_ICostModelParams_H
#define GPOPT_ICostModelParams_H
#include "gpos/base.h"
#include "gpos/common/CRefCount.h"
#include "naucrates/md/IMDRelation.h"
#include "CCost.h"
namespace gpopt
{
using namespace gpos;
using namespace gpmd;
//---------------------------------------------------------------------------
// @class:
// ICostModelParams
//
// @doc:
// Interface for the parameters of the underlying cost model
//
//---------------------------------------------------------------------------
class ICostModelParams : public CRefCount
{
public:
//---------------------------------------------------------------------------
// @class:
// SCostParam
//
// @doc:
// Internal structure to represent cost model parameter
//
//---------------------------------------------------------------------------
struct SCostParam
{
private:
// param identifier
ULONG m_id;
// param value
CDouble m_value;
// param lower bound
CDouble m_lower_bound_val;
// param upper bound
CDouble m_upper_bound_val;
public:
// ctor
SCostParam(ULONG id, CDouble dVal, CDouble dLowerBound,
CDouble dUpperBound)
: m_id(id),
m_value(dVal),
m_lower_bound_val(dLowerBound),
m_upper_bound_val(dUpperBound)
{
GPOS_ASSERT(dVal >= dLowerBound);
GPOS_ASSERT(dVal <= dUpperBound);
}
// dtor
virtual ~SCostParam() = default;
// return param identifier
ULONG
Id() const
{
return m_id;
}
// return value
CDouble
Get() const
{
return m_value;
}
// return lower bound value
CDouble
GetLowerBoundVal() const
{
return m_lower_bound_val;
}
// return upper bound value
CDouble
GetUpperBoundVal() const
{
return m_upper_bound_val;
}
BOOL
Equals(SCostParam *pcm) const
{
return Id() == pcm->Id() && Get() == pcm->Get() &&
GetLowerBoundVal() == pcm->GetLowerBoundVal() &&
GetUpperBoundVal() == pcm->GetUpperBoundVal();
}
}; // struct SCostParam
// lookup param by id
virtual SCostParam *PcpLookup(ULONG id) const = 0;
// lookup param by name
virtual SCostParam *PcpLookup(const CHAR *szName) const = 0;
// set param by id
virtual void SetParam(ULONG id, CDouble dVal, CDouble dLowerBound,
CDouble dUpperBound) = 0;
// set param by name
virtual void SetParam(const CHAR *szName, CDouble dVal, CDouble dLowerBound,
CDouble dUpperBound) = 0;
virtual BOOL Equals(ICostModelParams *pcm) const = 0;
virtual const CHAR *SzNameLookup(ULONG id) const = 0;
virtual gpos::IOstream &OsPrint(gpos::IOstream &os) const = 0;
};
} // namespace gpopt
#endif // !GPOPT_ICostModelParams_H
// EOF
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦