Thread

  1. [PATCH v1 02/12] prune_xid-hist: create data structures

    Renan Alves Fonseca <renanfonseca@gmail.com> — 2025-05-20T11:35:39Z

    ---
     src/backend/access/heap/vacuumlazy.c |  1 +
     src/include/pgstat.h                 | 21 ++++++++++++++++++++-
     src/tools/pgindent/typedefs.list     |  2 ++
     3 files changed, 23 insertions(+), 1 deletion(-)
    
    diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
    index f28326bad09..8565f6dd215 100644
    --- a/src/backend/access/heap/vacuumlazy.c
    +++ b/src/backend/access/heap/vacuumlazy.c
    @@ -355,6 +355,7 @@ typedef struct LVRelState
     	int64		live_tuples;	/* # live tuples remaining */
     	int64		recently_dead_tuples;	/* # dead, but not yet removable */
     	int64		missed_dead_tuples; /* # removable, but not removed */
    +	PruneXidHistogramTransient prune_xid_hist;
     
     	/* State maintained by heap_vac_scan_next_block() */
     	BlockNumber current_block;	/* last block returned */
    diff --git a/src/include/pgstat.h b/src/include/pgstat.h
    index 378f2f2c2ba..d48f4742beb 100644
    --- a/src/include/pgstat.h
    +++ b/src/include/pgstat.h
    @@ -111,6 +111,21 @@ typedef struct PgStat_BackendSubEntry
     	PgStat_Counter conflict_count[CONFLICT_NUM_TYPES];
     } PgStat_BackendSubEntry;
     
    +#define PRUNE_XID_HIST_NBINS 5
    +
    +typedef struct PruneXidHistogram
    +{
    +	PgStat_Counter freqs[PRUNE_XID_HIST_NBINS];
    +	TransactionId bounds[PRUNE_XID_HIST_NBINS];
    +} PruneXidHistogram;
    +
    +typedef struct PruneXidHistogramTransient
    +{
    +	PgStat_Counter freqs[PRUNE_XID_HIST_NBINS];
    +	PgStat_Counter neg_freq;
    +	TransactionId bounds[PRUNE_XID_HIST_NBINS];
    +} PruneXidHistogramTransient;
    +
     /* ----------
      * PgStat_TableCounts			The actual per-table counts kept by a backend
      *
    @@ -153,6 +168,8 @@ typedef struct PgStat_TableCounts
     
     	PgStat_Counter blocks_fetched;
     	PgStat_Counter blocks_hit;
    +
    +	PruneXidHistogramTransient prune_xid_hist;
     } PgStat_TableCounts;
     
     /* ----------
    @@ -211,7 +228,7 @@ typedef struct PgStat_TableXactStatus
      * ------------------------------------------------------------
      */
     
    -#define PGSTAT_FILE_FORMAT_ID	0x01A5BCB7
    +#define PGSTAT_FILE_FORMAT_ID	0x01A5BCB8
     
     typedef struct PgStat_ArchiverStats
     {
    @@ -437,6 +454,8 @@ typedef struct PgStat_StatTabEntry
     	PgStat_Counter mod_since_analyze;
     	PgStat_Counter ins_since_vacuum;
     
    +	PruneXidHistogram prune_xid_hist;
    +
     	PgStat_Counter blocks_fetched;
     	PgStat_Counter blocks_hit;
     
    diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list
    index e5879e00dff..02406a0776e 100644
    --- a/src/tools/pgindent/typedefs.list
    +++ b/src/tools/pgindent/typedefs.list
    @@ -2334,6 +2334,8 @@ PruneFreezeResult
     PruneReason
     PruneState
     PruneStepResult
    +PruneXidHistogram
    +PruneXidHistogramTransient
     PsqlScanCallbacks
     PsqlScanQuoteType
     PsqlScanResult
    -- 
    2.47.0
    
    
    --=-=-=
    Content-Type: text/x-patch
    Content-Disposition: attachment;
     filename=v1-0003-prune_xid-hist-pgstat-prune_xid-histogram-interfa.patch