greenplumn CDXLColDescr 源码

  • 2022-08-18
  • 浏览 (285)

greenplumn CDXLColDescr 代码

文件路径:/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLColDescr.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2010 Greenplum, Inc.
//
//	@filename:
//		CDXLColDescr.h
//
//	@doc:
//		Class for representing column descriptors.
//---------------------------------------------------------------------------



#ifndef GPDXL_CDXLColDescr_H
#define GPDXL_CDXLColDescr_H

#include "gpos/base.h"
#include "gpos/common/CRefCount.h"

#include "naucrates/md/CMDIdGPDB.h"
#include "naucrates/md/CMDName.h"

namespace gpdxl
{
using namespace gpmd;

// fwd decl
class CXMLSerializer;
class CDXLColDescr;

using CDXLColDescrArray = CDynamicPtrArray<CDXLColDescr, CleanupRelease>;

//---------------------------------------------------------------------------
//	@class:
//		CDXLColDescr
//
//	@doc:
//		Class for representing column descriptors in DXL operators
//
//---------------------------------------------------------------------------
class CDXLColDescr : public CRefCount
{
private:
	// name
	CMDName *m_md_name;

	// column id: unique identifier of that instance of the column in the query
	ULONG m_column_id;

	// attribute number in the database (corresponds to varattno in GPDB)
	INT m_attr_no;

	// mdid of column's type
	IMDId *m_column_mdid_type;

	INT m_type_modifier;

	// is column dropped from the table: needed for correct restoring of attribute numbers in the range table entries
	BOOL m_is_dropped;

	// width of the column, for instance  char(10) column has width 10
	ULONG m_column_width;

public:
	CDXLColDescr(const CDXLColDescr &) = delete;

	// ctor
	CDXLColDescr(CMDName *, ULONG column_id, INT attr_no,
				 IMDId *column_mdid_type, INT type_modifier, BOOL is_dropped,
				 ULONG width = gpos::ulong_max);

	//dtor
	~CDXLColDescr() override;

	// column name
	const CMDName *MdName() const;

	// column identifier
	ULONG Id() const;

	// attribute number of the column in the base table
	INT AttrNum() const;

	// is the column dropped in the base table
	BOOL IsDropped() const;

	// column type
	IMDId *MdidType() const;

	INT TypeModifier() const;

	// column width
	ULONG Width() const;

	void SerializeToDXL(CXMLSerializer *xml_serializer) const;
};

}  // namespace gpdxl



#endif	// !GPDXL_CDXLColDescr_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CDXLColRef 源码

greenplumn CDXLCtasStorageOptions 源码

greenplumn CDXLDatum 源码

greenplumn CDXLDatumBool 源码

greenplumn CDXLDatumGeneric 源码

greenplumn CDXLDatumInt2 源码

greenplumn CDXLDatumInt4 源码

greenplumn CDXLDatumInt8 源码

greenplumn CDXLDatumOid 源码

greenplumn CDXLDatumStatsDoubleMappable 源码

0  赞