Update some more forward declarations to use typedef
authorÁlvaro Herrera <alvherre@kurilemu.de>
Thu, 25 Sep 2025 12:33:19 +0000 (14:33 +0200)
committerÁlvaro Herrera <alvherre@kurilemu.de>
Thu, 25 Sep 2025 12:33:19 +0000 (14:33 +0200)
As commit d4d1fc527bdb.

Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Discussion: https://postgr.es/m/202509191025.22agk3fvpilc@alvherre.pgsql

src/backend/access/table/tableam.c
src/include/access/amapi.h
src/include/access/brin_internal.h
src/include/access/genam.h
src/include/access/heapam.h
src/include/access/tableam.h
src/include/nodes/execnodes.h

index a56c5eceb14ade089522679798dcd62509462e3a..5e41404937eb11b5f0dd9c98edfeb006110304e8 100644 (file)
@@ -110,7 +110,7 @@ table_slot_create(Relation relation, List **reglist)
  */
 
 TableScanDesc
-table_beginscan_catalog(Relation relation, int nkeys, struct ScanKeyData *key)
+table_beginscan_catalog(Relation relation, int nkeys, ScanKeyData *key)
 {
    uint32      flags = SO_TYPE_SEQSCAN |
        SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE | SO_TEMP_SNAPSHOT;
index 70949de56ac700d17e2b414b54c1bca3cb935373..2b4482dc1e62b05f44bbb9ddcad6d6f4a3d2610d 100644 (file)
  * AM's implementation isn't concerned with those data structures.  To allow
  * declaring amcostestimate_function here, use forward struct references.
  */
-struct PlannerInfo;
-struct IndexPath;
+typedef struct PlannerInfo PlannerInfo;
+typedef struct IndexPath IndexPath;
 
 /* Likewise, this file shouldn't depend on execnodes.h. */
-struct IndexInfo;
+typedef struct IndexInfo IndexInfo;
 
 
 /*
@@ -110,7 +110,7 @@ typedef StrategyNumber (*amtranslate_cmptype_function) (CompareType cmptype, Oid
 /* build new index */
 typedef IndexBuildResult *(*ambuild_function) (Relation heapRelation,
                                               Relation indexRelation,
-                                              struct IndexInfo *indexInfo);
+                                              IndexInfo *indexInfo);
 
 /* build empty index */
 typedef void (*ambuildempty_function) (Relation indexRelation);
@@ -123,11 +123,11 @@ typedef bool (*aminsert_function) (Relation indexRelation,
                                   Relation heapRelation,
                                   IndexUniqueCheck checkUnique,
                                   bool indexUnchanged,
-                                  struct IndexInfo *indexInfo);
+                                  IndexInfo *indexInfo);
 
 /* cleanup after insert */
 typedef void (*aminsertcleanup_function) (Relation indexRelation,
-                                         struct IndexInfo *indexInfo);
+                                         IndexInfo *indexInfo);
 
 /* bulk delete */
 typedef IndexBulkDeleteResult *(*ambulkdelete_function) (IndexVacuumInfo *info,
@@ -143,8 +143,8 @@ typedef IndexBulkDeleteResult *(*amvacuumcleanup_function) (IndexVacuumInfo *inf
 typedef bool (*amcanreturn_function) (Relation indexRelation, int attno);
 
 /* estimate cost of an indexscan */
-typedef void (*amcostestimate_function) (struct PlannerInfo *root,
-                                        struct IndexPath *path,
+typedef void (*amcostestimate_function) (PlannerInfo *root,
+                                        IndexPath *path,
                                         double loop_count,
                                         Cost *indexStartupCost,
                                         Cost *indexTotalCost,
index d093a0bf1307a6cac0ee2b825f35fb7307c109cb..452c646a088a8ba1c2cc8c3a6160f7abfd0b9145 100644 (file)
@@ -89,14 +89,14 @@ typedef struct BrinDesc
 extern BrinDesc *brin_build_desc(Relation rel);
 extern void brin_free_desc(BrinDesc *bdesc);
 extern IndexBuildResult *brinbuild(Relation heap, Relation index,
-                                  struct IndexInfo *indexInfo);
+                                  IndexInfo *indexInfo);
 extern void brinbuildempty(Relation index);
 extern bool brininsert(Relation idxRel, Datum *values, bool *nulls,
                       ItemPointer heaptid, Relation heapRel,
                       IndexUniqueCheck checkUnique,
                       bool indexUnchanged,
-                      struct IndexInfo *indexInfo);
-extern void brininsertcleanup(Relation index, struct IndexInfo *indexInfo);
+                      IndexInfo *indexInfo);
+extern void brininsertcleanup(Relation index, IndexInfo *indexInfo);
 extern IndexScanDesc brinbeginscan(Relation r, int nkeys, int norderbys);
 extern int64 bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm);
 extern void brinrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,
index 0831c33b03821cb94b2e69d4da8ea5bb906f4040..ac62f6a6abdb77fa8701944c5ecdaf17f9ca794a 100644 (file)
@@ -24,7 +24,9 @@
 #include "utils/snapshot.h"
 
 /* We don't want this file to depend on execnodes.h. */
-struct IndexInfo;
+typedef struct IndexInfo IndexInfo;
+typedef struct TupleTableSlot TupleTableSlot;
+
 
 /*
  * Struct for statistics maintained by amgettuple and amgetbitmap
@@ -165,9 +167,9 @@ extern bool index_insert(Relation indexRelation,
                         Relation heapRelation,
                         IndexUniqueCheck checkUnique,
                         bool indexUnchanged,
-                        struct IndexInfo *indexInfo);
+                        IndexInfo *indexInfo);
 extern void index_insert_cleanup(Relation indexRelation,
-                                struct IndexInfo *indexInfo);
+                                IndexInfo *indexInfo);
 
 extern IndexScanDesc index_beginscan(Relation heapRelation,
                                     Relation indexRelation,
@@ -202,10 +204,9 @@ extern IndexScanDesc index_beginscan_parallel(Relation heaprel,
                                              ParallelIndexScanDesc pscan);
 extern ItemPointer index_getnext_tid(IndexScanDesc scan,
                                     ScanDirection direction);
-struct TupleTableSlot;
-extern bool index_fetch_heap(IndexScanDesc scan, struct TupleTableSlot *slot);
+extern bool index_fetch_heap(IndexScanDesc scan, TupleTableSlot *slot);
 extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction,
-                              struct TupleTableSlot *slot);
+                              TupleTableSlot *slot);
 extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap);
 
 extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,
index a1de400b9a5310ee6037d85ed6808e4278e57b5d..e60d34dad257b13beeff4e95589a33aa904a38ab 100644 (file)
@@ -44,7 +44,8 @@
 #define HEAP_PAGE_PRUNE_FREEZE             (1 << 1)
 
 typedef struct BulkInsertStateData *BulkInsertState;
-struct TupleTableSlot;
+typedef struct GlobalVisState GlobalVisState;
+typedef struct TupleTableSlot TupleTableSlot;
 struct VacuumCutoffs;
 
 #define MaxLockTupleMode   LockTupleExclusive
@@ -292,7 +293,7 @@ extern void heap_rescan(TableScanDesc sscan, ScanKey key, bool set_params,
 extern void heap_endscan(TableScanDesc sscan);
 extern HeapTuple heap_getnext(TableScanDesc sscan, ScanDirection direction);
 extern bool heap_getnextslot(TableScanDesc sscan,
-                            ScanDirection direction, struct TupleTableSlot *slot);
+                            ScanDirection direction, TupleTableSlot *slot);
 extern void heap_set_tidrange(TableScanDesc sscan, ItemPointer mintid,
                              ItemPointer maxtid);
 extern bool heap_getnextslot_tidrange(TableScanDesc sscan,
@@ -312,23 +313,23 @@ extern void ReleaseBulkInsertStatePin(BulkInsertState bistate);
 
 extern void heap_insert(Relation relation, HeapTuple tup, CommandId cid,
                        int options, BulkInsertState bistate);
-extern void heap_multi_insert(Relation relation, struct TupleTableSlot **slots,
+extern void heap_multi_insert(Relation relation, TupleTableSlot **slots,
                              int ntuples, CommandId cid, int options,
                              BulkInsertState bistate);
 extern TM_Result heap_delete(Relation relation, ItemPointer tid,
                             CommandId cid, Snapshot crosscheck, bool wait,
-                            struct TM_FailureData *tmfd, bool changingPart);
+                            TM_FailureData *tmfd, bool changingPart);
 extern void heap_finish_speculative(Relation relation, ItemPointer tid);
 extern void heap_abort_speculative(Relation relation, ItemPointer tid);
 extern TM_Result heap_update(Relation relation, ItemPointer otid,
                             HeapTuple newtup,
                             CommandId cid, Snapshot crosscheck, bool wait,
-                            struct TM_FailureData *tmfd, LockTupleMode *lockmode,
+                            TM_FailureData *tmfd, LockTupleMode *lockmode,
                             TU_UpdateIndexes *update_indexes);
 extern TM_Result heap_lock_tuple(Relation relation, HeapTuple tuple,
                                 CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy,
                                 bool follow_updates,
-                                Buffer *buffer, struct TM_FailureData *tmfd);
+                                Buffer *buffer, TM_FailureData *tmfd);
 
 extern bool heap_inplace_lock(Relation relation,
                              HeapTuple oldtup_ptr, Buffer buffer,
@@ -365,10 +366,9 @@ extern TransactionId heap_index_delete_tuples(Relation rel,
                                              TM_IndexDeleteOp *delstate);
 
 /* in heap/pruneheap.c */
-struct GlobalVisState;
 extern void heap_page_prune_opt(Relation relation, Buffer buffer);
 extern void heap_page_prune_and_freeze(Relation relation, Buffer buffer,
-                                      struct GlobalVisState *vistest,
+                                      GlobalVisState *vistest,
                                       int options,
                                       struct VacuumCutoffs *cutoffs,
                                       PruneFreezeResult *presult,
@@ -407,7 +407,7 @@ extern void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer,
                                 uint16 infomask, TransactionId xid);
 extern bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple);
 extern bool HeapTupleIsSurelyDead(HeapTuple htup,
-                                 struct GlobalVisState *vistest);
+                                 GlobalVisState *vistest);
 
 /*
  * To avoid leaking too much knowledge about reorderbuffer implementation
index 77eb41eb6dc99280dc290dc1b2c99ffa6c061fc5..e16bf0256928430a66a5e84dcbe75662dea0cb03 100644 (file)
@@ -34,10 +34,11 @@ extern PGDLLIMPORT char *default_table_access_method;
 extern PGDLLIMPORT bool synchronize_seqscans;
 
 
-struct BulkInsertStateData;
-struct IndexInfo;
-struct SampleScanState;
-struct ValidateIndexState;
+/* forward references in this file */
+typedef struct BulkInsertStateData BulkInsertStateData;
+typedef struct IndexInfo IndexInfo;
+typedef struct SampleScanState SampleScanState;
+typedef struct ValidateIndexState ValidateIndexState;
 
 /*
  * Bitmask values for the flags argument to the scan_begin callback.
@@ -325,7 +326,7 @@ typedef struct TableAmRoutine
     */
    TableScanDesc (*scan_begin) (Relation rel,
                                 Snapshot snapshot,
-                                int nkeys, struct ScanKeyData *key,
+                                int nkeys, ScanKeyData *key,
                                 ParallelTableScanDesc pscan,
                                 uint32 flags);
 
@@ -339,7 +340,7 @@ typedef struct TableAmRoutine
     * Restart relation scan.  If set_params is set to true, allow_{strat,
     * sync, pagemode} (see scan_begin) changes should be taken into account.
     */
-   void        (*scan_rescan) (TableScanDesc scan, struct ScanKeyData *key,
+   void        (*scan_rescan) (TableScanDesc scan, ScanKeyData *key,
                                bool set_params, bool allow_strat,
                                bool allow_sync, bool allow_pagemode);
 
@@ -508,14 +509,14 @@ typedef struct TableAmRoutine
    /* see table_tuple_insert() for reference about parameters */
    void        (*tuple_insert) (Relation rel, TupleTableSlot *slot,
                                 CommandId cid, int options,
-                                struct BulkInsertStateData *bistate);
+                                BulkInsertStateData *bistate);
 
    /* see table_tuple_insert_speculative() for reference about parameters */
    void        (*tuple_insert_speculative) (Relation rel,
                                             TupleTableSlot *slot,
                                             CommandId cid,
                                             int options,
-                                            struct BulkInsertStateData *bistate,
+                                            BulkInsertStateData *bistate,
                                             uint32 specToken);
 
    /* see table_tuple_complete_speculative() for reference about parameters */
@@ -526,7 +527,7 @@ typedef struct TableAmRoutine
 
    /* see table_multi_insert() for reference about parameters */
    void        (*multi_insert) (Relation rel, TupleTableSlot **slots, int nslots,
-                                CommandId cid, int options, struct BulkInsertStateData *bistate);
+                                CommandId cid, int options, BulkInsertStateData *bistate);
 
    /* see table_tuple_delete() for reference about parameters */
    TM_Result   (*tuple_delete) (Relation rel,
@@ -690,7 +691,7 @@ typedef struct TableAmRoutine
    /* see table_index_build_range_scan for reference about parameters */
    double      (*index_build_range_scan) (Relation table_rel,
                                           Relation index_rel,
-                                          struct IndexInfo *index_info,
+                                          IndexInfo *index_info,
                                           bool allow_sync,
                                           bool anyvisible,
                                           bool progress,
@@ -703,9 +704,9 @@ typedef struct TableAmRoutine
    /* see table_index_validate_scan for reference about parameters */
    void        (*index_validate_scan) (Relation table_rel,
                                        Relation index_rel,
-                                       struct IndexInfo *index_info,
+                                       IndexInfo *index_info,
                                        Snapshot snapshot,
-                                       struct ValidateIndexState *state);
+                                       ValidateIndexState *state);
 
 
    /* ------------------------------------------------------------------------
@@ -821,7 +822,7 @@ typedef struct TableAmRoutine
     * scans. If infeasible to implement, the AM may raise an error.
     */
    bool        (*scan_sample_next_block) (TableScanDesc scan,
-                                          struct SampleScanState *scanstate);
+                                          SampleScanState *scanstate);
 
    /*
     * This callback, only called after scan_sample_next_block has returned
@@ -837,7 +838,7 @@ typedef struct TableAmRoutine
     * assumption somehow.
     */
    bool        (*scan_sample_next_tuple) (TableScanDesc scan,
-                                          struct SampleScanState *scanstate,
+                                          SampleScanState *scanstate,
                                           TupleTableSlot *slot);
 
 } TableAmRoutine;
@@ -873,7 +874,7 @@ extern TupleTableSlot *table_slot_create(Relation relation, List **reglist);
  */
 static inline TableScanDesc
 table_beginscan(Relation rel, Snapshot snapshot,
-               int nkeys, struct ScanKeyData *key)
+               int nkeys, ScanKeyData *key)
 {
    uint32      flags = SO_TYPE_SEQSCAN |
        SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE;
@@ -886,7 +887,7 @@ table_beginscan(Relation rel, Snapshot snapshot,
  * snapshot appropriate for scanning catalog relations.
  */
 extern TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
-                                            struct ScanKeyData *key);
+                                            ScanKeyData *key);
 
 /*
  * Like table_beginscan(), but table_beginscan_strat() offers an extended API
@@ -897,7 +898,7 @@ extern TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
  */
 static inline TableScanDesc
 table_beginscan_strat(Relation rel, Snapshot snapshot,
-                     int nkeys, struct ScanKeyData *key,
+                     int nkeys, ScanKeyData *key,
                      bool allow_strat, bool allow_sync)
 {
    uint32      flags = SO_TYPE_SEQSCAN | SO_ALLOW_PAGEMODE;
@@ -918,7 +919,7 @@ table_beginscan_strat(Relation rel, Snapshot snapshot,
  */
 static inline TableScanDesc
 table_beginscan_bm(Relation rel, Snapshot snapshot,
-                  int nkeys, struct ScanKeyData *key)
+                  int nkeys, ScanKeyData *key)
 {
    uint32      flags = SO_TYPE_BITMAPSCAN | SO_ALLOW_PAGEMODE;
 
@@ -935,7 +936,7 @@ table_beginscan_bm(Relation rel, Snapshot snapshot,
  */
 static inline TableScanDesc
 table_beginscan_sampling(Relation rel, Snapshot snapshot,
-                        int nkeys, struct ScanKeyData *key,
+                        int nkeys, ScanKeyData *key,
                         bool allow_strat, bool allow_sync,
                         bool allow_pagemode)
 {
@@ -990,8 +991,7 @@ table_endscan(TableScanDesc scan)
  * Restart a relation scan.
  */
 static inline void
-table_rescan(TableScanDesc scan,
-            struct ScanKeyData *key)
+table_rescan(TableScanDesc scan, ScanKeyData *key)
 {
    scan->rs_rd->rd_tableam->scan_rescan(scan, key, false, false, false, false);
 }
@@ -1005,7 +1005,7 @@ table_rescan(TableScanDesc scan,
  * previously selected startblock will be kept.
  */
 static inline void
-table_rescan_set_params(TableScanDesc scan, struct ScanKeyData *key,
+table_rescan_set_params(TableScanDesc scan, ScanKeyData *key,
                        bool allow_strat, bool allow_sync, bool allow_pagemode)
 {
    scan->rs_rd->rd_tableam->scan_rescan(scan, key, true,
@@ -1365,7 +1365,7 @@ table_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate)
  */
 static inline void
 table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid,
-                  int options, struct BulkInsertStateData *bistate)
+                  int options, BulkInsertStateData *bistate)
 {
    rel->rd_tableam->tuple_insert(rel, slot, cid, options,
                                  bistate);
@@ -1385,7 +1385,7 @@ table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid,
 static inline void
 table_tuple_insert_speculative(Relation rel, TupleTableSlot *slot,
                               CommandId cid, int options,
-                              struct BulkInsertStateData *bistate,
+                              BulkInsertStateData *bistate,
                               uint32 specToken)
 {
    rel->rd_tableam->tuple_insert_speculative(rel, slot, cid, options,
@@ -1420,7 +1420,7 @@ table_tuple_complete_speculative(Relation rel, TupleTableSlot *slot,
  */
 static inline void
 table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots,
-                  CommandId cid, int options, struct BulkInsertStateData *bistate)
+                  CommandId cid, int options, BulkInsertStateData *bistate)
 {
    rel->rd_tableam->multi_insert(rel, slots, nslots,
                                  cid, options, bistate);
@@ -1743,7 +1743,7 @@ table_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin,
 static inline double
 table_index_build_scan(Relation table_rel,
                       Relation index_rel,
-                      struct IndexInfo *index_info,
+                      IndexInfo *index_info,
                       bool allow_sync,
                       bool progress,
                       IndexBuildCallback callback,
@@ -1776,7 +1776,7 @@ table_index_build_scan(Relation table_rel,
 static inline double
 table_index_build_range_scan(Relation table_rel,
                             Relation index_rel,
-                            struct IndexInfo *index_info,
+                            IndexInfo *index_info,
                             bool allow_sync,
                             bool anyvisible,
                             bool progress,
@@ -1807,9 +1807,9 @@ table_index_build_range_scan(Relation table_rel,
 static inline void
 table_index_validate_scan(Relation table_rel,
                          Relation index_rel,
-                         struct IndexInfo *index_info,
+                         IndexInfo *index_info,
                          Snapshot snapshot,
-                         struct ValidateIndexState *state)
+                         ValidateIndexState *state)
 {
    table_rel->rd_tableam->index_validate_scan(table_rel,
                                               index_rel,
@@ -1963,7 +1963,7 @@ table_scan_bitmap_next_tuple(TableScanDesc scan,
  */
 static inline bool
 table_scan_sample_next_block(TableScanDesc scan,
-                            struct SampleScanState *scanstate)
+                            SampleScanState *scanstate)
 {
    /*
     * We don't expect direct calls to table_scan_sample_next_block with valid
@@ -1985,7 +1985,7 @@ table_scan_sample_next_block(TableScanDesc scan,
  */
 static inline bool
 table_scan_sample_next_tuple(TableScanDesc scan,
-                            struct SampleScanState *scanstate,
+                            SampleScanState *scanstate,
                             TupleTableSlot *slot)
 {
    /*
index 3a920cc7d17a4e101176287197fc5aa37a078988..a36653c37f9e91d6160195a09053df0482a92118 100644 (file)
@@ -1656,14 +1656,14 @@ typedef struct SampleScanState
  */
 typedef struct
 {
-   struct ScanKeyData *scan_key;   /* scankey to put value into */
+   ScanKeyData *scan_key;      /* scankey to put value into */
    ExprState  *key_expr;       /* expr to evaluate to get value */
    bool        key_toastable;  /* is expr's result a toastable datatype? */
 } IndexRuntimeKeyInfo;
 
 typedef struct
 {
-   struct ScanKeyData *scan_key;   /* scankey to put value into */
+   ScanKeyData *scan_key;      /* scankey to put value into */
    ExprState  *array_expr;     /* expr to evaluate to get array value */
    int         next_elem;      /* next array element to use */
    int         num_elems;      /* number of elems in current array value */
@@ -1704,9 +1704,9 @@ typedef struct IndexScanState
    ScanState   ss;             /* its first field is NodeTag */
    ExprState  *indexqualorig;
    List       *indexorderbyorig;
-   struct ScanKeyData *iss_ScanKeys;
+   ScanKeyData *iss_ScanKeys;
    int         iss_NumScanKeys;
-   struct ScanKeyData *iss_OrderByKeys;
+   ScanKeyData *iss_OrderByKeys;
    int         iss_NumOrderByKeys;
    IndexRuntimeKeyInfo *iss_RuntimeKeys;
    int         iss_NumRuntimeKeys;
@@ -1755,9 +1755,9 @@ typedef struct IndexOnlyScanState
 {
    ScanState   ss;             /* its first field is NodeTag */
    ExprState  *recheckqual;
-   struct ScanKeyData *ioss_ScanKeys;
+   ScanKeyData *ioss_ScanKeys;
    int         ioss_NumScanKeys;
-   struct ScanKeyData *ioss_OrderByKeys;
+   ScanKeyData *ioss_OrderByKeys;
    int         ioss_NumOrderByKeys;
    IndexRuntimeKeyInfo *ioss_RuntimeKeys;
    int         ioss_NumRuntimeKeys;
@@ -1796,7 +1796,7 @@ typedef struct BitmapIndexScanState
 {
    ScanState   ss;             /* its first field is NodeTag */
    TIDBitmap  *biss_result;
-   struct ScanKeyData *biss_ScanKeys;
+   ScanKeyData *biss_ScanKeys;
    int         biss_NumScanKeys;
    IndexRuntimeKeyInfo *biss_RuntimeKeys;
    int         biss_NumRuntimeKeys;