From a8621383ed770963d4a6c461753f8c4d0533a193 Mon Sep 17 00:00:00 2001 From: roman khapov Date: Tue, 18 Nov 2025 18:15:24 +0500 Subject: [PATCH] use _LAST in enums to define NUM macross Inspired by 10b7218. Add *_LAST enums that mark the last valid value, to be used in *_NUM macros calculating enum size. This helps avoid mistakes in NUM maceoss when adding new values in enums. Note: this will not lead to additional compiler warnings because _LAST is always equals to some other value of enum. Signed-off-by: roman khapov --- contrib/pg_stat_statements/pg_stat_statements.c | 4 +++- src/backend/postmaster/autovacuum.c | 4 +++- src/bin/pg_dump/pg_backup.h | 4 +++- src/include/miscadmin.h | 4 +++- src/include/storage/pmsignal.h | 4 +++- src/include/storage/procsignal.h | 1 + 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index 39208f80b5b..2cc6e51b964 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -129,9 +129,11 @@ typedef enum pgssStoreKind */ PGSS_PLAN = 0, PGSS_EXEC, + + PGSS_LAST = PGSS_EXEC, } pgssStoreKind; -#define PGSS_NUMKIND (PGSS_EXEC + 1) +#define PGSS_NUMKIND (PGSS_LAST + 1) /* * Hashtable key that defines the identity of a hashtable entry. We separate diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 1c38488f2cb..47f7ea68367 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -250,9 +250,11 @@ typedef enum { AutoVacForkFailed, /* failed trying to start a worker */ AutoVacRebalance, /* rebalance the cost limits */ + + AutoVacLast = AutoVacRebalance, } AutoVacuumSignal; -#define AutoVacNumSignals (AutoVacRebalance + 1) +#define AutoVacNumSignals (AutoVacLast + 1) /* * Autovacuum workitem array, stored in AutoVacuumShmem->av_workItems. This diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h index d9041dad720..299960b8fb8 100644 --- a/src/bin/pg_dump/pg_backup.h +++ b/src/bin/pg_dump/pg_backup.h @@ -75,9 +75,11 @@ enum _dumpPreparedQueries PREPQUERY_GETATTRIBUTESTATS, PREPQUERY_GETCOLUMNACLS, PREPQUERY_GETDOMAINCONSTRAINTS, + + PREPQUERY_LAST = PREPQUERY_GETDOMAINCONSTRAINTS, }; -#define NUM_PREP_QUERIES (PREPQUERY_GETDOMAINCONSTRAINTS + 1) +#define NUM_PREP_QUERIES (PREPQUERY_LAST + 1) /* Parameters needed by ConnectDatabase; same for dump and restore */ typedef struct _connParams diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 9a7d733ddef..cbcfda4e791 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -372,9 +372,11 @@ typedef enum BackendType * entry. */ B_LOGGER, + + B_LAST = B_LOGGER, } BackendType; -#define BACKEND_NUM_TYPES (B_LOGGER + 1) +#define BACKEND_NUM_TYPES (B_LAST + 1) extern PGDLLIMPORT BackendType MyBackendType; diff --git a/src/include/storage/pmsignal.h b/src/include/storage/pmsignal.h index 428aa3fd68a..0b0fca85fdf 100644 --- a/src/include/storage/pmsignal.h +++ b/src/include/storage/pmsignal.h @@ -42,9 +42,11 @@ typedef enum PMSIGNAL_START_WALRECEIVER, /* start a walreceiver */ PMSIGNAL_ADVANCE_STATE_MACHINE, /* advance postmaster's state machine */ PMSIGNAL_XLOG_IS_SHUTDOWN, /* ShutdownXLOG() completed */ + + PGSIGNAL_XLOG_LAST = PMSIGNAL_XLOG_IS_SHUTDOWN, } PMSignalReason; -#define NUM_PMSIGNALS (PMSIGNAL_XLOG_IS_SHUTDOWN+1) +#define NUM_PMSIGNALS (PGSIGNAL_XLOG_LAST+1) /* * Reasons why the postmaster would send SIGQUIT to its children. diff --git a/src/include/storage/procsignal.h b/src/include/storage/procsignal.h index afeeb1ca019..d0f925b986b 100644 --- a/src/include/storage/procsignal.h +++ b/src/include/storage/procsignal.h @@ -46,6 +46,7 @@ typedef enum PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT, PROCSIG_RECOVERY_CONFLICT_BUFFERPIN, PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, + PROCSIG_RECOVERY_CONFLICT_LAST = PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, } ProcSignalReason; -- 2.50.1 (Apple Git-155)