Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vUsE6-008Tsu-05 for pgsql-hackers@arkaria.postgresql.org; Sun, 14 Dec 2025 19:57:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vUsE4-00E62J-1s for pgsql-hackers@arkaria.postgresql.org; Sun, 14 Dec 2025 19:57:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vUsE4-00E62A-0h for pgsql-hackers@lists.postgresql.org; Sun, 14 Dec 2025 19:57:53 +0000 Received: from sss.pgh.pa.us ([68.162.161.243]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vUsE2-000jkW-1o for pgsql-hackers@lists.postgresql.org; Sun, 14 Dec 2025 19:57:52 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 5BEJvmYb1681302 for ; Sun, 14 Dec 2025 14:57:49 -0500 From: Tom Lane To: pgsql-hackers@lists.postgresql.org Subject: Proposed mid-cycle update of typedefs.list MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <1681229.1765742218.0@sss.pgh.pa.us> Date: Sun, 14 Dec 2025 14:57:48 -0500 Message-ID: <1681301.1765742268@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <1681229.1765742218.1@sss.pgh.pa.us> I happened to notice that the buildfarm's current typedefs list adds quite a few names that were not previously being captured, for example @@ -48,10 +48,15 @@ AggPath AggSplit AggState AggStatePerAgg +AggStatePerAggData AggStatePerGroup +AggStatePerGroupData AggStatePerHash +AggStatePerHashData AggStatePerPhase +AggStatePerPhaseData AggStatePerTrans +AggStatePerTransData AggStrategy AggTransInfo Aggref This is great, because it means that the declarations of these structs need not look funny anymore. But I am not quite sure why this happened. It's not a BF tooling change as I first thought, because multiple animals are reporting these names and the same animals are not capturing these names on the back branches. The best theory I can come up with is that 1b105f947 et al used these names in palloc0_array and similar calls, and that somehow looks like a capturable typedef reference ... but how? Anyway, I'll gladly take this outcome. I propose applying the attached to sync the in-tree typedefs list with what the buildfarm is currently reporting. One change I did not apply is that the buildfarm's list omits pgoff_t, although we certainly still use that. This is evidently because pgoff_t is defined as a macro not a typedef name. I guess we've been manually preserving that name in the list, but it seems like we should change "#define pgoff_t off_t" to "typedef off_t pgoff_t;" to avoid that manual hack. I've not done that here, though. regards, tom lane ------- =_aaaaaaaaaa0 Content-Type: text/x-diff; name="update-typedefs-list.patch"; charset="us-ascii" Content-ID: <1681229.1765742218.2@sss.pgh.pa.us> Content-Description: update-typedefs-list.patch Content-Transfer-Encoding: quoted-printable diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/he= ap/rewriteheap.c index 7ce3c5e2685..3b3c87fd62e 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -150,7 +150,7 @@ typedef struct RewriteStateData HTAB *rs_old_new_tid_map; /* unmatched B tuples */ HTAB *rs_logical_mappings; /* logical remapping files */ uint32 rs_num_rewrite_mappings; /* # in memory mappings */ -} RewriteStateData; +} RewriteStateData; = /* * The lookup keys for the hash tables are tuple TID and xmin (we must ch= eck diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/tr= ansam/twophase.c index ec4e3628bd5..3bc85986829 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -168,7 +168,7 @@ typedef struct GlobalTransactionData bool ondisk; /* true if prepare state file is on disk */ bool inredo; /* true if entry was added via xlog_redo */ char gid[GIDSIZE]; /* The GID assigned to the prepared xact */ -} GlobalTransactionData; +} GlobalTransactionData; = /* * Two Phase Commit shared state. Access to this struct is protected diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/n= odeWindowAgg.c index c0e5ab8dbbf..d92d632e248 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -109,7 +109,7 @@ typedef struct WindowStatePerFuncData uint8 ignore_nulls; /* ignore nulls */ = WindowObject winobj; /* object used in window function API */ -} WindowStatePerFuncData; +} WindowStatePerFuncData; = /* * For plain aggregate window functions, we also have one of these. diff --git a/src/backend/partitioning/partdesc.c b/src/backend/partitionin= g/partdesc.c index 5624f503fec..985f48fc34d 100644 --- a/src/backend/partitioning/partdesc.c +++ b/src/backend/partitioning/partdesc.c @@ -37,7 +37,7 @@ typedef struct PartitionDirectoryData MemoryContext pdir_mcxt; HTAB *pdir_hash; bool omit_detached; -} PartitionDirectoryData; +} PartitionDirectoryData; = typedef struct PartitionDirectoryEntry { diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/ar= rayfuncs.c index b67ce57656a..bf54655bb96 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -87,7 +87,7 @@ typedef struct ArrayIteratorData /* current position information, updated on each iteration */ char *data_ptr; /* our current position in the array */ int current_item; /* the item # we're at in the array */ -} ArrayIteratorData; +} ArrayIteratorData; = static bool ReadArrayDimensions(char **srcptr, int *ndim_p, int *dim, int *lBound, diff --git a/src/include/access/gin_private.h b/src/include/access/gin_pri= vate.h index db19ffd9897..d2a3adcc5e5 100644 --- a/src/include/access/gin_private.h +++ b/src/include/access/gin_private.h @@ -373,7 +373,7 @@ typedef struct GinScanEntryData bool reduceResult; uint32 predictNumberResult; GinBtreeData btree; -} GinScanEntryData; +} GinScanEntryData; = typedef struct GinScanOpaqueData { diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index 632c4332a8c..f7e4ae3843c 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -106,7 +106,7 @@ typedef struct BitmapHeapScanDescData HeapScanDescData rs_heap_base; = /* Holds no data */ -} BitmapHeapScanDescData; +} BitmapHeapScanDescData; typedef struct BitmapHeapScanDescData *BitmapHeapScanDesc; = /* diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h index 87a8be10461..78989a959d4 100644 --- a/src/include/access/relscan.h +++ b/src/include/access/relscan.h @@ -191,7 +191,7 @@ typedef struct IndexScanDescData = /* parallel index scan information, in shared memory */ struct ParallelIndexScanDescData *parallel_scan; -} IndexScanDescData; +} IndexScanDescData; = /* Generic structure for parallel scans */ typedef struct ParallelIndexScanDescData @@ -214,6 +214,6 @@ typedef struct SysScanDescData struct IndexScanDescData *iscan; /* only valid in index-scan case */ struct SnapshotData *snapshot; /* snapshot to unregister at end of scan = */ struct TupleTableSlot *slot; -} SysScanDescData; +} SysScanDescData; = #endif /* RELSCAN_H */ diff --git a/src/include/executor/nodeAgg.h b/src/include/executor/nodeAgg= .h index 6c4891bbaeb..df52fa1e1af 100644 --- a/src/include/executor/nodeAgg.h +++ b/src/include/executor/nodeAgg.h @@ -173,7 +173,7 @@ typedef struct AggStatePerTransData FunctionCallInfo serialfn_fcinfo; = FunctionCallInfo deserialfn_fcinfo; -} AggStatePerTransData; +} AggStatePerTransData; = /* * AggStatePerAggData - per-aggregate information @@ -229,7 +229,7 @@ typedef struct AggStatePerAggData * aggregates because the final function is read-write. */ bool shareable; -} AggStatePerAggData; +} AggStatePerAggData; = /* * AggStatePerGroupData - per-aggregate-per-group working state @@ -264,7 +264,7 @@ typedef struct AggStatePerGroupData * NULL and not auto-replace it with a later input value. Only the first * non-NULL input will be auto-substituted. */ -} AggStatePerGroupData; +} AggStatePerGroupData; = /* * AggStatePerPhaseData - per-grouping-set-phase state @@ -297,7 +297,7 @@ typedef struct AggStatePerPhaseData *---------- */ ExprState *evaltrans_cache[2][2]; -} AggStatePerPhaseData; +} AggStatePerPhaseData; = /* * AggStatePerHashData - per-hashtable state @@ -319,7 +319,7 @@ typedef struct AggStatePerHashData AttrNumber *hashGrpColIdxInput; /* hash col indices in input slot */ AttrNumber *hashGrpColIdxHash; /* indices in hash table tuples */ Agg *aggnode; /* original Agg node, for numGroups etc. */ -} AggStatePerHashData; +} AggStatePerHashData; = = extern AggState *ExecInitAgg(Agg *node, EState *estate, int eflags); diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 64ff6996431..3968429f991 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -882,7 +882,7 @@ typedef struct TupleHashTableData ExprState *in_hash_expr; /* ExprState for hashing input datatype(s) */ ExprState *cur_eq_func; /* comparator for input vs. table */ ExprContext *exprcontext; /* expression context */ -} TupleHashTableData; +} TupleHashTableData; = typedef tuplehash_iterator TupleHashIterator; = diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h index 46a8655621d..b5ff456ef7f 100644 --- a/src/include/nodes/pathnodes.h +++ b/src/include/nodes/pathnodes.h @@ -639,7 +639,7 @@ typedef struct PartitionSchemeData = /* Cached information about partition comparison functions. */ struct FmgrInfo *partsupfunc; -} PartitionSchemeData; +} PartitionSchemeData; = typedef struct PartitionSchemeData *PartitionScheme; = diff --git a/src/include/utils/skipsupport.h b/src/include/utils/skipsuppo= rt.h index c42be001fb5..bc51847cf61 100644 --- a/src/include/utils/skipsupport.h +++ b/src/include/utils/skipsupport.h @@ -90,7 +90,7 @@ typedef struct SkipSupportData */ SkipSupportIncDec decrement; SkipSupportIncDec increment; -} SkipSupportData; +} SkipSupportData; = extern SkipSupport PrepareSkipSupportFromOpclass(Oid opfamily, Oid opcint= ype, bool reverse); diff --git a/src/include/utils/tuplesort.h b/src/include/utils/tuplesort.h index 0bf55902aa1..63a7cc13a31 100644 --- a/src/include/utils/tuplesort.h +++ b/src/include/utils/tuplesort.h @@ -57,7 +57,7 @@ typedef struct SortCoordinateData = /* Private opaque state (points to shared memory) */ Sharedsort *sharedsort; -} SortCoordinateData; +} SortCoordinateData; = typedef struct SortCoordinateData *SortCoordinate; = diff --git a/src/test/modules/test_int128/test_int128.c b/src/test/modules= /test_int128/test_int128.c index 1efd4ff68b3..f4c4f3a1de0 100644 --- a/src/test/modules/test_int128/test_int128.c +++ b/src/test/modules/test_int128/test_int128.c @@ -51,7 +51,7 @@ typedef union int64 hi; #endif } hl; -} test128; +} test128; = #define INT128_HEX_FORMAT "%016" PRIx64 "%016" PRIx64 = diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedef= s.list index efa32dc1295..d7459af2ba3 100644 --- a/src/tools/pgindent/typedefs.list +++ b/src/tools/pgindent/typedefs.list @@ -48,10 +48,15 @@ AggPath AggSplit AggState AggStatePerAgg +AggStatePerAggData AggStatePerGroup +AggStatePerGroupData AggStatePerHash +AggStatePerHashData AggStatePerPhase +AggStatePerPhaseData AggStatePerTrans +AggStatePerTransData AggStrategy AggTransInfo Aggref @@ -151,6 +156,7 @@ ArrayExpr ArrayExprIterState ArrayIOData ArrayIterator +ArrayIteratorData ArrayMapState ArrayMetaState ArraySortCachedInfo @@ -268,6 +274,7 @@ BitmapAndState BitmapHeapPath BitmapHeapScan BitmapHeapScanDesc +BitmapHeapScanDescData BitmapHeapScanInstrumentation BitmapHeapScanState BitmapIndexScan @@ -618,7 +625,6 @@ DatumTupleFields DbInfo DbInfoArr DbLocaleInfo -DbOidName DeClonePtrType DeadLockState DeallocateStmt @@ -1078,6 +1084,7 @@ GinPostingList GinPostingTreeScanItem GinQualCounts GinScanEntry +GinScanEntryData GinScanItem GinScanKey GinScanKeyData @@ -1102,6 +1109,7 @@ GistSplitVector GistTsVectorOptions GistVacState GlobalTransaction +GlobalTransactionData GlobalVisHorizonKind GlobalVisState GrantRoleOptions @@ -1273,6 +1281,7 @@ IndexPath IndexRuntimeKeyInfo IndexScan IndexScanDesc +IndexScanDescData IndexScanInstrumentation IndexScanState IndexStateFlagsAction @@ -1729,9 +1738,9 @@ MultiSortSupportData MultiXactId MultiXactMember MultiXactOffset +MultiXactOffset32 MultiXactStateData MultiXactStatus -MultiXactWriter MultirangeIOData MultirangeParseState MultirangeType @@ -1752,7 +1761,6 @@ NamedArgExpr NamedDSAState NamedDSHState NamedDSMState -NamedLWLockTranche NamedLWLockTrancheRequest NamedTuplestoreScan NamedTuplestoreScanState @@ -2126,6 +2134,7 @@ PartitionCmd PartitionDesc PartitionDescData PartitionDirectory +PartitionDirectoryData PartitionDirectoryEntry PartitionDispatch PartitionElem @@ -2145,6 +2154,7 @@ PartitionRangeBound PartitionRangeDatum PartitionRangeDatumKind PartitionScheme +PartitionSchemeData PartitionSpec PartitionStrategy PartitionTupleRouting @@ -2298,7 +2308,6 @@ PlannerParamItem Point Pointer PolicyInfo -PolyNumAggState Pool PopulateArrayContext PopulateArrayState @@ -2604,6 +2613,7 @@ RewriteMappingDataEntry RewriteMappingFile RewriteRule RewriteState +RewriteStateData RmgrData RmgrDescData RmgrId @@ -2805,6 +2815,7 @@ SinglePartitionSpec Size SkipPages SkipSupport +SkipSupportData SkipSupportIncDec SlabBlock SlabContext @@ -2835,6 +2846,7 @@ SortBy SortByDir SortByNulls SortCoordinate +SortCoordinateData SortGroupClause SortItem SortPath @@ -2870,8 +2882,8 @@ SpecialJoinInfo SpinDelayStatus SplitInterval SplitLR -SplitPartitionContext SplitPageLayout +SplitPartitionContext SplitPoint SplitTextOutputData SplitVar @@ -2947,6 +2959,7 @@ SyncStandbySlotsConfigData SyncingRelationsState SysFKRelationship SysScanDesc +SysScanDescData SyscacheCallbackFunction SysloggerStartupData SystemRowsSamplerData @@ -3138,6 +3151,7 @@ TupleHashEntry TupleHashEntryData TupleHashIterator TupleHashTable +TupleHashTableData TupleQueueReader TupleTableSlot TupleTableSlotOps @@ -3213,7 +3227,6 @@ VacAttrStats VacAttrStatsP VacDeadItemsInfo VacErrPhase -VacObjFilter VacOptValue VacuumParams VacuumRelation @@ -3285,10 +3298,10 @@ WaitEventIO WaitEventIPC WaitEventSet WaitEventTimeout -WaitLSNType -WaitLSNState WaitLSNProcInfo WaitLSNResult +WaitLSNState +WaitLSNType WaitPMResult WaitStmt WalCloseMethod @@ -3331,6 +3344,7 @@ WindowObjectData WindowStatePerAgg WindowStatePerAggData WindowStatePerFunc +WindowStatePerFuncData WithCheckOption WithClause WordBoundaryNext @@ -3944,7 +3958,6 @@ pg_unicode_recompinfo pg_usec_time_t pg_utf_to_local_combined pg_uuid_t -pg_wc_probefunc pg_wchar pg_wchar_tbl pgp_armor_headers_state @@ -3965,6 +3978,8 @@ pgthreadlock_t pid_t pivot_field planner_hook_type +planner_setup_hook_type +planner_shutdown_hook_type planstate_tree_walker_callback plperl_array_info plperl_call_data @@ -4039,6 +4054,7 @@ reduce_outer_joins_partial_state reduce_outer_joins_pass1_state reduce_outer_joins_pass2_state reference +regc_wc_probefunc regex_arc_t regexp regexp_matches_ctx @@ -4165,6 +4181,7 @@ tar_file td_entry teSection temp_tablespaces_extra +test128 test_re_flags test_regex_ctx test_shm_mq_header @@ -4236,6 +4253,7 @@ varatt_expanded varattrib_1b varattrib_1b_e varattrib_4b +vartag_external vbits verifier_context walrcv_alter_slot_fn @@ -4364,7 +4382,6 @@ xmlGenericErrorFunc xmlNodePtr xmlNodeSetPtr xmlParserCtxtPtr -xmlParserErrors xmlParserInputPtr xmlSaveCtxt xmlSaveCtxtPtr ------- =_aaaaaaaaaa0--