greenplumn CParseHandlerFactory 源码

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

greenplumn CParseHandlerFactory 代码

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

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2010 Greenplum, Inc.
//
//	@filename:
//		CParseHandlerFactory.h
//
//	@doc:
//		Factory methods for creating SAX parse handlers
//---------------------------------------------------------------------------

#ifndef GPDXL_CParseHandlerFactory_H
#define GPDXL_CParseHandlerFactory_H

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

#include "naucrates/dxl/operators/CDXLPhysical.h"
#include "naucrates/dxl/parser/CParseHandlerBase.h"
#include "naucrates/dxl/xml/dxltokens.h"
#include "naucrates/exception.h"

namespace gpdxl
{
using namespace gpos;

XERCES_CPP_NAMESPACE_USE

// shorthand for functions creating operator parse handlers
using ParseHandlerOpCreatorFunc = CParseHandlerBase *(CMemoryPool *,
													  CParseHandlerManager *,
													  CParseHandlerBase *);

// fwd decl
class CDXLTokens;

const ULONG HASH_MAP_SIZE = 128;

// function for hashing xerces strings
inline ULONG
GetHashXMLStr(const XMLCh *xml_str)
{
	return (ULONG) XMLString::hash(xml_str, HASH_MAP_SIZE);
}

// function for equality on xerces strings
inline BOOL
IsXMLStrEqual(const XMLCh *xml_str1, const XMLCh *xml_str2)
{
	return (0 == XMLString::compareString(xml_str1, xml_str2));
}


//---------------------------------------------------------------------------
//	@class:
//		CParseHandlerFactory
//
//	@doc:
//		Factory class for creating DXL SAX parse handlers
//
//---------------------------------------------------------------------------
class CParseHandlerFactory
{
	using TokenParseHandlerFuncMap =
		CHashMap<const XMLCh, ParseHandlerOpCreatorFunc, GetHashXMLStr,
				 IsXMLStrEqual, CleanupNULL, CleanupNULL>;

	// pair of DXL token type and the corresponding parse handler
	struct SParseHandlerMapping
	{
		// type
		Edxltoken token_type;

		// translator function pointer
		ParseHandlerOpCreatorFunc *parse_handler_op_func;
	};

private:
	// mappings DXL token -> ParseHandler creator
	static TokenParseHandlerFuncMap *m_token_parse_handler_func_map;

	static void AddMapping(Edxltoken token_type,
						   ParseHandlerOpCreatorFunc *parse_handler_op_func);

	// construct a physical op parse handlers
	static CParseHandlerBase *CreatePhysicalOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a GPDB plan parse handler
	static CParseHandlerBase *CreatePlanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a metadata parse handler
	static CParseHandlerBase *CreateMetadataParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a metadata request parse handler
	static CParseHandlerBase *CreateMDRequestParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *pph);

	// construct a parse handler for the optimizer configuration
	static CParseHandlerBase *CreateOptimizerCfgParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for the enumerator configuration
	static CParseHandlerBase *CreateEnumeratorCfgParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for the statistics configuration
	static CParseHandlerBase *CreateStatisticsCfgParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for the CTE configuration
	static CParseHandlerBase *CreateCTECfgParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for the cost model configuration
	static CParseHandlerBase *CreateCostModelCfgParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct hint parse handler
	static CParseHandlerBase *CreateHintParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct window oids parse handler
	static CParseHandlerBase *CreateWindowOidsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a trace flag parse handler
	static CParseHandlerBase *CreateTraceFlagsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a MD relation parse handler
	static CParseHandlerBase *CreateMDRelationParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a MD external relation parse handler
	static CParseHandlerBase *CreateMDRelationExtParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a MD CTAS relation parse handler
	static CParseHandlerBase *CreateMDRelationCTASParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD index parse handler
	static CParseHandlerBase *CreateMDIndexParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a relation stats parse handler
	static CParseHandlerBase *CreateRelStatsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a column stats parse handler
	static CParseHandlerBase *CreateColStatsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a column stats bucket parse handler
	static CParseHandlerBase *CreateColStatsBucketParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD type parse handler
	static CParseHandlerBase *CreateMDTypeParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD scalarop parse handler
	static CParseHandlerBase *CreateMDScalarOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD function parse handler
	static CParseHandlerBase *CreateMDFuncParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD aggregate operation parse handler
	static CParseHandlerBase *CreateMDAggParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD trigger parse handler
	static CParseHandlerBase *CreateMDTriggerParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD cast parse handler
	static CParseHandlerBase *CreateMDCastParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD scalar comparison parse handler
	static CParseHandlerBase *CreateMDScCmpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an MD check constraint parse handler
	static CParseHandlerBase *CreateMDChkConstraintParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for a list of MD ids
	static CParseHandlerBase *CreateMDIdListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a metadata columns parse handler
	static CParseHandlerBase *CreateMDColsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	static CParseHandlerBase *CreateMDIndexInfoListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a column MD parse handler
	static CParseHandlerBase *CreateMDColParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a column default value expression parse handler
	static CParseHandlerBase *CreateColDefaultValExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar operator parse handler
	static CParseHandlerBase *CreateScalarOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a properties parse handler
	static CParseHandlerBase *CreatePropertiesParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a filter operator parse handler
	static CParseHandlerBase *CreateFilterParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a table scan parse handler
	static CParseHandlerBase *CreateTableScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a bitmap table scan parse handler
	static CParseHandlerBase *CreateBitmapTableScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a dynamic bitmap table scan parse handler
	static CParseHandlerBase *CreateDynBitmapTableScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an external scan parse handler
	static CParseHandlerBase *CreateExternalScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a subquery scan parse handler
	static CParseHandlerBase *CreateSubqueryScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a result node parse handler
	static CParseHandlerBase *CreateResultParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a HJ parse handler
	static CParseHandlerBase *CreateHashJoinParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a NLJ parse handler
	static CParseHandlerBase *CreateNLJoinParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a merge join parse handler
	static CParseHandlerBase *CreateMergeJoinParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sort parse handler
	static CParseHandlerBase *CreateSortParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an append parse handler
	static CParseHandlerBase *CreateAppendParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a materialize parse handler
	static CParseHandlerBase *CreateMaterializeParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a dynamic table scan parse handler
	static CParseHandlerBase *CreateDTSParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a dynamic index scan parse handler
	static CParseHandlerBase *CreateDynamicIdxScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a partition selector parse handler
	static CParseHandlerBase *CreatePartitionSelectorParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sequence parse handler
	static CParseHandlerBase *CreateSequenceParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a limit (physical) parse handler
	static CParseHandlerBase *CreateLimitParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a limit count parse handler
	static CParseHandlerBase *CreateLimitCountParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a limit offset parse handler
	static CParseHandlerBase *CreateLimitOffsetParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a subquery parse handler
	static CParseHandlerBase *CreateScSubqueryParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a subquery parse handler
	static CParseHandlerBase *CreateScBitmapBoolOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an array parse handler
	static CParseHandlerBase *CreateScArrayParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an arrayref parse handler
	static CParseHandlerBase *CreateScArrayRefParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an arrayref index list parse handler
	static CParseHandlerBase *CreateScArrayRefIdxListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an assert predicate parse handler
	static CParseHandlerBase *CreateScAssertConstraintListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);


	// construct a DML action parse handler
	static CParseHandlerBase *CreateScDMLActionParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar operator list
	static CParseHandlerBase *CreateScOpListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part oid
	static CParseHandlerBase *CreateScPartOidParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part default
	static CParseHandlerBase *CreateScPartDefaultParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part bound
	static CParseHandlerBase *CreateScPartBoundParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part bound inclusion
	static CParseHandlerBase *CreateScPartBoundInclParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part bound openness
	static CParseHandlerBase *CreateScPartBoundOpenParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part list values
	static CParseHandlerBase *CreateScPartListValuesParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar part list null test
	static CParseHandlerBase *CreateScPartListNullTestParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a direct dispatch info parse handler
	static CParseHandlerBase *CreateDirectDispatchParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a gather motion parse handler
	static CParseHandlerBase *CreateGatherMotionParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a broadcast motion parse handler
	static CParseHandlerBase *CreateBroadcastMotionParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a redistribute motion parse handler
	static CParseHandlerBase *CreateRedistributeMotionParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a routed motion parse handler
	static CParseHandlerBase *CreateRoutedMotionParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a random motion parse handler
	static CParseHandlerBase *CreateRandomMotionParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical aggregate parse handler
	static CParseHandlerBase *CreateAggParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an aggregate function parse handler
	static CParseHandlerBase *CreateAggRefParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for a physical window node
	static CParseHandlerBase *CreateWindowParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an window function parse handler
	static CParseHandlerBase *CreateWindowRefParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an window frame parse handler
	static CParseHandlerBase *CreateWindowFrameParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an window key parse handler
	static CParseHandlerBase *CreateWindowKeyParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler to parse the list of window keys
	static CParseHandlerBase *CreateWindowKeyListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an window specification parse handler
	static CParseHandlerBase *CreateWindowSpecParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler to parse the list of window specifications
	static CParseHandlerBase *CreateWindowSpecListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a grouping column list parse handler
	static CParseHandlerBase *CreateGroupingColListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a comparison operator parse handler
	static CParseHandlerBase *CreateScCmpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a distinct compare parse handler
	static CParseHandlerBase *CreateDistinctCmpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar identifier parse handler
	static CParseHandlerBase *CreateScIdParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar operator parse handler
	static CParseHandlerBase *CreateScOpExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an array compare parse handler
	static CParseHandlerBase *CreateScArrayCmpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a boolean expression parse handler
	static CParseHandlerBase *CreateScBoolExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a min/max parse handler
	static CParseHandlerBase *CreateScMinMaxParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a boolean test parse handler
	static CParseHandlerBase *CreateBooleanTestParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a null test parse handler
	static CParseHandlerBase *CreateScNullTestParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a nullif parse handler
	static CParseHandlerBase *CreateScNullIfParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a cast parse handler
	static CParseHandlerBase *CreateScCastParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a coerce parse handler
	static CParseHandlerBase *CreateScCoerceToDomainParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a coerceviaio parse handler
	static CParseHandlerBase *CreateScCoerceViaIOParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a ArrayCoerceExpr parse handler
	static CParseHandlerBase *CreateScArrayCoerceExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sub plan parse handler
	static CParseHandlerBase *CreateScSubPlanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// create a parse handler for parsing a SubPlan test expression
	static CParseHandlerBase *CreateScSubPlanTestExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sub plan params parse handler
	static CParseHandlerBase *CreateScSubPlanParamListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sub plan param parse handler
	static CParseHandlerBase *CreateScSubPlanParamParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical TVF parse handler
	static CParseHandlerBase *CreateLogicalTVFParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical TVF parse handler
	static CParseHandlerBase *CreatePhysicalTVFParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a coalesce parse handler
	static CParseHandlerBase *CreateScCoalesceParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a switch parse handler
	static CParseHandlerBase *CreateScSwitchParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a switch case parse handler
	static CParseHandlerBase *CreateScSwitchCaseParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a case test parse handler
	static CParseHandlerBase *CreateScCaseTestParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a constant parse handler
	static CParseHandlerBase *CreateScConstValueParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an if statement parse handler
	static CParseHandlerBase *CreateIfStmtParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a function parse handler
	static CParseHandlerBase *CreateScFuncExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a project list parse handler
	static CParseHandlerBase *CreateProjListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a project element parse handler
	static CParseHandlerBase *CreateProjElemParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a hash expression list parse handler
	static CParseHandlerBase *CreateHashExprListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a hash expression parse handler
	static CParseHandlerBase *CreateHashExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a condition list parse handler
	static CParseHandlerBase *CreateCondListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sort column list parse handler
	static CParseHandlerBase *CreateSortColListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a sort column parse handler
	static CParseHandlerBase *CreateSortColParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a cost parse handler
	static CParseHandlerBase *CreateCostParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a table descriptor parse handler
	static CParseHandlerBase *CreateTableDescParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a column descriptor parse handler
	static CParseHandlerBase *CreateColDescParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an index scan list parse handler
	static CParseHandlerBase *CreateIdxScanListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an index only scan parse handler
	static CParseHandlerBase *CreateIdxOnlyScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a bitmap index scan list parse handler
	static CParseHandlerBase *CreateBitmapIdxProbeParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an index descriptor list parse handler
	static CParseHandlerBase *CreateIdxDescrParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct an index condition list parse handler
	static CParseHandlerBase *CreateIdxCondListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);


	// construct a query parse handler
	static CParseHandlerBase *CreateQueryParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical get parse handler
	static CParseHandlerBase *CreateLogicalGetParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical external get parse handler
	static CParseHandlerBase *CreateLogicalExtGetParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical operator parse handler
	static CParseHandlerBase *CreateLogicalOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical project parse handler
	static CParseHandlerBase *CreateLogicalProjParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical CTE producer parse handler
	static CParseHandlerBase *CreateLogicalCTEProdParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical CTE consumer parse handler
	static CParseHandlerBase *CreateLogicalCTEConsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical CTE anchor parse handler
	static CParseHandlerBase *CreateLogicalCTEAnchorParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a CTE list
	static CParseHandlerBase *CreateCTEListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical window parse handler
	static CParseHandlerBase *CreateLogicalWindowParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical insert parse handler
	static CParseHandlerBase *CreateLogicalInsertParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical delete parse handler
	static CParseHandlerBase *CreateLogicalDeleteParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical update parse handler
	static CParseHandlerBase *CreateLogicalUpdateParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical CTAS parse handler
	static CParseHandlerBase *CreateLogicalCTASParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical CTAS parse handler
	static CParseHandlerBase *CreatePhysicalCTASParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a parse handler for parsing CTAS storage options
	static CParseHandlerBase *CreateCTASOptionsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical CTE producer parse handler
	static CParseHandlerBase *CreatePhysicalCTEProdParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical CTE consumer parse handler
	static CParseHandlerBase *CreatePhysicalCTEConsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical DML parse handler
	static CParseHandlerBase *CreatePhysicalDMLParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical split parse handler
	static CParseHandlerBase *CreatePhysicalSplitParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical row trigger parse handler
	static CParseHandlerBase *CreatePhysicalRowTriggerParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a physical assert parse handler
	static CParseHandlerBase *CreatePhysicalAssertParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical set operator parse handler
	static CParseHandlerBase *CreateLogicalSetOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical select parse handler
	static CParseHandlerBase *CreateLogicalSelectParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical join parse handler
	static CParseHandlerBase *CreateLogicalJoinParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical query output parse handler
	static CParseHandlerBase *CreateLogicalQueryOpParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical groupby parse handler
	static CParseHandlerBase *CreateLogicalGrpByParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical limit parse handler
	static CParseHandlerBase *CreateLogicalLimitParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a logical const table parse handler
	static CParseHandlerBase *CreateLogicalConstTableParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a quantified subquery parse handler
	static CParseHandlerBase *CreateScScalarSubqueryQuantifiedParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a subquery parse handler
	static CParseHandlerBase *CreateScScalarSubqueryExistsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a pass-through parse handler for stack traces
	static CParseHandlerBase *CreateStackTraceParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a statistics parse handler
	static CParseHandlerBase *CreateStatsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a derived column parse handler
	static CParseHandlerBase *CreateStatsDrvdColParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a derived relation stats parse handler
	static CParseHandlerBase *CreateStatsDrvdRelParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a bucket bound parse handler
	static CParseHandlerBase *CreateStatsBucketBoundParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a trailing window frame edge parser
	static CParseHandlerBase *CreateFrameTrailingEdgeParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a leading window frame edge parser
	static CParseHandlerBase *CreateFrameLeadingEdgeParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct search strategy parse handler
	static CParseHandlerBase *CreateSearchStrategyParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct search stage parse handler
	static CParseHandlerBase *CreateSearchStageParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct xform parse handler
	static CParseHandlerBase *CreateXformParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct cost params parse handler
	static CParseHandlerBase *CreateCostParamsParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct cost param parse handler
	static CParseHandlerBase *CreateCostParamParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar expression parse handler
	static CParseHandlerBase *CreateScExprParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar values list parse handler
	static CParseHandlerBase *CreateScValuesListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a scalar sort group clause parse handler
	static CParseHandlerBase *CreateScSortGroupClauseParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a values scan parse handler
	static CParseHandlerBase *CreateValuesScanParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a md array coerce cast parse handler
	static CParseHandlerBase *CreateMDArrayCoerceCastParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// construct a nested loop param list parse handler
	static CParseHandlerBase *CreateNLJIndexParamListParseHandler(
		CMemoryPool *mp, CParseHandlerManager *parse_handler_manager,
		CParseHandlerBase *parse_handler_root);

	// construct a nested loop param parse handler
	static CParseHandlerBase *CreateNLJIndexParamParseHandler(
		CMemoryPool *pmp, CParseHandlerManager *parse_handler_manager,
		CParseHandlerBase *parse_handler_root);

public:
	// initialize mappings of tokens to parse handlers
	static void Init(CMemoryPool *mp);

	// return the parse handler creator for operator with the given name
	static CParseHandlerBase *GetParseHandler(
		CMemoryPool *mp, const XMLCh *xml_str,
		CParseHandlerManager *parse_handler_mgr,
		CParseHandlerBase *parse_handler_root);

	// factory methods for creating parse handlers
	static CParseHandlerDXL *GetParseHandlerDXL(CMemoryPool *mp,
												CParseHandlerManager *);
};
}  // namespace gpdxl

#endif	// !GPDXL_CParseHandlerFactory_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CParseHandlerAgg 源码

greenplumn CParseHandlerAppend 源码

greenplumn CParseHandlerArray 源码

greenplumn CParseHandlerAssert 源码

greenplumn CParseHandlerBase 源码

greenplumn CParseHandlerBroadcastMotion 源码

greenplumn CParseHandlerCTEConfig 源码

greenplumn CParseHandlerCTEList 源码

greenplumn CParseHandlerColDescr 源码

greenplumn CParseHandlerColStats 源码

0  赞