greenplumn CDXLSpoolInfo 源码
greenplumn CDXLSpoolInfo 代码
文件路径:/src/backend/gporca/libnaucrates/src/operators/CDXLSpoolInfo.cpp
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2011 Greenplum, Inc.
//
// @filename:
// CDXLSpoolInfo.cpp
//
// @doc:
// Implementation of DXL sorting columns for sort and motion operator nodes
//---------------------------------------------------------------------------
#include "naucrates/dxl/operators/CDXLSpoolInfo.h"
#include "naucrates/dxl/xml/CXMLSerializer.h"
using namespace gpos;
using namespace gpdxl;
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::CDXLSpoolInfo
//
// @doc:
// Constructor
//
//---------------------------------------------------------------------------
CDXLSpoolInfo::CDXLSpoolInfo(ULONG ulSpoolId, Edxlspooltype edxlspstype,
BOOL fMultiSlice, INT iExecutorSlice)
: m_spool_id(ulSpoolId),
m_spool_type(edxlspstype),
m_is_multi_slice_shared(fMultiSlice),
m_executor_slice_id(iExecutorSlice)
{
}
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::GetSpoolId
//
// @doc:
// Spool id
//
//---------------------------------------------------------------------------
ULONG
CDXLSpoolInfo::GetSpoolId() const
{
return m_spool_id;
}
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::GetSpoolType
//
// @doc:
// Type of the underlying operator (Materialize or Sort)
//
//---------------------------------------------------------------------------
Edxlspooltype
CDXLSpoolInfo::GetSpoolType() const
{
return m_spool_type;
}
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::IsMultiSlice
//
// @doc:
// Is the spool used across slices
//
//---------------------------------------------------------------------------
BOOL
CDXLSpoolInfo::IsMultiSlice() const
{
return m_is_multi_slice_shared;
}
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::GetExecutorSliceId
//
// @doc:
// Id of slice executing the underlying operation
//
//---------------------------------------------------------------------------
INT
CDXLSpoolInfo::GetExecutorSliceId() const
{
return m_executor_slice_id;
}
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::GetSpoolTypeName
//
// @doc:
// Id of slice executing the underlying operation
//
//---------------------------------------------------------------------------
const CWStringConst *
CDXLSpoolInfo::GetSpoolTypeName() const
{
GPOS_ASSERT(EdxlspoolMaterialize == m_spool_type ||
EdxlspoolSort == m_spool_type);
switch (m_spool_type)
{
case EdxlspoolMaterialize:
return CDXLTokens::GetDXLTokenStr(EdxltokenSpoolMaterialize);
case EdxlspoolSort:
return CDXLTokens::GetDXLTokenStr(EdxltokenSpoolSort);
default:
return CDXLTokens::GetDXLTokenStr(EdxltokenUnknown);
}
}
//---------------------------------------------------------------------------
// @function:
// CDXLSpoolInfo::SerializeToDXL
//
// @doc:
// Serialize spooling info in DXL format
//
//---------------------------------------------------------------------------
void
CDXLSpoolInfo::SerializeToDXL(CXMLSerializer *xml_serializer) const
{
xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenSpoolId),
m_spool_id);
const CWStringConst *pstrSpoolType = GetSpoolTypeName();
xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenSpoolType),
pstrSpoolType);
xml_serializer->AddAttribute(
CDXLTokens::GetDXLTokenStr(EdxltokenSpoolMultiSlice),
m_is_multi_slice_shared);
xml_serializer->AddAttribute(
CDXLTokens::GetDXLTokenStr(EdxltokenExecutorSliceId),
m_executor_slice_id);
}
// EOF
相关信息
相关文章
greenplumn CDXLCtasStorageOptions 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦