greenplumn CDistributionSpecStrictSingleton 源码
greenplumn CDistributionSpecStrictSingleton 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/base/CDistributionSpecStrictSingleton.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2013 EMC Corp.
//
// @filename:
// CDistributionSpecStrictSingleton.h
//
// @doc:
// Description of a strict singleton distribution. Unlike the simple singleton distribution,
// that satisfies hash distribution requests, the strict singleton distribution is only
// compatible with other singleton distributions
// Can be used as a derived property;
//---------------------------------------------------------------------------
#ifndef GPOPT_CDistributionSpecStrictSingleton_H
#define GPOPT_CDistributionSpecStrictSingleton_H
#include "gpos/base.h"
#include "gpos/utils.h"
#include "gpopt/base/CDistributionSpecSingleton.h"
namespace gpopt
{
using namespace gpos;
//---------------------------------------------------------------------------
// @class:
// CDistributionSpecStrictSingleton
//
// @doc:
// Class for representing singleton distribution specification.
//
//---------------------------------------------------------------------------
class CDistributionSpecStrictSingleton : public CDistributionSpecSingleton
{
private:
public:
CDistributionSpecStrictSingleton(const CDistributionSpecStrictSingleton &) =
delete;
// ctor
explicit CDistributionSpecStrictSingleton(ESegmentType esegtype);
// distribution type accessor
EDistributionType
Edt() const override
{
return CDistributionSpec::EdtStrictSingleton;
}
// return true if distribution spec can be required
BOOL
FRequirable() const override
{
return false;
}
// 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
{
GPOS_ASSERT(!"attempt to enforce strict SINGLETON distribution");
}
// print
IOstream &OsPrint(IOstream &os) const override;
// conversion function
static CDistributionSpecStrictSingleton *
PdssConvert(CDistributionSpec *pds)
{
GPOS_ASSERT(nullptr != pds);
GPOS_ASSERT(EdtStrictSingleton == pds->Edt());
return dynamic_cast<CDistributionSpecStrictSingleton *>(pds);
}
}; // class CDistributionSpecStrictSingleton
} // namespace gpopt
#endif // !GPOPT_CDistributionSpecStrictSingleton_H
// EOF
相关信息
相关文章
greenplumn CColConstraintsArrayMapper 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦