This is an automated email from the ASF dual-hosted git repository. chenjinbao1989 pushed a commit to branch cbdb-postgres-merge in repository https://gitbox.apache.org/repos/asf/cloudberry.git
The following commit(s) were added to refs/heads/cbdb-postgres-merge by this push: new 9f4f665ab1a Fix some compile error for header file 9f4f665ab1a is described below commit 9f4f665ab1a7b2af5af0ff3ba29b48a295dfcf61 Author: Jinbao Chen <chenjinbao1...@gmail.com> AuthorDate: Mon Sep 22 18:15:42 2025 +0800 Fix some compile error for header file --- src/backend/Makefile | 4 +- src/backend/access/transam/xloginsert.c | 6 +- src/backend/nodes/Makefile | 70 --- src/include/access/htup_details.h | 83 --- src/include/access/xloginsert.h | 4 +- src/include/access/xlogreader.h | 9 - .../catalog/gp_segment_configuration_indexing.h | 6 +- src/include/nodes/nodes.h | 660 ++++++++++++++++++++- src/include/nodes/pathnodes.h | 17 - src/include/nodes/plannodes.h | 1 - src/include/nodes/value.h | 10 + src/include/port/pg_bitutils.h | 20 - src/include/portability/instr_time.h | 120 ---- src/include/storage/lock.h | 2 +- src/include/tcop/cmdtag.h | 2 +- src/include/tcop/dest.h | 4 - src/include/utils/portal.h | 3 - src/include/utils/rel.h | 3 +- 18 files changed, 682 insertions(+), 342 deletions(-) diff --git a/src/backend/Makefile b/src/backend/Makefile index 3b07e9b435e..fb9d5e5aceb 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -168,8 +168,8 @@ submake-catalog-headers: $(MAKE) -C catalog distprep generated-header-symlinks # run this unconditionally to avoid needing to know its dependencies here: -submake-nodes-headers: - $(MAKE) -C nodes distprep generated-header-symlinks +#submake-nodes-headers: +# $(MAKE) -C nodes distprep generated-header-symlinks # run this unconditionally to avoid needing to know its dependencies here: submake-utils-headers: diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index e63cf0c3a56..6a218b99aac 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -1422,7 +1422,7 @@ InitXLogInsert(void) * Get RelFileNode/ForkNumber/BlockNumber of XLog register block if any. */ bool -GetXLogRegisterBufferTagIfAny(RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blkno) +GetXLogRegisterBufferTagIfAny(RelFileLocator *rnode, ForkNumber *forknum, BlockNumber *blkno) { for (int i = 0; i < max_registered_block_id; i++) { @@ -1443,12 +1443,12 @@ GetNumXLogRegisterBuffers(void) * Caller should make sure the block_id is valid(block_id < max_registered_block_id). */ bool -GetXLogRegisterBuffer(int block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blkno, Page *page) +GetXLogRegisterBuffer(int block_id, RelFileLocator *rnode, ForkNumber *forknum, BlockNumber *blkno, Page *page) { if (registered_buffers[block_id].in_use) { if (rnode) - *rnode = registered_buffers[block_id].rnode; + *rnode = registered_buffers[block_id].rlocator; if (forknum) *forknum = registered_buffers[block_id].forkno; if (blkno) diff --git a/src/backend/nodes/Makefile b/src/backend/nodes/Makefile index aa3ae2f8f31..93dc5538c96 100644 --- a/src/backend/nodes/Makefile +++ b/src/backend/nodes/Makefile @@ -12,8 +12,6 @@ subdir = src/backend/nodes top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) - OBJS = \ bitmapset.o \ copyfuncs.o \ @@ -21,14 +19,12 @@ OBJS = \ extensible.o \ list.o \ makefuncs.o \ - multibitmapset.o \ nodeFuncs.o \ nodes.o \ outfast.o \ outfuncs.o \ params.o \ print.o \ - queryjumblefuncs.o \ read.o \ readfast.o \ readfuncs.o \ @@ -40,69 +36,3 @@ readfast.o: readfuncs.c readfast.c readfuncs_common.c outfast.o: outfuncs.c outfast.c outfuncs_common.c include $(top_srcdir)/src/backend/common.mk - -# The principal node-defining headers are listed in their inclusion order, -# to ensure cross-file subtyping works correctly. The rest can just be -# listed alphabetically. -# Caution: re-ordering this list risks ABI breakage! -node_headers = \ - nodes/nodes.h \ - nodes/primnodes.h \ - nodes/parsenodes.h \ - nodes/pathnodes.h \ - nodes/plannodes.h \ - nodes/execnodes.h \ - access/amapi.h \ - access/sdir.h \ - access/tableam.h \ - access/tsmapi.h \ - commands/event_trigger.h \ - commands/trigger.h \ - executor/tuptable.h \ - foreign/fdwapi.h \ - nodes/bitmapset.h \ - nodes/extensible.h \ - nodes/lockoptions.h \ - nodes/miscnodes.h \ - nodes/replnodes.h \ - nodes/supportnodes.h \ - nodes/value.h \ - utils/rel.h - -# see also catalog/Makefile for an explanation of these make rules - -all: distprep generated-header-symlinks - -distprep: node-support-stamp - -.PHONY: generated-header-symlinks - -generated-header-symlinks: $(top_builddir)/src/include/nodes/header-stamp - -# node-support-stamp records the last time we ran gen_node_support.pl. -# We don't rely on the timestamps of the individual output files, -# because the Perl script won't update them if they didn't change (to -# avoid unnecessary recompiles). -node-support-stamp: gen_node_support.pl $(addprefix $(top_srcdir)/src/include/,$(node_headers)) - $(PERL) $^ - touch $@ - -# These generated headers must be symlinked into builddir/src/include/, -# using absolute links for the reasons explained in src/backend/Makefile. -# We use header-stamp to record that we've done this because the symlinks -# themselves may appear older than node-support-stamp. -$(top_builddir)/src/include/nodes/header-stamp: node-support-stamp - prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ - cd '$(dir $@)' && for file in nodetags.h; do \ - rm -f $$file && $(LN_S) "$$prereqdir/$$file" . ; \ - done - touch $@ - -copyfuncs.o: copyfuncs.c copyfuncs.funcs.c copyfuncs.switch.c | node-support-stamp -equalfuncs.o: equalfuncs.c equalfuncs.funcs.c equalfuncs.switch.c | node-support-stamp -outfuncs.o: outfuncs.c outfuncs.funcs.c outfuncs.switch.c | node-support-stamp -queryjumblefuncs.o: queryjumblefuncs.c queryjumblefuncs.funcs.c queryjumblefuncs.switch.c | node-support-stamp -readfuncs.o: readfuncs.c readfuncs.funcs.c readfuncs.switch.c | node-support-stamp - -maintainer-clean: clean - rm -f node-support-stamp $(addsuffix funcs.funcs.c,copy equal out queryjumble read) $(addsuffix funcs.switch.c,copy equal out queryjumble read) nodetags.h diff --git a/src/include/access/htup_details.h b/src/include/access/htup_details.h index 8023022d769..cb368894656 100644 --- a/src/include/access/htup_details.h +++ b/src/include/access/htup_details.h @@ -713,89 +713,6 @@ extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, extern Datum getmissingattr(TupleDesc tupleDesc, int attnum, bool *isnull); -/* ---------------- - * fastgetattr - * - * Fetch a user attribute's value as a Datum (might be either a - * value, or a pointer into the data area of the tuple). - * - * This must not be used when a system attribute might be requested. - * Furthermore, the passed attnum MUST be valid. Use heap_getattr() - * instead, if in doubt. - * - * This gets called many times, so we macro the cacheable and NULL - * lookups, and call nocachegetattr() for the rest. - * - * CDB: Implemented as inline function instead of macro. - * ---------------- - */ -static inline Datum -fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) -{ - Datum result; - Form_pg_attribute att = TupleDescAttr(tupleDesc, attnum - 1); - - Assert(attnum > 0); - - *isnull = false; - - if (HeapTupleNoNulls(tup)) - { - if (att->attcacheoff >= 0) - result = fetchatt(att, - (char *)tup->t_data + tup->t_data->t_hoff + - att->attcacheoff); - else - result = nocachegetattr(tup, attnum, tupleDesc); - } - else if (att_isnull(attnum-1, tup->t_data->t_bits)) - { - result = Int32GetDatum(0); - *isnull = true; - } - else - result = nocachegetattr(tup, attnum, tupleDesc); - - return result; -} /* fastgetattr */ - - -/* ---------------- - * heap_getattr - * - * Extract an attribute of a heap tuple and return it as a Datum. - * This works for either system or user attributes. The given attnum - * is properly range-checked. - * - * If the field in question has a NULL value, we return a zero Datum - * and set *isnull == true. Otherwise, we set *isnull == false. - * - * <tup> is the pointer to the heap tuple. <attnum> is the attribute - * number of the column (field) caller wants. <tupleDesc> is a - * pointer to the structure describing the row and all its fields. - * - * GPDB: Implemented as inline function instead of macro. - * ---------------- - */ -static inline Datum -heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) -{ - Datum result; - - Assert(tup != NULL); - - if (attnum > (int)HeapTupleHeaderGetNatts(tup->t_data)) - { - result = getmissingattr(tupleDesc, attnum, isnull); - } - else if (attnum > 0) - result = fastgetattr(tup, attnum, tupleDesc, isnull); - else - result = heap_getsysattr(tup, attnum, tupleDesc, isnull); - - return result; -} /* heap_getattr */ - /* prototypes for functions in common/heaptuple.c */ extern Size heap_compute_data_size(TupleDesc tupleDesc, Datum *values, bool *isnull); diff --git a/src/include/access/xloginsert.h b/src/include/access/xloginsert.h index 8c2082c906e..2b8bc87fe3b 100644 --- a/src/include/access/xloginsert.h +++ b/src/include/access/xloginsert.h @@ -44,9 +44,9 @@ typedef void * (*RecordAssembleFunc)(RmgrId rmid, uint8 info, typedef XLogRecPtr (*XLogInsert_hook_type)(RmgrId rmid, uint8 info, TransactionId headerXid, uint8 curinsert_flags, RecordAssembleFunc recordAssembleFunc); extern PGDLLIMPORT XLogInsert_hook_type XLogInsert_hook; -extern bool GetXLogRegisterBufferTagIfAny(RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blkno); +extern bool GetXLogRegisterBufferTagIfAny(RelFileLocator *rnode, ForkNumber *forknum, BlockNumber *blkno); extern int GetNumXLogRegisterBuffers(void); -extern bool GetXLogRegisterBuffer(int block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blkno, char **page); +extern bool GetXLogRegisterBuffer(int block_id, RelFileLocator *rnode, ForkNumber *forknum, BlockNumber *blkno, char **page); extern char *GetXLogRegisterRdata(int rdata_index); /* prototypes for public functions in xloginsert.c: */ diff --git a/src/include/access/xlogreader.h b/src/include/access/xlogreader.h index 0f0805138eb..9c217194d03 100644 --- a/src/include/access/xlogreader.h +++ b/src/include/access/xlogreader.h @@ -309,15 +309,6 @@ struct XLogReaderState /* Buffer to hold error message */ char *errormsg_buf; - /* - * Set at the end of recovery: the start point of a partial record at the - * end of WAL (InvalidXLogRecPtr if there wasn't one), and the start - * location of its first contrecord that went missing. - */ - XLogRecPtr abortedRecPtr; - XLogRecPtr missingContrecPtr; - /* Set when XLP_FIRST_IS_OVERWRITE_CONTRECORD is found */ - XLogRecPtr overwrittenRecPtr; bool errormsg_deferred; /* diff --git a/src/include/catalog/gp_segment_configuration_indexing.h b/src/include/catalog/gp_segment_configuration_indexing.h index 6dd844353cc..b4d2ac669db 100644 --- a/src/include/catalog/gp_segment_configuration_indexing.h +++ b/src/include/catalog/gp_segment_configuration_indexing.h @@ -14,9 +14,7 @@ #include "catalog/genbki.h" -DECLARE_UNIQUE_INDEX(gp_segment_config_content_preferred_role_warehouse_index, 7139, on gp_segment_configuration using btree(content int2_ops, preferred_role char_ops, warehouseid oid_ops)); -#define GpSegmentConfigContentPreferred_roleWarehouseIndexId 7139 -DECLARE_UNIQUE_INDEX(gp_segment_config_dbid_warehouse_index, 7140, on gp_segment_configuration using btree(dbid int2_ops, warehouseid oid_ops)); -#define GpSegmentConfigDbidWarehouseIndexId 7140 +DECLARE_UNIQUE_INDEX(gp_segment_config_content_preferred_role_warehouse_index, 7139, GpSegmentConfigContentPreferred_roleWarehouseIndexId, on gp_segment_configuration using btree(content int2_ops, preferred_role char_ops, warehouseid oid_ops)); +DECLARE_UNIQUE_INDEX(gp_segment_config_dbid_warehouse_index, 7140, GpSegmentConfigDbidWarehouseIndexId, on gp_segment_configuration using btree(dbid int2_ops, warehouseid oid_ops)); #endif // GP_SEGMENT_CONFIGURATION_INDEXING_H diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index 92011ec3f5d..3d62d01651a 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -29,7 +29,665 @@ typedef enum NodeTag { T_Invalid = 0, -#include "nodes/nodetags.h" + /* + * TAGS FOR EXECUTOR NODES (execnodes.h) + */ + T_IndexInfo, + T_ExprContext, + T_ProjectionInfo, + T_JunkFilter, + T_OnConflictSetState, + T_ResultRelInfo, + T_EState, + T_TupleTableSlot, + T_CdbProcess, + T_SliceTable, + T_CursorPosInfo, + T_PartitionState, + T_QueryDispatchDesc, + T_OidAssignment, + + /* + * TAGS FOR PLAN NODES (plannodes.h) + */ + T_Plan, + T_Scan, + T_Join, + + /* Real plan node starts below. Scan and Join are "Virtual nodes", + * It will take the form of IndexScan, SeqScan, etc. + * CteScan will take the form of SubqueryScan. + */ + T_Result, + T_Plan_Start = T_Result, + T_ProjectSet, + T_ModifyTable, + T_Append, + T_MergeAppend, + T_RecursiveUnion, + T_Sequence, + T_BitmapAnd, + T_BitmapOr, + T_SeqScan, + T_DynamicSeqScan, + T_SampleScan, + T_IndexScan, + T_DynamicIndexScan, + T_DynamicIndexOnlyScan, + T_IndexOnlyScan, + T_BitmapIndexScan, + T_DynamicBitmapIndexScan, + T_BitmapHeapScan, + T_DynamicBitmapHeapScan, + T_TidScan, + T_TidRangeScan, + T_SubqueryScan, + T_FunctionScan, + T_TableFunctionScan, + T_ValuesScan, + T_TableFuncScan, + T_CteScan, + T_NamedTuplestoreScan, + T_WorkTableScan, + T_ForeignScan, + T_DynamicForeignScan, + T_CustomScan, + T_NestLoop, + T_MergeJoin, + T_HashJoin, + T_Material, + T_Memoize, + T_Sort, + T_IncrementalSort, + T_Group, + T_Agg, + T_TupleSplit, + T_WindowAgg, + T_Unique, + T_Gather, + T_GatherMerge, + T_Hash, + T_RuntimeFilter, + T_SetOp, + T_LockRows, + T_Limit, + T_Motion, + T_ShareInputScan, + T_SplitUpdate, + T_AssertOp, + T_PartitionSelector, + T_Plan_End, + /* these aren't subclasses of Plan: */ + T_NestLoopParam, + T_PlanRowMark, + T_PartitionPruneInfo, + T_PartitionedRelPruneInfo, + T_PartitionPruneStepOp, + T_PartitionPruneStepCombine, + T_PlanInvalItem, + + /* + * TAGS FOR PLAN STATE NODES (execnodes.h) + * + * These should correspond one-to-one with Plan node types. + */ + T_PlanState, + T_ScanState, + T_JoinState, + + /* Real plan node starts below. Scan and Join are "Virtal nodes", + * It will take the form of IndexScan, SeqScan, etc. + */ + T_ResultState, + T_ProjectSetState, + T_ModifyTableState, + T_AppendState, + T_MergeAppendState, + T_RecursiveUnionState, + T_SequenceState, + T_BitmapAndState, + T_BitmapOrState, + T_SeqScanState, + T_DynamicSeqScanState, + T_SampleScanState, + T_IndexScanState, + T_DynamicIndexScanState, + T_DynamicIndexOnlyScanState, + T_IndexOnlyScanState, + T_BitmapIndexScanState, + T_DynamicBitmapIndexScanState, + T_BitmapHeapScanState, + T_DynamicBitmapHeapScanState, + T_TidScanState, + T_TidRangeScanState, + T_SubqueryScanState, + T_FunctionScanState, + T_TableFunctionState, + T_TableFuncScanState, + T_ValuesScanState, + T_CteScanState, + T_NamedTuplestoreScanState, + T_WorkTableScanState, + T_ForeignScanState, + T_DynamicForeignScanState, + T_CustomScanState, + T_NestLoopState, + T_MergeJoinState, + T_HashJoinState, + T_MaterialState, + T_MemoizeState, + T_SortState, + T_IncrementalSortState, + T_GroupState, + T_AggState, + T_TupleSplitState, + T_WindowAggState, + T_UniqueState, + T_GatherState, + T_GatherMergeState, + T_HashState, + T_RuntimeFilterState, + T_SetOpState, + T_LockRowsState, + T_LimitState, + T_MotionState, + T_ShareInputScanState, + T_SplitUpdateState, + T_AssertOpState, + T_PartitionSelectorState, + + /* + * TupleDesc and ParamListInfo are not Nodes as such, but you can wrap + * them in TupleDescNode and SerializedParams structs for serialization. + */ + T_TupleDescNode, + T_SerializedParams, + + /* + * TAGS FOR PRIMITIVE NODES (primnodes.h) + */ + T_Alias, + T_RangeVar, + T_TableFunc, + T_Expr, + T_Var, + T_Const, + T_Param, + T_DQAExpr, + T_Aggref, + T_GroupingFunc, + T_WindowFunc, + T_SubscriptingRef, + T_FuncExpr, + T_NamedArgExpr, + T_OpExpr, + T_DistinctExpr, + T_NullIfExpr, + T_ScalarArrayOpExpr, + T_BoolExpr, + T_SubLink, + T_SubPlan, + T_AlternativeSubPlan, + T_FieldSelect, + T_FieldStore, + T_RelabelType, + T_CoerceViaIO, + T_ArrayCoerceExpr, + T_ConvertRowtypeExpr, + T_CollateExpr, + T_CaseExpr, + T_CaseWhen, + T_CaseTestExpr, + T_ArrayExpr, + T_RowExpr, + T_RowCompareExpr, + T_CoalesceExpr, + T_MinMaxExpr, + T_SQLValueFunction, + T_XmlExpr, + T_NullTest, + T_BooleanTest, + T_CoerceToDomain, + T_CoerceToDomainValue, + T_SetToDefault, + T_CurrentOfExpr, + T_NextValueExpr, + T_InferenceElem, + T_TargetEntry, + T_RangeTblRef, + T_JoinExpr, + T_FromExpr, + T_OnConflictExpr, + T_IntoClause, + T_CopyIntoClause, + T_RefreshClause, + T_Flow, + T_GroupId, + T_GroupingSetId, + T_AggExprId, + T_RowIdExpr, + T_DistributedBy, + T_DMLActionExpr, + + /* + * TAGS FOR EXPRESSION STATE NODES (execnodes.h) + * + * ExprState represents the evaluation state for a whole expression tree. + * Most Expr-based plan nodes do not have a corresponding expression state + * node, they're fully handled within execExpr* - but sometimes the state + * needs to be shared with other parts of the executor, as for example + * with SubPlanState, which nodeSubplan.c has to modify. + */ + T_ExprState, + T_WindowFuncExprState, + T_SetExprState, + T_SubPlanState, + T_DomainConstraintState, + T_AggExprIdState, + T_RowIdExprState, + + /* + * TAGS FOR PLANNER NODES (pathnodes.h) + */ + T_PlannerInfo, + T_PlannerGlobal, + T_RelOptInfo, + T_IndexOptInfo, + T_ForeignKeyOptInfo, + T_ParamPathInfo, + T_RelAggInfo, + T_Path, + T_AppendOnlyPath, + T_AOCSPath, + T_ExternalPath, + T_CtePath, + T_IndexPath, + T_BitmapHeapPath, + T_BitmapAndPath, + T_BitmapOrPath, + T_TidPath, + T_TidRangePath, + T_SubqueryScanPath, + T_TableFunctionScanPath, + T_ForeignPath, + T_CustomPath, + T_NestPath, + T_MergePath, + T_HashPath, + T_RuntimeFilterPath, + T_AppendPath, + T_MergeAppendPath, + T_GroupResultPath, + T_MaterialPath, + T_MemoizePath, + T_UniquePath, + T_GatherPath, + T_GatherMergePath, + T_ProjectionPath, + T_ProjectSetPath, + T_SortPath, + T_IncrementalSortPath, + T_GroupPath, + T_UpperUniquePath, + T_AggPath, + T_GroupingSetsPath, + T_MinMaxAggPath, + T_WindowAggPath, + T_TupleSplitPath, + T_SetOpPath, + T_RecursiveUnionPath, + T_LockRowsPath, + T_ModifyTablePath, + T_LimitPath, + /* these aren't subclasses of Path: */ + T_EquivalenceClass, + T_EquivalenceMember, + T_PathKey, + T_PathTarget, + T_RestrictInfo, + T_IndexClause, + T_PlaceHolderVar, + T_SpecialJoinInfo, + T_AppendRelInfo, + T_RowIdentityVarInfo, + T_PlaceHolderInfo, + T_GroupedVarInfo, + T_MinMaxAggInfo, + T_SegfileMapNode, + T_PlannerParamItem, + T_RollupData, + T_GroupingSetData, + T_StatisticExtInfo, + + /* Tags for MPP planner nodes (relation.h) */ + T_CdbMotionPath = 580, + T_PartitionSelectorPath, + T_SplitUpdatePath, + T_CdbRelColumnInfo, + T_DistributionKey, + + /* + * TAGS FOR MEMORY NODES (memnodes.h) + */ + T_MemoryContext, + T_AllocSetContext, + T_SlabContext, + T_GenerationContext, + T_MemoryAccount, + + /* + * TAGS FOR VALUE NODES (value.h) + */ + T_Value, + T_Integer, + T_Float, + T_String, + T_BitString, + T_Null, + + /* + * TAGS FOR LIST NODES (pg_list.h) + */ + T_List, + T_IntList, + T_OidList, + + /* + * TAGS FOR EXTENSIBLE NODES (extensible.h) + */ + T_ExtensibleNode, + + /* + * TAGS FOR STATEMENT NODES (mostly in parsenodes.h) + */ + T_RawStmt, + T_Query, + T_PlannedStmt, + T_InsertStmt, + T_DeleteStmt, + T_UpdateStmt, + T_SelectStmt, + T_ReturnStmt, + T_PLAssignStmt, + T_AlterTableStmt, + T_AlterTableCmd, + T_AlterDomainStmt, + T_SetOperationStmt, + T_GrantStmt, + T_GrantRoleStmt, + T_AlterDefaultPrivilegesStmt, + T_ClosePortalStmt, + T_ClusterStmt, + T_CopyStmt, + T_CreateStmt, + T_SingleRowErrorDesc, + T_ExtTableTypeDesc, + T_CreateExternalStmt, + T_DefineStmt, + T_DropStmt, + T_TruncateStmt, + T_CommentStmt, + T_FetchStmt, + T_IndexStmt, + T_CreateFunctionStmt, + T_AlterFunctionStmt, + T_DoStmt, + T_RenameStmt, + T_RuleStmt, + T_NotifyStmt, + T_ListenStmt, + T_UnlistenStmt, + T_TransactionStmt, + T_ViewStmt, + T_LoadStmt, + T_CreateDomainStmt, + T_CreatedbStmt, + T_DropdbStmt, + T_VacuumStmt, + T_ExplainStmt, + T_CreateTableAsStmt, + T_CreateSeqStmt, + T_AlterSeqStmt, + T_VariableSetStmt, + T_VariableShowStmt, + T_DiscardStmt, + T_CreateTrigStmt, + T_CreatePLangStmt, + T_CreateRoleStmt, + T_AlterRoleStmt, + T_DropRoleStmt, + T_CreateProfileStmt, + T_AlterProfileStmt, + T_DropProfileStmt, + T_CreateQueueStmt, + T_AlterQueueStmt, + T_DropQueueStmt, + T_CreateResourceGroupStmt, + T_DropResourceGroupStmt, + T_AlterResourceGroupStmt, + T_LockStmt, + T_ConstraintsSetStmt, + T_ReindexStmt, + T_CheckPointStmt, + T_CreateSchemaStmt, + T_AlterSchemaStmt, + T_CreateTagStmt, + T_AlterTagStmt, + T_DropTagStmt, + T_AlterDatabaseStmt, + T_AlterDatabaseSetStmt, + T_AlterRoleSetStmt, + T_CreateConversionStmt, + T_CreateCastStmt, + T_CreateOpClassStmt, + T_CreateOpFamilyStmt, + T_AlterOpFamilyStmt, + T_PrepareStmt, + T_ExecuteStmt, + T_DeallocateStmt, + T_DeclareCursorStmt, + T_CreateTableSpaceStmt, + T_DropTableSpaceStmt, + T_AlterObjectDependsStmt, + T_AlterObjectSchemaStmt, + T_AlterOwnerStmt, + T_AlterOperatorStmt, + T_AlterTypeStmt, + T_DropOwnedStmt, + T_ReassignOwnedStmt, + T_CompositeTypeStmt, + T_CreateEnumStmt, + T_CreateRangeStmt, + T_AlterEnumStmt, + T_AlterTSDictionaryStmt, + T_AlterTSConfigurationStmt, + T_CreateFdwStmt, + T_AlterFdwStmt, + T_CreateForeignServerStmt, + T_AlterForeignServerStmt, + T_CreateStorageServerStmt, + T_AlterStorageServerStmt, + T_DropStorageServerStmt, + T_CreateUserMappingStmt, + T_AlterUserMappingStmt, + T_DropUserMappingStmt, + T_CreateStorageUserMappingStmt, + T_AlterStorageUserMappingStmt, + T_DropStorageUserMappingStmt, + T_AlterTableSpaceOptionsStmt, + T_AlterTableMoveAllStmt, + T_SecLabelStmt, + T_CreateForeignTableStmt, + T_ImportForeignSchemaStmt, + T_CreateExtensionStmt, + T_AlterExtensionStmt, + T_AlterExtensionContentsStmt, + T_CreateEventTrigStmt, + T_AlterEventTrigStmt, + T_RefreshMatViewStmt, + T_ReplicaIdentityStmt, + T_AlterSystemStmt, + T_CreatePolicyStmt, + T_AlterPolicyStmt, + T_CreateTransformStmt, + T_CreateAmStmt, + T_CreatePublicationStmt, + T_AlterPublicationStmt, + T_CreateSubscriptionStmt, + T_AlterSubscriptionStmt, + T_DropSubscriptionStmt, + T_CreateStatsStmt, + T_AlterCollationStmt, + T_CallStmt, + T_AlterStatsStmt, + T_CreateTaskStmt, + T_AlterTaskStmt, + T_DropTaskStmt, + + /* GPDB additions */ + T_PartitionBy, + T_PartitionRangeItem, + T_PartitionValuesSpec, + T_CreateDirectoryTableStmt, + T_AlterDirectoryTableStmt, + T_DropDirectoryTableStmt, + T_CreateFileSpaceStmt, + T_FileSpaceEntry, + T_DropFileSpaceStmt, + T_TableValueExpr, + T_DenyLoginInterval, + T_DenyLoginPoint, + T_AlteredTableInfo, + T_NewConstraint, + T_NewColumnValue, + T_GpPartitionDefinition, + T_GpPartDefElem, + T_GpPartitionRangeItem, + T_GpPartitionRangeSpec, + T_GpPartitionListSpec, + T_GpAlterPartitionId, + T_GpDropPartitionCmd, + T_GpSplitPartitionCmd, + T_GpAlterPartitionCmd, + T_CreateWarehouseStmt, + T_DropWarehouseStmt, + T_AddForeignSegStmt, + + /* + * TAGS FOR PARSE TREE NODES (parsenodes.h) + */ + T_A_Expr, + T_ColumnRef, + T_ParamRef, + T_A_Const, + T_FuncCall, + T_A_Star, + T_A_Indices, + T_A_Indirection, + T_A_ArrayExpr, + T_ResTarget, + T_MultiAssignRef, + T_TypeCast, + T_CollateClause, + T_SortBy, + T_WindowDef, + T_RangeSubselect, + T_RangeFunction, + T_RangeTableSample, + T_RangeTableFunc, + T_RangeTableFuncCol, + T_TypeName, + T_ColumnDef, + T_IndexElem, + T_StatsElem, + T_Constraint, + T_DefElem, + T_RangeTblEntry, + T_RangeTblFunction, + T_TableSampleClause, + T_WithCheckOption, + T_SortGroupClause, + T_GroupingSet, + T_WindowClause, + T_ObjectWithArgs, + T_AccessPriv, + T_CreateOpClassItem, + T_TableLikeClause, + T_FunctionParameter, + T_LockingClause, + T_RowMarkClause, + T_XmlSerialize, + T_WithClause, + T_InferClause, + T_OnConflictClause, + T_CTESearchClause, + T_CTECycleClause, + T_CommonTableExpr, + T_ColumnReferenceStorageDirective, + T_DistributionKeyElem, + T_RoleSpec, + T_TriggerTransition, + T_PartitionElem, + T_PartitionSpec, + T_PartitionBoundSpec, + T_PartitionRangeDatum, + T_PartitionCmd, + T_VacuumRelation, + + T_Bitmapset, + + /* + * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h) + */ + T_IdentifySystemCmd, + T_BaseBackupCmd, + T_CreateReplicationSlotCmd, + T_DropReplicationSlotCmd, + T_StartReplicationCmd, + T_TimeLineHistoryCmd, + T_SQLCmd, + + /* + * TAGS FOR RANDOM OTHER STUFF + * + * These are objects that aren't part of parse/plan/execute node tree + * structures, but we give them NodeTags anyway for identification + * purposes (usually because they are involved in APIs where we want to + * pass multiple object types through the same pointer). + */ + T_TriggerData, /* in commands/trigger.h */ + T_EventTriggerData, /* in commands/event_trigger.h */ + T_ReturnSetInfo, /* in nodes/execnodes.h */ + T_WindowObjectData, /* private in nodeWindowAgg.c */ + T_TIDBitmap, /* in nodes/tidbitmap.h */ + T_InlineCodeBlock, /* in nodes/parsenodes.h */ + T_FdwRoutine, /* in foreign/fdwapi.h */ + T_IndexAmRoutine, /* in access/amapi.h */ + T_TableAmRoutine, /* in access/tableam.h */ + T_TsmRoutine, /* in access/tsmapi.h */ + T_ForeignKeyCacheInfo, /* in utils/rel.h */ + T_CallContext, /* in nodes/parsenodes.h */ + T_SupportRequestSimplify, /* in nodes/supportnodes.h */ + T_SupportRequestSelectivity, /* in nodes/supportnodes.h */ + T_SupportRequestCost, /* in nodes/supportnodes.h */ + T_SupportRequestRows, /* in nodes/supportnodes.h */ + T_SupportRequestIndexCondition /* in nodes/supportnodes.h */ + + , + T_StreamBitmap, /* in nodes/tidbitmap.h */ + T_FormatterData, /* in access/formatter.h */ + T_ExtProtocolData, /* in access/extprotocol.h */ + T_ExtProtocolValidatorData, /* in access/extprotocol.h */ + T_ExternalScanInfo, /* in access/plannodes.h */ + T_CookedConstraint, /* in catalog/heap.h */ + + /* CDB: tags for random other stuff */ + T_CdbExplain_StatHdr = 1000, /* in cdb/cdbexplain.c */ + T_GpPolicy, /* in catalog/gp_distribution_policy.h */ + T_RetrieveStmt, + T_ReindexIndexInfo, /* in nodes/parsenodes.h */ + T_EphemeralNamedRelationInfo, /* utils/queryenvironment.h */ + } NodeTag; /* diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h index 8946fbd087a..636cf8a6850 100644 --- a/src/include/nodes/pathnodes.h +++ b/src/include/nodes/pathnodes.h @@ -213,9 +213,6 @@ typedef struct PlannerGlobal /* highest plan node ID assigned */ int lastPlanNodeId; - /* redo plan when TransactionXmin changes? */ - bool transientPlan; - /* is plan specific to current role? */ bool dependsOnRole; @@ -399,9 +396,6 @@ struct PlannerInfo /* list of active EquivalenceClasses */ List *eq_classes; - /* set true once ECs are canonical */ - bool ec_merging_done; - List *list_cteplaninfo; /* list of CtePlannerInfo, one for each CTE */ /* @@ -414,12 +408,6 @@ struct PlannerInfo /* list of "canonical" PathKeys */ List *canon_pathkeys; - /* - * list of OuterJoinClauseInfos for mergejoinable outer join clauses - * w/nonnullable var on left - */ - List *left_join_clauses; - /* * list of OuterJoinClauseInfos for mergejoinable outer join clauses * w/nonnullable var on right @@ -477,9 +465,6 @@ struct PlannerInfo /* allocated size of array */ int placeholder_array_size pg_node_attr(read_write_ignore); - /* list of ForeignKeyOptInfos */ - List *fkey_list; - /* desired pathkeys for query_planner() */ List *query_pathkeys; @@ -489,8 +474,6 @@ struct PlannerInfo /* hint on where the result of the query will be needed. Null if not known */ CdbPathLocus final_locus; - List *initial_rels; /* RelOptInfos we are now trying to join */ - /* * The number of elements in the group_pathkeys list which belong to the * GROUP BY clause. Additional ones belong to ORDER BY / DISTINCT diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index d65293a0453..05d39a91193 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -738,7 +738,6 @@ typedef struct IndexOnlyScan List *indexorderby; /* list of index ORDER BY exprs */ List *indextlist; /* TargetEntry list describing index's cols */ ScanDirection indexorderdir; /* forward or backward or don't care */ - List *recheckqual; /* index quals in recheckable form */ } IndexOnlyScan; /* diff --git a/src/include/nodes/value.h b/src/include/nodes/value.h index b24c4c1afef..cd6b1229bca 100644 --- a/src/include/nodes/value.h +++ b/src/include/nodes/value.h @@ -76,6 +76,16 @@ typedef struct BitString char *bsval; } BitString; +typedef struct Value +{ + NodeTag type; /* tag appropriately (eg. T_String) */ + union ValUnion2 + { + int ival; /* machine integer */ + char *str; /* string */ + } val; +} Value; + #define intVal(v) (castNode(Integer, v)->ival) #define floatVal(v) atof(castNode(Float, v)->fval) #define boolVal(v) (castNode(Boolean, v)->boolval) diff --git a/src/include/port/pg_bitutils.h b/src/include/port/pg_bitutils.h index 44c42ab3246..21a4fa03410 100644 --- a/src/include/port/pg_bitutils.h +++ b/src/include/port/pg_bitutils.h @@ -220,16 +220,6 @@ pg_nextpower2_64(uint64 num) return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1); } -/* - * pg_nextpower2_size_t - * Returns the next higher power of 2 above 'num', for a size_t input. - */ -#if SIZEOF_SIZE_T == 4 -#define pg_nextpower2_size_t(num) pg_nextpower2_32(num) -#else -#define pg_nextpower2_size_t(num) pg_nextpower2_64(num) -#endif - /* * pg_prevpower2_32 * Returns the next lower power of 2 below 'num', or 'num' if it's @@ -256,16 +246,6 @@ pg_prevpower2_64(uint64 num) return ((uint64) 1) << pg_leftmost_one_pos64(num); } -/* - * pg_prevpower2_size_t - * Returns the next lower power of 2 below 'num', for a size_t input. - */ -#if SIZEOF_SIZE_T == 4 -#define pg_prevpower2_size_t(num) pg_prevpower2_32(num) -#else -#define pg_prevpower2_size_t(num) pg_prevpower2_64(num) -#endif - /* * pg_ceil_log2_32 * Returns equivalent of ceil(log2(num)) diff --git a/src/include/portability/instr_time.h b/src/include/portability/instr_time.h index 4193ade6a91..4cae6a12e34 100644 --- a/src/include/portability/instr_time.h +++ b/src/include/portability/instr_time.h @@ -130,126 +130,6 @@ pg_clock_gettime_ns(void) #define INSTR_TIME_ASSIGN(x,y) ((x).tv_sec = (y).tv_sec, (x).tv_nsec = (y).tv_nsec) -#define INSTR_TIME_ADD(x,y) \ - do { \ - (x).tv_sec += (y).tv_sec; \ - (x).tv_nsec += (y).tv_nsec; \ - /* Normalize */ \ - while ((x).tv_nsec >= 1000000000) \ - { \ - (x).tv_nsec -= 1000000000; \ - (x).tv_sec++; \ - } \ - } while (0) - -#define INSTR_TIME_SUBTRACT(x,y) \ - do { \ - (x).tv_sec -= (y).tv_sec; \ - (x).tv_nsec -= (y).tv_nsec; \ - /* Normalize */ \ - while ((x).tv_nsec < 0) \ - { \ - (x).tv_nsec += 1000000000; \ - (x).tv_sec--; \ - } \ - } while (0) - -#define INSTR_TIME_ACCUM_DIFF(x,y,z) \ - do { \ - (x).tv_sec += (y).tv_sec - (z).tv_sec; \ - (x).tv_nsec += (y).tv_nsec - (z).tv_nsec; \ - /* Normalize after each add to avoid overflow/underflow of tv_nsec */ \ - while ((x).tv_nsec < 0) \ - { \ - (x).tv_nsec += 1000000000; \ - (x).tv_sec--; \ - } \ - while ((x).tv_nsec >= 1000000000) \ - { \ - (x).tv_nsec -= 1000000000; \ - (x).tv_sec++; \ - } \ - } while (0) - -#define INSTR_TIME_GET_DOUBLE(t) \ - (((double) (t).tv_sec) + ((double) (t).tv_nsec) / 1000000000.0) - -#define INSTR_TIME_GET_MILLISEC(t) \ - (((double) (t).tv_sec * 1000.0) + ((double) (t).tv_nsec) / 1000000.0) - -#define INSTR_TIME_GET_MICROSEC(t) \ - (((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) ((t).tv_nsec / 1000)) - -#else /* !HAVE_CLOCK_GETTIME */ - -/* Use gettimeofday() */ - -#include <sys/time.h> - -typedef struct timeval instr_time; - -#define INSTR_TIME_IS_ZERO(t) ((t).tv_usec == 0 && (t).tv_sec == 0) - -#define INSTR_TIME_SET_ZERO(t) ((t).tv_sec = 0, (t).tv_usec = 0) - -#define INSTR_TIME_SET_CURRENT(t) gettimeofday(&(t), NULL) - -#define INSTR_TIME_SET_CURRENT_COARSE(t) INSTR_TIME_SET_CURRENT(t) - -#define INSTR_TIME_ASSIGN(x,y) ((x).tv_sec = (y).tv_sec, (x).tv_usec = (y).tv_usec) - -#define INSTR_TIME_ADD(x,y) \ - do { \ - (x).tv_sec += (y).tv_sec; \ - (x).tv_usec += (y).tv_usec; \ - /* Normalize */ \ - while ((x).tv_usec >= 1000000) \ - { \ - (x).tv_usec -= 1000000; \ - (x).tv_sec++; \ - } \ - } while (0) - -#define INSTR_TIME_SUBTRACT(x,y) \ - do { \ - (x).tv_sec -= (y).tv_sec; \ - (x).tv_usec -= (y).tv_usec; \ - /* Normalize */ \ - while ((x).tv_usec < 0) \ - { \ - (x).tv_usec += 1000000; \ - (x).tv_sec--; \ - } \ - } while (0) - -#define INSTR_TIME_ACCUM_DIFF(x,y,z) \ - do { \ - (x).tv_sec += (y).tv_sec - (z).tv_sec; \ - (x).tv_usec += (y).tv_usec - (z).tv_usec; \ - /* Normalize after each add to avoid overflow/underflow of tv_usec */ \ - while ((x).tv_usec < 0) \ - { \ - (x).tv_usec += 1000000; \ - (x).tv_sec--; \ - } \ - while ((x).tv_usec >= 1000000) \ - { \ - (x).tv_usec -= 1000000; \ - (x).tv_sec++; \ - } \ - } while (0) - -#define INSTR_TIME_GET_DOUBLE(t) \ - (((double) (t).tv_sec) + ((double) (t).tv_usec) / 1000000.0) - -#define INSTR_TIME_GET_MILLISEC(t) \ - (((double) (t).tv_sec * 1000.0) + ((double) (t).tv_usec) / 1000.0) - -#define INSTR_TIME_GET_MICROSEC(t) \ - (((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) (t).tv_usec) - -#endif /* HAVE_CLOCK_GETTIME */ - #define INSTR_TIME_GET_NANOSEC(t) \ ((int64) (t).ticks) diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index a1ea7501b62..2f5ba015a3e 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -428,7 +428,7 @@ typedef struct PROCLOCK dlist_node procLink; /* list link in PGPROC's list of proclocks */ int nLocks; /* total number of times lock is held by this process, used by resource scheduler */ - SHM_QUEUE portalLinks; /* list of ResPortalIncrements for this + dlist_node portalLinks; /* list of ResPortalIncrements for this proclock, used by resource scheduler */ } PROCLOCK; diff --git a/src/include/tcop/cmdtag.h b/src/include/tcop/cmdtag.h index 1e7514dcff7..a2c74b97309 100644 --- a/src/include/tcop/cmdtag.h +++ b/src/include/tcop/cmdtag.h @@ -14,7 +14,7 @@ #define CMDTAG_H /* buffer size required for command completion tags */ -#define COMPLETION_TAG_BUFSIZE 64 +#define COMPLETION_TAG_BUFSIZE 72 #define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \ tag, diff --git a/src/include/tcop/dest.h b/src/include/tcop/dest.h index 2045b079e10..b3421fb32a0 100644 --- a/src/include/tcop/dest.h +++ b/src/include/tcop/dest.h @@ -71,10 +71,6 @@ #include "tcop/cmdtag.h" -/* buffer size to use for command completion tags */ -#define COMPLETION_TAG_BUFSIZE 72 - - /* ---------------- * CommandDest is a simplistic means of identifying the desired * destination. Someday this will probably need to be improved. diff --git a/src/include/utils/portal.h b/src/include/utils/portal.h index 49a9539393c..fbdfbee82d8 100644 --- a/src/include/utils/portal.h +++ b/src/include/utils/portal.h @@ -221,9 +221,6 @@ typedef struct PortalData TimestampTz creation_time; /* time at which this portal was defined */ bool visible; /* include this portal in pg_cursors? */ - /* Stuff added at the end to avoid ABI break in stable branches: */ - int createLevel; /* creating subxact's nesting level */ - /* MPP: is this portal a CURSOR, or protocol level portal? */ bool is_extended_query; /* simple or extended query protocol? */ } PortalData; diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index dfe72fa57dc..b1cf6ec01f4 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -699,7 +699,8 @@ static inline SMgrRelation RelationGetSmgr(Relation rel) { if (unlikely(rel->rd_smgr == NULL)) - smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_locator, rel->rd_backend)); + smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_locator, rel->rd_backend, + SMGR_MD, rel)); return rel->rd_smgr; } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cloudberry.apache.org For additional commands, e-mail: commits-h...@cloudberry.apache.org