greenplumn CReqdPropRelational 源码
greenplumn CReqdPropRelational 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/base/CReqdPropRelational.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2009 - 2011 EMC CORP.
//
// @filename:
// CReqdPropRelational.h
//
// @doc:
// Derived required relational properties
//---------------------------------------------------------------------------
#ifndef GPOPT_CReqdPropRelational_H
#define GPOPT_CReqdPropRelational_H
#include "gpos/base.h"
#include "gpopt/base/CColRef.h"
#include "gpopt/base/CReqdProp.h"
namespace gpopt
{
using namespace gpos;
// forward declaration
class CExpression;
class CExpressionHandle;
class CColRefSet;
//---------------------------------------------------------------------------
// @class:
// CReqdPropRelational
//
// @doc:
// Required relational properties container.
//
//---------------------------------------------------------------------------
class CReqdPropRelational : public CReqdProp
{
private:
// required stat columns
CColRefSet *m_pcrsStat{nullptr};
// predicate on partition key
CExpression *m_pexprPartPred{nullptr};
public:
CReqdPropRelational(const CReqdPropRelational &) = delete;
// default ctor
CReqdPropRelational();
// ctor
explicit CReqdPropRelational(CColRefSet *pcrs);
// ctor
CReqdPropRelational(CColRefSet *pcrs, CExpression *pexprPartPred);
// dtor
~CReqdPropRelational() override;
// type of properties
BOOL
FRelational() const override
{
GPOS_ASSERT(!FPlan());
return true;
}
// stat columns accessor
CColRefSet *
PcrsStat() const
{
return m_pcrsStat;
}
// partition predicate accessor
CExpression *
PexprPartPred() const
{
return m_pexprPartPred;
}
// required properties computation function
void Compute(CMemoryPool *mp, CExpressionHandle &exprhdl,
CReqdProp *prpInput, ULONG child_index,
CDrvdPropArray *pdrgpdpCtxt, ULONG ulOptReq) override;
// return difference from given properties
CReqdPropRelational *PrprelDifference(CMemoryPool *mp,
CReqdPropRelational *prprel);
// return true if property container is empty
BOOL IsEmpty() const;
// shorthand for conversion
static CReqdPropRelational *GetReqdRelationalProps(CReqdProp *prp);
// print function
IOstream &OsPrint(IOstream &os) const override;
}; // class CReqdPropRelational
} // namespace gpopt
#endif // !GPOPT_CReqdPropRelational_H
// EOF
相关信息
相关文章
greenplumn CColConstraintsArrayMapper 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦