greenplumn CDistributionSpecHashedNoOp 源码
greenplumn CDistributionSpecHashedNoOp 代码
文件路径:/src/backend/gporca/libgpopt/src/base/CDistributionSpecHashedNoOp.cpp
// Greenplum Database
// Copyright (C) 2016 VMware, Inc. or its affiliates.
#include "gpopt/base/CDistributionSpecHashedNoOp.h"
#include "gpopt/operators/CExpressionHandle.h"
#include "gpopt/operators/CPhysicalMotionHashDistribute.h"
using namespace gpopt;
CDistributionSpecHashedNoOp::CDistributionSpecHashedNoOp(
CExpressionArray *pdrgpexpr)
: CDistributionSpecHashed(pdrgpexpr, true)
{
}
CDistributionSpec::EDistributionType
CDistributionSpecHashedNoOp::Edt() const
{
return CDistributionSpec::EdtHashedNoOp;
}
BOOL
CDistributionSpecHashedNoOp::Matches(const CDistributionSpec *pds) const
{
return pds->Edt() == Edt();
}
void
CDistributionSpecHashedNoOp::AppendEnforcers(CMemoryPool *mp,
CExpressionHandle &exprhdl,
CReqdPropPlan *,
CExpressionArray *pdrgpexpr,
CExpression *pexpr)
{
CDrvdProp *pdp = exprhdl.Pdp();
CDistributionSpec *pdsChild = CDrvdPropPlan::Pdpplan(pdp)->Pds();
CDistributionSpecHashed *pdsChildHashed =
dynamic_cast<CDistributionSpecHashed *>(pdsChild);
if (nullptr == pdsChildHashed)
{
return;
}
CExpressionArray *pdrgpexprNoOpRedistributionColumns =
pdsChildHashed->Pdrgpexpr();
pdrgpexprNoOpRedistributionColumns->AddRef();
CDistributionSpecHashedNoOp *pdsNoOp = GPOS_NEW(mp)
CDistributionSpecHashedNoOp(pdrgpexprNoOpRedistributionColumns);
pexpr->AddRef();
CExpression *pexprMotion = GPOS_NEW(mp) CExpression(
mp, GPOS_NEW(mp) CPhysicalMotionHashDistribute(mp, pdsNoOp), pexpr);
pdrgpexpr->Append(pexprMotion);
}
相关信息
相关文章
greenplumn CColConstraintsArrayMapper 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦