greenplumn CDistributionSpecReplicated 源码
greenplumn CDistributionSpecReplicated 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/base/CDistributionSpecReplicated.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2011 EMC Corp.
//
// @filename:
// CDistributionSpecReplicated.h
//
// @doc:
// Description of a replicated distribution;
// Can be used as required or derived property;
//---------------------------------------------------------------------------
#ifndef GPOPT_CDistributionSpecReplicated_H
#define GPOPT_CDistributionSpecReplicated_H
#include "gpos/base.h"
#include "gpopt/base/CDistributionSpec.h"
namespace gpopt
{
using namespace gpos;
class CDistributionSpecReplicated : public CDistributionSpec
{
private:
// replicated support
CDistributionSpec::EDistributionType m_replicated;
public:
CDistributionSpecReplicated(const CDistributionSpecReplicated &) = delete;
// ctor
CDistributionSpecReplicated(
CDistributionSpec::EDistributionType replicated_type)
: m_replicated(replicated_type)
{
GPOS_ASSERT(replicated_type == CDistributionSpec::EdtReplicated ||
replicated_type ==
CDistributionSpec::EdtTaintedReplicated ||
replicated_type == CDistributionSpec::EdtStrictReplicated);
}
// accessor
EDistributionType
Edt() const override
{
return m_replicated;
}
// does this distribution satisfy the given one
BOOL FSatisfies(const CDistributionSpec *pds) const override;
// append enforcers to dynamic array for the given plan properties
void AppendEnforcers(CMemoryPool *mp, CExpressionHandle &exprhdl,
CReqdPropPlan *prpp, CExpressionArray *pdrgpexpr,
CExpression *pexpr) override;
// return distribution partitioning type
EDistributionPartitioningType
Edpt() const override
{
return EdptNonPartitioned;
}
// print
IOstream &
OsPrint(IOstream &os) const override
{
switch (Edt())
{
case CDistributionSpec::EdtReplicated:
os << "REPLICATED";
break;
case CDistributionSpec::EdtTaintedReplicated:
os << "TAINTED REPLICATED";
break;
case CDistributionSpec::EdtStrictReplicated:
os << "STRICT REPLICATED";
break;
default:
GPOS_ASSERT(
!"Replicated type must be General, Tainted, or Strict");
}
return os;
}
// conversion function
static CDistributionSpecReplicated *
PdsConvert(CDistributionSpec *pds)
{
GPOS_ASSERT(nullptr != pds);
GPOS_ASSERT(EdtStrictReplicated == pds->Edt() ||
EdtReplicated == pds->Edt() ||
EdtTaintedReplicated == pds->Edt());
return dynamic_cast<CDistributionSpecReplicated *>(pds);
}
}; // class CDistributionSpecReplicated
} // namespace gpopt
#endif // !GPOPT_CDistributionSpecReplicated_H
// EOF
相关信息
相关文章
greenplumn CColConstraintsArrayMapper 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦