Files
openGauss-server/src/common/backend/nodes/nodes.cpp
2021-02-09 22:25:07 +08:00

572 lines
22 KiB
C++
Executable File

/* -------------------------------------------------------------------------
*
* nodes.cpp
* support code for nodes (now that we have removed the home-brew
* inheritance system, our support code for nodes is much simpler)
*
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* src/common/backend/nodes/nodes.cpp
*
* HISTORY
* Andrew Yu Oct 20, 1994 file creation
*
* -------------------------------------------------------------------------
*/
#include "postgres.h"
#include "knl/knl_variable.h"
#include "nodes/nodes.h"
typedef struct TagStr {
NodeTag tag;
char* str;
} TagStr;
static const TagStr g_tagStrArr[] = {{T_Invalid, "Invalid"},
{T_IndexInfo, "IndexInfo"},
{T_ExprContext, "ExprContext"},
{T_ProjectionInfo, "ProjectionInfo"},
{T_JunkFilter, "JunkFilter"},
{T_ResultRelInfo, "ResultRelInfo"},
{T_EState, "EState"},
{T_TupleTableSlot, "TupleTableSlot"},
{T_Plan, "Plan"},
{T_BaseResult, "BaseResult"},
{T_ModifyTable, "ModifyTable"},
{T_Append, "Append"},
{T_PartIterator, "PartIterator"},
{T_MergeAppend, "MergeAppend"},
{T_RecursiveUnion, "RecursiveUnion"},
{T_BitmapAnd, "BitmapAnd"},
{T_BitmapOr, "BitmapOr"},
{T_Scan, "Scan"},
{T_SeqScan, "SeqScan"},
{T_IndexScan, "IndexScan"},
{T_IndexOnlyScan, "IndexOnlyScan"},
{T_BitmapIndexScan, "BitmapIndexScan"},
{T_BitmapHeapScan, "BitmapHeapScan"},
{T_TidScan, "TidScan"},
{T_SubqueryScan, "SubqueryScan"},
{T_FunctionScan, "FunctionScan"},
{T_ValuesScan, "ValuesScan"},
{T_CteScan, "CteScan"},
{T_WorkTableScan, "WorkTableScan"},
{T_ForeignScan, "ForeignScan"},
{T_ExtensiblePlan, "ExtensiblePlan"},
{T_Join, "Join"},
{T_NestLoop, "NestLoop"},
{T_MergeJoin, "MergeJoin"},
{T_HashJoin, "HashJoin"},
{T_Material, "Material"},
{T_Sort, "Sort"},
{T_Group, "Group"},
{T_Agg, "Agg"},
{T_WindowAgg, "WindowAgg"},
{T_Unique, "Unique"},
{T_Hash, "Hash"},
{T_SetOp, "SetOp"},
{T_LockRows, "LockRows"},
{T_Limit, "Limit"},
{T_Stream, "Stream"},
{T_ExecNodes, "ExecNodes"},
{T_SliceBoundary, "SliceBoundary"},
{T_ExecBoundary, "ExecBoundary"},
{T_SimpleSort, "SimpleSort"},
{T_RemoteQuery, "RemoteQuery"},
{T_PGXCNodeHandle, "PGXCNodeHandle"},
{T_AlterNodeStmt, "AlterNodeStmt"},
{T_CreateNodeStmt, "CreateNodeStmt"},
{T_DropNodeStmt, "DropNodeStmt"},
{T_CreateGroupStmt, "CreateGroupStmt"},
{T_AlterGroupStmt, "AlterGroupStmt"},
{T_DropGroupStmt, "DropGroupStmt"},
{T_CreateResourcePoolStmt, "CreateResourcePoolStmt"},
{T_AlterResourcePoolStmt, "AlterResourcePoolStmt"},
{T_DropResourcePoolStmt, "DropResourcePoolStmt"},
{T_CreateWorkloadGroupStmt, "CreateWorkloadGroupStmt"},
{T_AlterWorkloadGroupStmt, "AlterWorkloadGroupStmt"},
{T_DropWorkloadGroupStmt, "DropWorkloadGroupStmt"},
{T_CreateAppWorkloadGroupMappingStmt, "CreateAppWorkloadGroupMappingStmt"},
{T_AlterAppWorkloadGroupMappingStmt, "AlterAppWorkloadGroupMappingStmt"},
{T_DropAppWorkloadGroupMappingStmt, "DropAppWorkloadGroupMappingStmt"},
{T_NestLoopParam, "NestLoopParam"},
{T_PartIteratorParam, "PartIteratorParam"},
{T_PlanRowMark, "PlanRowMark"},
{T_PlanInvalItem, "PlanInvalItem"},
{T_PlanState, "PlanState"},
{T_ResultState, "ResultState"},
{T_MergeActionState, "MergeActionState"},
{T_ModifyTableState, "ModifyTableState"},
{T_DistInsertSelectState, "DistInsertSelectState"},
{T_AppendState, "AppendState"},
{T_PartIteratorState, "PartIteratorState"},
{T_MergeAppendState, "MergeAppendState"},
{T_RecursiveUnionState, "RecursiveUnionState"},
{T_BitmapAndState, "BitmapAndState"},
{T_BitmapOrState, "BitmapOrState"},
{T_ScanState, "ScanState"},
{T_SeqScanState, "SeqScanState"},
{T_IndexScanState, "IndexScanState"},
{T_IndexOnlyScanState, "IndexOnlyScanState"},
{T_BitmapIndexScanState, "BitmapIndexScanState"},
{T_BitmapHeapScanState, "BitmapHeapScanState"},
{T_TidScanState, "TidScanState"},
{T_SubqueryScanState, "SubqueryScanState"},
{T_FunctionScanState, "FunctionScanState"},
{T_ValuesScanState, "ValuesScanState"},
{T_CteScanState, "CteScanState"},
{T_WorkTableScanState, "WorkTableScanState"},
{T_ForeignScanState, "ForeignScanState"},
{T_ExtensiblePlanState, "ExtensiblePlanState"},
{T_JoinState, "JoinState"},
{T_NestLoopState, "NestLoopState"},
{T_MergeJoinState, "MergeJoinState"},
{T_HashJoinState, "HashJoinState"},
{T_MaterialState, "MaterialState"},
{T_SortState, "SortState"},
{T_GroupState, "GroupState"},
{T_AggState, "AggState"},
{T_WindowAggState, "WindowAggState"},
{T_UniqueState, "UniqueState"},
{T_HashState, "HashState"},
{T_SetOpState, "SetOpState"},
{T_LockRowsState, "LockRowsState"},
{T_LimitState, "LimitState"},
{T_RemoteQueryState, "RemoteQueryState"},
{T_StreamState, "StreamState"},
{T_Alias, "Alias"},
{T_RangeVar, "RangeVar"},
{T_Expr, "Expr"},
{T_Var, "Var"},
{T_Const, "Const"},
{T_Param, "Param"},
{T_Aggref, "Aggref"},
{T_GroupingFunc, "GroupingFunc"},
{T_WindowFunc, "WindowFunc"},
{T_InitList, "InitList"},
{T_ArrayRef, "ArrayRef"},
{T_FuncExpr, "FuncExpr"},
{T_NamedArgExpr, "NamedArgExpr"},
{T_OpExpr, "OpExpr"},
{T_DistinctExpr, "DistinctExpr"},
{T_NullIfExpr, "NullIfExpr"},
{T_ScalarArrayOpExpr, "ScalarArrayOpExpr"},
{T_BoolExpr, "BoolExpr"},
{T_SubLink, "SubLink"},
{T_SubPlan, "SubPlan"},
{T_AlternativeSubPlan, "AlternativeSubPlan"},
{T_FieldSelect, "FieldSelect"},
{T_FieldStore, "FieldStore"},
{T_RelabelType, "RelabelType"},
{T_CoerceViaIO, "CoerceViaIO"},
{T_ArrayCoerceExpr, "ArrayCoerceExpr"},
{T_ConvertRowtypeExpr, "ConvertRowtypeExpr"},
{T_CollateExpr, "CollateExpr"},
{T_CaseExpr, "CaseExpr"},
{T_CaseWhen, "CaseWhen"},
{T_CaseTestExpr, "CaseTestExpr"},
{T_ArrayExpr, "ArrayExpr"},
{T_RowExpr, "RowExpr"},
{T_RowCompareExpr, "RowCompareExpr"},
{T_CoalesceExpr, "CoalesceExpr"},
{T_MinMaxExpr, "MinMaxExpr"},
{T_XmlExpr, "XmlExpr"},
{T_NullTest, "NullTest"},
{T_BooleanTest, "BooleanTest"},
{T_CoerceToDomain, "CoerceToDomain"},
{T_CoerceToDomainValue, "CoerceToDomainValue"},
{T_SetToDefault, "SetToDefault"},
{T_CurrentOfExpr, "CurrentOfExpr"},
{T_TargetEntry, "TargetEntry"},
{T_RangeTblRef, "RangeTblRef"},
{T_JoinExpr, "JoinExpr"},
{T_FromExpr, "FromExpr"},
{T_IntoClause, "IntoClause"},
{T_DistributeBy, "DistributeBy"},
{T_PGXCSubCluster, "PGXCSubCluster"},
{T_DistState, "DistState"},
{T_ListSliceDefState, "ListSliceDefState"},
{T_HashFilter, "HashFilter"},
{T_EstSPNode, "EstSPNode"},
{T_ExprState, "ExprState"},
{T_GenericExprState, "GenericExprState"},
{T_AggrefExprState, "AggrefExprState"},
{T_GroupingFuncExprState, "GroupingFuncExprState"},
{T_WindowFuncExprState, "WindowFuncExprState"},
{T_ArrayRefExprState, "ArrayRefExprState"},
{T_FuncExprState, "FuncExprState"},
{T_ScalarArrayOpExprState, "ScalarArrayOpExprState"},
{T_BoolExprState, "BoolExprState"},
{T_SubPlanState, "SubPlanState"},
{T_AlternativeSubPlanState, "AlternativeSubPlanState"},
{T_FieldSelectState, "FieldSelectState"},
{T_FieldStoreState, "FieldStoreState"},
{T_CoerceViaIOState, "CoerceViaIOState"},
{T_ArrayCoerceExprState, "ArrayCoerceExprState"},
{T_ConvertRowtypeExprState, "ConvertRowtypeExprState"},
{T_CaseExprState, "CaseExprState"},
{T_CaseWhenState, "CaseWhenState"},
{T_ArrayExprState, "ArrayExprState"},
{T_RowExprState, "RowExprState"},
{T_RowCompareExprState, "RowCompareExprState"},
{T_CoalesceExprState, "CoalesceExprState"},
{T_MinMaxExprState, "MinMaxExprState"},
{T_XmlExprState, "XmlExprState"},
{T_NullTestState, "NullTestState"},
{T_HashFilterState, "HashFilterState"},
{T_CoerceToDomainState, "CoerceToDomainState"},
{T_DomainConstraintState, "DomainConstraintState"},
{T_WholeRowVarExprState, "WholeRowVarExprState"},
{T_RangePartitionDefState, "RangePartitionDefState"},
{T_ListPartitionDefState, "ListPartitionDefState"},
{T_HashPartitionDefState, "HashPartitionDefState"},
{T_IntervalPartitionDefState, "IntervalPartitionDefState"},
{T_PartitionState, "PartitionState"},
{T_RangePartitionindexDefState, "RangePartitionindexDefState"},
{T_SplitPartitionState, "SplitPartitionState"},
{T_AddPartitionState, "AddPartitionState"},
{T_RangePartitionStartEndDefState, "RangePartitionStartEndDefState"},
{T_PlannerInfo, "PlannerInfo"},
{T_PlannerGlobal, "PlannerGlobal"},
{T_RelOptInfo, "RelOptInfo"},
{T_IndexOptInfo, "IndexOptInfo"},
{T_ParamPathInfo, "ParamPathInfo"},
{T_Path, "Path"},
{T_IndexPath, "IndexPath"},
{T_BitmapHeapPath, "BitmapHeapPath"},
{T_BitmapAndPath, "BitmapAndPath"},
{T_BitmapOrPath, "BitmapOrPath"},
{T_NestPath, "NestPath"},
{T_MergePath, "MergePath"},
{T_HashPath, "HashPath"},
{T_TidPath, "TidPath"},
{T_ForeignPath, "ForeignPath"},
{T_ExtensiblePath, "ExtensiblePath"},
{T_AppendPath, "AppendPath"},
{T_MergeAppendPath, "MergeAppendPath"},
{T_ResultPath, "ResultPath"},
{T_MaterialPath, "MaterialPath"},
{T_UniquePath, "UniquePath"},
{T_PartIteratorPath, "PartIteratorPath"},
{T_EquivalenceClass, "EquivalenceClass"},
{T_EquivalenceMember, "EquivalenceMember"},
{T_PathKey, "PathKey"},
{T_RestrictInfo, "RestrictInfo"},
{T_PlaceHolderVar, "PlaceHolderVar"},
{T_SpecialJoinInfo, "SpecialJoinInfo"},
{T_AppendRelInfo, "AppendRelInfo"},
{T_PlaceHolderInfo, "PlaceHolderInfo"},
{T_MinMaxAggInfo, "MinMaxAggInfo"},
{T_PlannerParamItem, "PlannerParamItem"},
{T_RemoteQueryPath, "RemoteQueryPath"},
{T_StreamPath, "StreamPath"},
{T_MergeAction, "MergeAction"},
{T_MemoryContext, "MemoryContext"},
{T_AllocSetContext, "AllocSetContext"},
{T_StackAllocSetContext, "StackAllocSetContext"},
{T_SharedAllocSetContext, "SharedAllocSetContext"},
{T_MemalignAllocSetContext, "MemalignAllocSetContext"},
{T_MemalignSharedAllocSetContext, "MemalignSharedAllocSetContext"},
{T_MemoryTracking, "MemoryTracking"},
{T_Value, "Value"},
{T_Integer, "Integer"},
{T_Float, "Float"},
{T_String, "String"},
{T_BitString, "BitString"},
{T_Null, "Null"},
{T_List, "List"},
{T_IntList, "IntList"},
{T_OidList, "OidList"},
{T_DList, "DList"},
{T_IntDList, "IntDList"},
{T_OidDList, "OidDList"},
{T_Query, "Query"},
{T_PlannedStmt, "PlannedStmt"},
{T_InsertStmt, "InsertStmt"},
{T_DeleteStmt, "DeleteStmt"},
{T_UpdateStmt, "UpdateStmt"},
{T_MergeStmt, "MergeStmt"},
{T_SelectStmt, "SelectStmt"},
{T_AlterTableStmt, "AlterTableStmt"},
{T_AlterTableCmd, "AlterTableCmd"},
{T_AlterDomainStmt, "AlterDomainStmt"},
{T_SetOperationStmt, "SetOperationStmt"},
{T_GrantStmt, "GrantStmt"},
{T_GrantRoleStmt, "GrantRoleStmt"},
{T_AlterDefaultPrivilegesStmt, "AlterDefaultPrivilegesStmt"},
{T_ClosePortalStmt, "ClosePortalStmt"},
{T_ClusterStmt, "ClusterStmt"},
{T_CopyStmt, "CopyStmt"},
{T_CreateStmt, "CreateStmt"},
{T_DefineStmt, "DefineStmt"},
{T_DropStmt, "DropStmt"},
{T_TruncateStmt, "TruncateStmt"},
{T_CommentStmt, "CommentStmt"},
{T_FetchStmt, "FetchStmt"},
{T_IndexStmt, "IndexStmt"},
{T_CreateFunctionStmt, "CreateFunctionStmt"},
{T_AlterFunctionStmt, "AlterFunctionStmt"},
{T_DoStmt, "DoStmt"},
{T_RenameStmt, "RenameStmt"},
{T_RuleStmt, "RuleStmt"},
{T_NotifyStmt, "NotifyStmt"},
{T_ListenStmt, "ListenStmt"},
{T_UnlistenStmt, "UnlistenStmt"},
{T_TransactionStmt, "TransactionStmt"},
{T_ViewStmt, "ViewStmt"},
{T_LoadStmt, "LoadStmt"},
{T_CreateDomainStmt, "CreateDomainStmt"},
{T_CreatedbStmt, "CreatedbStmt"},
{T_DropdbStmt, "DropdbStmt"},
{T_VacuumStmt, "VacuumStmt"},
{T_ExplainStmt, "ExplainStmt"},
{T_CreateTableAsStmt, "CreateTableAsStmt"},
{T_CreateSeqStmt, "CreateSeqStmt"},
{T_AlterSeqStmt, "AlterSeqStmt"},
{T_VariableSetStmt, "VariableSetStmt"},
{T_VariableShowStmt, "VariableShowStmt"},
{T_DiscardStmt, "DiscardStmt"},
{T_CreateTrigStmt, "CreateTrigStmt"},
{T_CreatePLangStmt, "CreatePLangStmt"},
{T_CreateRoleStmt, "CreateRoleStmt"},
{T_AlterRoleStmt, "AlterRoleStmt"},
{T_DropRoleStmt, "DropRoleStmt"},
{T_LockStmt, "LockStmt"},
{T_ConstraintsSetStmt, "ConstraintsSetStmt"},
{T_ReindexStmt, "ReindexStmt"},
{T_CheckPointStmt, "CheckPointStmt"},
{T_BarrierStmt, "BarrierStmt"},
{T_CreateSchemaStmt, "CreateSchemaStmt"},
{T_AlterDatabaseStmt, "AlterDatabaseStmt"},
{T_AlterDatabaseSetStmt, "AlterDatabaseSetStmt"},
{T_AlterRoleSetStmt, "AlterRoleSetStmt"},
{T_CreateConversionStmt, "CreateConversionStmt"},
{T_CreateCastStmt, "CreateCastStmt"},
{T_CreateOpClassStmt, "CreateOpClassStmt"},
{T_CreateOpFamilyStmt, "CreateOpFamilyStmt"},
{T_AlterOpFamilyStmt, "AlterOpFamilyStmt"},
{T_PrepareStmt, "PrepareStmt"},
{T_ExecuteStmt, "ExecuteStmt"},
{T_DeallocateStmt, "DeallocateStmt"},
{T_DeclareCursorStmt, "DeclareCursorStmt"},
{T_CreateTableSpaceStmt, "CreateTableSpaceStmt"},
{T_DropTableSpaceStmt, "DropTableSpaceStmt"},
{T_AlterObjectSchemaStmt, "AlterObjectSchemaStmt"},
{T_AlterOwnerStmt, "AlterOwnerStmt"},
{T_DropOwnedStmt, "DropOwnedStmt"},
{T_ReassignOwnedStmt, "ReassignOwnedStmt"},
{T_CompositeTypeStmt, "CompositeTypeStmt"},
{T_CreateEnumStmt, "CreateEnumStmt"},
{T_CreateRangeStmt, "CreateRangeStmt"},
{T_AlterEnumStmt, "AlterEnumStmt"},
{T_AlterTSDictionaryStmt, "AlterTSDictionaryStmt"},
{T_AlterTSConfigurationStmt, "AlterTSConfigurationStmt"},
{T_CreateFdwStmt, "CreateFdwStmt"},
{T_AlterFdwStmt, "AlterFdwStmt"},
{T_CreateForeignServerStmt, "CreateForeignServerStmt"},
{T_AlterForeignServerStmt, "AlterForeignServerStmt"},
{T_CreateUserMappingStmt, "CreateUserMappingStmt"},
{T_AlterUserMappingStmt, "AlterUserMappingStmt"},
{T_DropUserMappingStmt, "DropUserMappingStmt"},
{T_ExecDirectStmt, "ExecDirectStmt"},
{T_CleanConnStmt, "CleanConnStmt"},
{T_AlterTableSpaceOptionsStmt, "AlterTableSpaceOptionsStmt"},
{T_SecLabelStmt, "SecLabelStmt"},
{T_CreateForeignTableStmt, "CreateForeignTableStmt"},
{T_CreateExtensionStmt, "CreateExtensionStmt"},
{T_AlterExtensionStmt, "AlterExtensionStmt"},
{T_AlterExtensionContentsStmt, "AlterExtensionContentsStmt"},
{T_CreateDataSourceStmt, "CreateDataSourceStmt"},
{T_AlterDataSourceStmt, "AlterDataSourceStmt"},
{T_ReplicaIdentityStmt, "ReplicaIdentityStmt"},
{T_CreateDirectoryStmt, "CreateDirectoryStmt"},
{T_DropDirectoryStmt, "DropDirectoryStmt"},
{T_CreateRlsPolicyStmt, "CreateRlsPolicyStmt"},
{T_AlterRlsPolicyStmt, "AlterRlsPolicyStmt"},
{T_ShutdownStmt, "ShutdownStmt"},
{T_A_Expr, "A_Expr"},
{T_ColumnRef, "ColumnRef"},
{T_ParamRef, "ParamRef"},
{T_A_Const, "A_Const"},
{T_FuncCall, "FuncCall"},
{T_A_Star, "A_Star"},
{T_A_Indices, "A_Indices"},
{T_A_Indirection, "A_Indirection"},
{T_A_ArrayExpr, "A_ArrayExpr"},
{T_ResTarget, "ResTarget"},
{T_TypeCast, "TypeCast"},
{T_CollateClause, "CollateClause"},
{T_SortBy, "SortBy"},
{T_WindowDef, "WindowDef"},
{T_RangeSubselect, "RangeSubselect"},
{T_RangeFunction, "RangeFunction"},
{T_RangeTableSample, "RangeTableSample"},
{T_TypeName, "TypeName"},
{T_ColumnDef, "ColumnDef"},
{T_IndexElem, "IndexElem"},
{T_Constraint, "Constraint"},
{T_DefElem, "DefElem"},
{T_RangeTblEntry, "RangeTblEntry"},
{T_TableSampleClause, "TableSampleClause"},
{T_SortGroupClause, "SortGroupClause"},
{T_GroupingSet, "GroupingSet"},
{T_WindowClause, "WindowClause"},
{T_PrivGrantee, "PrivGrantee"},
{T_FuncWithArgs, "FuncWithArgs"},
{T_AccessPriv, "AccessPriv"},
{T_CreateOpClassItem, "CreateOpClassItem"},
{T_TableLikeClause, "TableLikeClause"},
{T_FunctionParameter, "FunctionParameter"},
{T_LockingClause, "LockingClause"},
{T_RowMarkClause, "RowMarkClause"},
{T_XmlSerialize, "XmlSerialize"},
{T_WithClause, "WithClause"},
{T_CommonTableExpr, "CommonTableExpr"},
{T_PruningResult, "PruningResult"},
{T_Position, "Position"},
{T_MergeWhenClause, "MergeWhenClause"},
{T_IdentifySystemCmd, "IdentifySystemCmd"},
{T_IdentifyVersionCmd, "IdentifyVersionCmd"},
{T_IdentifyModeCmd, "IdentifyModeCmd"},
{T_IdentifyMaxLsnCmd, "IdentifyMaxLsnCmd"},
{T_IdentifyConsistenceCmd, "IdentifyConsistenceCmd"},
{T_IdentifyChannelCmd, "IdentifyChannelCmd"},
#ifndef ENABLE_MULTIPLE_NODES
{T_IdentifyAZCmd, "IdentifyAZCmd"},
#endif
{T_BaseBackupCmd, "BaseBackupCmd"},
{T_CreateReplicationSlotCmd, "CreateReplicationSlotCmd"},
{T_DropReplicationSlotCmd, "DropReplicationSlotCmd"},
{T_StartReplicationCmd, "StartReplicationCmd"},
{T_AdvanceReplicationCmd, "AdvanceReplicationCmd"},
{T_StartDataReplicationCmd, "StartDataReplicationCmd"},
{T_FetchMotCheckpointCmd, "FetchMotCheckpointCmd"},
{T_TriggerData, "TriggerData"},
{T_ReturnSetInfo, "ReturnSetInfo"},
{T_WindowObjectData, "WindowObjectData"},
{T_TIDBitmap, "TIDBitmap"},
{T_InlineCodeBlock, "InlineCodeBlock"},
{T_FdwRoutine, "FdwRoutine"},
{T_DistFdwDataNodeTask, "DistFdwDataNodeTask"},
{T_DistFdwFileSegment, "DistFdwFileSegment"},
{T_SplitInfo, "SplitInfo"},
{T_SplitMap, "SplitMap"},
{T_DfsPrivateItem, "DfsPrivateItem"},
{T_ErrorCacheEntry, "ErrorCacheEntry"},
{T_ForeignPartState, "ForeignPartState"},
{T_RoachRoutine, "RoachRoutine"},
{T_VecPlan, "VecPlan"},
{T_VecResult, "VecResult"},
{T_VecModifyTable, "VecModifyTable"},
{T_VecAppend, "VecAppend"},
{T_VecPartIterator, "VecPartIterator"},
{T_VecMergeAppend, "VecMergeAppend"},
{T_VecRecursiveUnion, "VecRecursiveUnion"},
{T_VecScan, "VecScan"},
{T_CStoreScan, "CStoreScan"},
{T_DfsScan, "DfsScan"},
{T_VecIndexScan, "VecIndexScan"},
{T_VecIndexOnlyScan, "VecIndexOnlyScan"},
{T_VecBitmapIndexScan, "VecBitmapIndexScan"},
{T_VecBitmapHeapScan, "VecBitmapHeapScan"},
{T_VecSubqueryScan, "VecSubqueryScan"},
{T_VecForeignScan, "VecForeignScan"},
{T_VecNestLoop, "VecNestLoop"},
{T_VecMergeJoin, "VecMergeJoin"},
{T_VecHashJoin, "VecHashJoin"},
{T_VecMaterial, "VecMaterial"},
{T_VecSort, "VecSort"},
{T_VecGroup, "VecGroup"},
{T_VecAgg, "VecAgg"},
{T_VecWindowAgg, "VecWindowAgg"},
{T_VecUnique, "VecUnique"},
{T_VecHash, "VecHash"},
{T_VecSetOp, "VecSetOp"},
{T_VecLockRows, "VecLockRows"},
{T_VecLimit, "VecLimit"},
{T_VecStream, "VecStream"},
{T_RowToVec, "RowToVec"},
{T_VecToRow, "VecToRow"},
{T_DfsIndexScan, "DfsIndexScan"},
{T_CStoreIndexScan, "CStoreIndexScan"},
{T_CStoreIndexCtidScan, "CStoreIndexCtidScan"},
{T_CStoreIndexHeapScan, "CStoreIndexHeapScan"},
{T_CStoreIndexAnd, "CStoreIndexAnd"},
{T_CStoreIndexOr, "CStoreIndexOr"},
{T_VecRemoteQuery, "VecRemoteQuery"},
{T_CBTreeScanState, "CBTreeScanState"},
{T_CBTreeOnlyScanState, "CBTreeOnlyScanState"},
{T_CstoreBitmapIndexScanState, "CstoreBitmapIndexScanState"},
{T_VecToRowState, "VecToRowState"},
{T_VecStartState, "VecStartState"},
{T_RowToVecState, "RowToVecState"},
{T_VecAggState, "VecAggState"},
{T_VecHashJoinState, "VecHashJoinState"},
{T_VecStreamState, "VecStreamState"},
{T_VecSortState, "VecSortState"},
{T_VecForeignScanState, "VecForeignScanState"},
{T_CStoreScanState, "CStoreScanState"},
{T_DfsScanState, "DfsScanState"},
{T_DfsIndexScanState, "DfsIndexScanState"},
{T_CStoreIndexScanState, "CStoreIndexScanState"},
{T_CStoreIndexCtidScanState, "CStoreIndexCtidScanState"},
{T_CStoreIndexHeapScanState, "CStoreIndexHeapScanState"},
{T_CStoreIndexAndState, "CStoreIndexAndState"},
{T_CStoreIndexOrState, "CStoreIndexOrState"},
{T_VecRemoteQueryState, "VecRemoteQueryState"},
{T_VecResultState, "VecResultState"},
{T_VecSubqueryScanState, "VecSubqueryScanState"},
{T_VecModifyTableState, "VecModifyTableState"},
{T_VecPartIteratorState, "VecPartIteratorState"},
{T_VecAppendState, "VecAppendState"},
{T_VecLimitState, "VecLimitState"},
{T_VecGroupState, "VecGroupState"},
{T_VecUniqueState, "VecUniqueState"},
{T_VecSetOpState, "VecSetOpState"},
{T_VecNestLoopState, "VecNestLoopState"},
{T_VecMaterialState, "VecMaterialState"},
{T_VecMergeJoinState, "VecMergeJoinState"},
{T_VecWindowAggState, "VecWindowAggState"},
{T_VecEndState, "VecEndState"},
{T_HDFSTableAnalyze, "HDFSTableAnalyze"},
{T_ForeignTableDesc, "ForeignTableDesc"},
{T_AttrMetaData, "AttrMetaData"},
{T_RelationMetaData, "RelationMetaData"},
{T_ForeignOptions, "ForeignOptions"},
{T_InformationalConstraint, "InformationalConstraint"},
{T_GroupingId, "GroupingId"},
{T_GroupingIdExprState, "GroupingIdExprState"},
{T_BloomFilterSet, "BloomFilterSet"},
{T_HintState, "HintState"},
{T_OuterInnerRels, "OuterInnerRels"},
{T_JoinMethodHint, "JoinMethodHint"},
{T_LeadingHint, "LeadingHint"},
{T_RowsHint, "RowsHint"},
{T_RewriteHint, "RewriteHint"},
{T_StreamHint, "StreamHint"},
{T_BlockNameHint, "BlockNameHint"},
{T_ScanMethodHint, "ScanMethodHint"},
{T_PgFdwRemoteInfo, "PgFdwRemoteInfo"},
{T_TableLikeCtx, "TableLikeCtx"},
{T_SkewHint, "SkewHint"},
{T_SkewHintTransf, "SkewHintTransf"},
{T_SkewRelInfo, "SkewRelInfo"},
{T_SkewColumnInfo, "SkewColumnInfo"},
{T_SkewValueInfo, "SkewValueInfo"},
{T_QualSkewInfo, "QualSkewInfo"}};
char* nodeTagToString(NodeTag tag)
{
for (uint32 i = 0; i < sizeof(g_tagStrArr) / sizeof(g_tagStrArr[0]); i++) {
if (g_tagStrArr[i].tag == tag) {
return g_tagStrArr[i].str;
}
}
return "UnknownTag";
}