greenplumn CMDPartConstraintGPDB 源码
greenplumn CMDPartConstraintGPDB 代码
文件路径:/src/backend/gporca/libnaucrates/src/md/CMDPartConstraintGPDB.cpp
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2012 EMC Corp.
//
// @filename:
// CMDPartConstraintGPDB.cpp
//
// @doc:
// Implementation of part constraints in the MD cache
//---------------------------------------------------------------------------
#include "naucrates/md/CMDPartConstraintGPDB.h"
#include "gpopt/translate/CTranslatorDXLToExpr.h"
#include "naucrates/dxl/CDXLUtils.h"
#include "naucrates/dxl/xml/CXMLSerializer.h"
using namespace gpdxl;
using namespace gpmd;
using namespace gpopt;
//---------------------------------------------------------------------------
// @function:
// CMDPartConstraintGPDB::CMDPartConstraintGPDB
//
// @doc:
// Ctor
//
//---------------------------------------------------------------------------
CMDPartConstraintGPDB::CMDPartConstraintGPDB(
CMemoryPool *mp, ULongPtrArray *level_with_default_part_array,
BOOL is_unbounded, CDXLNode *dxlnode)
: m_mp(mp),
m_level_with_default_part_array(level_with_default_part_array),
m_is_unbounded(is_unbounded),
m_dxl_node(dxlnode)
{
GPOS_ASSERT(nullptr != level_with_default_part_array);
}
//---------------------------------------------------------------------------
// @function:
// CMDPartConstraintGPDB::~CMDPartConstraintGPDB
//
// @doc:
// Dtor
//
//---------------------------------------------------------------------------
CMDPartConstraintGPDB::~CMDPartConstraintGPDB()
{
CRefCount::SafeRelease(m_dxl_node);
m_level_with_default_part_array->Release();
}
//---------------------------------------------------------------------------
// @function:
// CMDPartConstraintGPDB::GetPartConstraintExpr
//
// @doc:
// Scalar expression of the check constraint
//
//---------------------------------------------------------------------------
CExpression *
CMDPartConstraintGPDB::GetPartConstraintExpr(CMemoryPool *mp,
CMDAccessor *md_accessor,
CColRefArray *colref_array) const
{
GPOS_ASSERT(nullptr != colref_array);
// translate the DXL representation of the part constraint expression
CTranslatorDXLToExpr dxltr(mp, md_accessor);
return dxltr.PexprTranslateScalar(m_dxl_node, colref_array);
}
//---------------------------------------------------------------------------
// @function:
// CMDPartConstraintGPDB::GetDefaultPartsArray
//
// @doc:
// Included default partitions
//
//---------------------------------------------------------------------------
ULongPtrArray *
CMDPartConstraintGPDB::GetDefaultPartsArray() const
{
return m_level_with_default_part_array;
}
//---------------------------------------------------------------------------
// @function:
// CMDPartConstraintGPDB::IsConstraintUnbounded
//
// @doc:
// Is constraint unbounded
//
//---------------------------------------------------------------------------
BOOL
CMDPartConstraintGPDB::IsConstraintUnbounded() const
{
return m_is_unbounded;
}
//---------------------------------------------------------------------------
// @function:
// CMDPartConstraintGPDB::Serialize
//
// @doc:
// Serialize part constraint in DXL format
//
//---------------------------------------------------------------------------
void
CMDPartConstraintGPDB::Serialize(CXMLSerializer *xml_serializer) const
{
xml_serializer->OpenElement(
CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
CDXLTokens::GetDXLTokenStr(EdxltokenPartConstraint));
// serialize default parts
CWStringDynamic *default_part_array =
CDXLUtils::Serialize(m_mp, m_level_with_default_part_array);
xml_serializer->AddAttribute(
CDXLTokens::GetDXLTokenStr(EdxltokenDefaultPartition),
default_part_array);
GPOS_DELETE(default_part_array);
xml_serializer->AddAttribute(
CDXLTokens::GetDXLTokenStr(EdxltokenPartConstraintUnbounded),
m_is_unbounded);
// serialize the scalar expression
if (nullptr != m_dxl_node)
{
m_dxl_node->SerializeToDXL(xml_serializer);
}
xml_serializer->CloseElement(
CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
CDXLTokens::GetDXLTokenStr(EdxltokenPartConstraint));
GPOS_CHECK_ABORT;
}
// EOF
相关信息
相关文章
greenplumn CDXLStatsDerivedColumn 源码
greenplumn CDXLStatsDerivedRelation 源码
greenplumn CMDAggregateGPDB 源码
greenplumn CMDArrayCoerceCastGPDB 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦