greenplumn CParseHandlerMDType 源码

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

greenplumn CParseHandlerMDType 代码

文件路径:/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerMDType.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2011 EMC Corp.
//
//	@filename:
//		CParseHandlerMDType.h
//
//	@doc:
//		SAX parse handler class for GPDB types metadata
//---------------------------------------------------------------------------

#ifndef GPDXL_CParseHandlerMDGPDBType_H
#define GPDXL_CParseHandlerMDGPDBType_H

#include "gpos/base.h"

#include "naucrates/dxl/parser/CParseHandlerMetadataObject.h"
#include "naucrates/dxl/xml/dxltokens.h"

namespace gpdxl
{
using namespace gpos;
using namespace gpmd;

XERCES_CPP_NAMESPACE_USE

//---------------------------------------------------------------------------
//	@class:
//		CParseHandlerMDType
//
//	@doc:
//		Parse handler for GPDB types metadata
//
//---------------------------------------------------------------------------
class CParseHandlerMDType : public CParseHandlerMetadataObject
{
private:
	// structure mapping DXL mdid names to their corresponding member variable
	struct SMdidMapElem
	{
		// mdid name token
		Edxltoken m_edxltoken;

		// address of the member variable for that name
		IMDId **m_token_mdid;
	};

	// id and version of the type
	IMDId *m_mdid;

	// default distribution (hash) opfamily
	IMDId *m_distr_opfamily;

	// default legacy distribution (hash) opfamily
	IMDId *m_legacy_distr_opfamily;

	// type name
	CMDName *m_mdname;

	// is this a fixed-length type
	BOOL m_istype_fixed_Length;

	// type length
	INT m_type_length;

	// is type redistributable
	BOOL m_is_redistributable;

	// is type passed by value or by reference
	BOOL m_type_passed_by_value;

	// id of equality operator for type
	IMDId *m_mdid_eq_op;

	// id of inequality operator for type
	IMDId *m_mdid_neq_op;

	// id of less than operator for type
	IMDId *m_mdid_lt_op;

	// id of less than equals operator for type
	IMDId *m_mdid_lteq_op;

	// id of greater than operator for type
	IMDId *m_mdid_gt_op;

	// id of greater than equals operator for type
	IMDId *m_mdid_gteq_op;

	// id of comparison operator for type used in btree lookups
	IMDId *m_mdid_cmp_op;

	// id of min aggregate
	IMDId *m_mdid_min_op;

	// id of max aggregate
	IMDId *m_mdid_max_op;

	// id of avg aggregate
	IMDId *m_mdid_avg_op;

	// id of sum aggregate
	IMDId *m_mdid_sum_op;

	// id of count aggregate
	IMDId *m_mdid_count_op;

	// is type hashable
	BOOL m_is_hashable;

	// is type merge joinable on '='
	BOOL m_is_merge_joinable;

	// is type composite
	BOOL m_is_composite;

	// is type text related
	BOOL m_is_text_related;

	// id of the relation corresponding to a composite type
	IMDId *m_mdid_base_rel;

	// id of array type
	IMDId *m_mdid_array_type;

	// handles a SAX start element event
	void StartElement(
		const XMLCh *const element_uri,			// URI of element's namespace
		const XMLCh *const element_local_name,	// local part of element's name
		const XMLCh *const element_qname,		// element's qname
		const Attributes &attr					// element's attributes
		) override;

	// handles a SAX endelement event
	void EndElement(
		const XMLCh *const element_uri,			// URI of element's namespace
		const XMLCh *const element_local_name,	// local part of element's name
		const XMLCh *const element_qname		// element's qname
		) override;

	// parse the value for the given mdid variable name from the attributes
	void ParseMdid(const XMLCh *element_local_name, const Attributes &attrs);

	static BOOL IsBuiltInType(const IMDId *mdid);

public:
	CParseHandlerMDType(const CParseHandlerMDType &) = delete;

	// ctor
	CParseHandlerMDType(CMemoryPool *mp,
						CParseHandlerManager *parse_handler_mgr,
						CParseHandlerBase *parse_handler_root);

	// dtor
	~CParseHandlerMDType() override;
};
}  // namespace gpdxl

#endif	// !GPDXL_CParseHandlerMDGPDBType_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CParseHandlerAgg 源码

greenplumn CParseHandlerAppend 源码

greenplumn CParseHandlerArray 源码

greenplumn CParseHandlerAssert 源码

greenplumn CParseHandlerBase 源码

greenplumn CParseHandlerBroadcastMotion 源码

greenplumn CParseHandlerCTEConfig 源码

greenplumn CParseHandlerCTEList 源码

greenplumn CParseHandlerColDescr 源码

greenplumn CParseHandlerColStats 源码

0  赞