greenplumn CDXLDatumGeneric 源码
greenplumn CDXLDatumGeneric 代码
文件路径:/src/backend/gporca/libnaucrates/src/operators/CDXLDatumGeneric.cpp
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2012 EMC Corp.
//
// @filename:
// CDXLDatumGeneric.cpp
//
// @doc:
// Implementation of DXL datum of type generic
//
// @owner:
//
//
// @test:
//
//---------------------------------------------------------------------------
#include "naucrates/dxl/operators/CDXLDatumGeneric.h"
#include "naucrates/dxl/CDXLUtils.h"
#include "naucrates/dxl/xml/CXMLSerializer.h"
using namespace gpos;
using namespace gpdxl;
//---------------------------------------------------------------------------
// @function:
// CDXLDatumGeneric::CDXLDatumGeneric
//
// @doc:
// Ctor
//
//---------------------------------------------------------------------------
CDXLDatumGeneric::CDXLDatumGeneric(CMemoryPool *mp, IMDId *mdid_type,
INT type_modifier, BOOL is_null,
BYTE *byte_array, ULONG length)
: CDXLDatum(mp, mdid_type, type_modifier, is_null, length),
m_byte_array(byte_array)
{
GPOS_ASSERT_IMP(m_is_null, (m_byte_array == nullptr) && (m_length == 0));
}
//---------------------------------------------------------------------------
// @function:
// CDXLDatumGeneric::~CDXLDatumGeneric
//
// @doc:
// Dtor
//
//---------------------------------------------------------------------------
CDXLDatumGeneric::~CDXLDatumGeneric()
{
GPOS_DELETE_ARRAY(m_byte_array);
}
//---------------------------------------------------------------------------
// @function:
// CDXLDatumGeneric::GetByteArray
//
// @doc:
// Returns the bytearray of the datum
//
//---------------------------------------------------------------------------
const BYTE *
CDXLDatumGeneric::GetByteArray() const
{
return m_byte_array;
}
//---------------------------------------------------------------------------
// @function:
// CDXLDatumGeneric::Serialize
//
// @doc:
// Serialize datum in DXL format
//
//---------------------------------------------------------------------------
void
CDXLDatumGeneric::Serialize(CXMLSerializer *xml_serializer)
{
m_mdid_type->Serialize(xml_serializer,
CDXLTokens::GetDXLTokenStr(EdxltokenTypeId));
if (default_type_modifier != TypeModifier())
{
xml_serializer->AddAttribute(
CDXLTokens::GetDXLTokenStr(EdxltokenTypeMod), m_type_modifier);
}
if (!m_is_null)
{
xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenValue),
m_is_null, GetByteArray(), Length());
}
else
{
xml_serializer->AddAttribute(
CDXLTokens::GetDXLTokenStr(EdxltokenIsNull), true);
}
}
// EOF
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
6、 golang
-
7、 openharmony