aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2024-10-01 09:30:24 -0400
committerPeter Eisentraut <peter@eisentraut.org>2024-10-01 09:30:24 -0400
commit10b721821d6d6e27e594549cf105476dc28514c8 (patch)
tree52d7fba71044f7c2edcb41fe222777f6500c189d
parentfc1b2ce0ee9c9745c5c562b692e021344a3f719a (diff)
downloadpostgresql-10b721821d6d6e27e594549cf105476dc28514c8.tar.gz
postgresql-10b721821d6d6e27e594549cf105476dc28514c8.zip
Use macro to define the number of enum values
Refactoring in the interest of code consistency, a follow-up to 2e068db56e31. The argument against inserting a special enum value at the end of the enum definition is that a switch statement might generate a compiler warning unless it has a default clause. Aleksander Alekseev, reviewed by Michael Paquier, Dean Rasheed, Peter Eisentraut Discussion: https://postgr.es/m/CAJ7c6TMsiaV5urU_Pq6zJ2tXPDwk69-NKVh4AMN5XrRiM7N%2BGA%40mail.gmail.com
-rw-r--r--contrib/pg_stat_statements/pg_stat_statements.c4
-rw-r--r--src/backend/postmaster/autovacuum.c3
-rw-r--r--src/bin/pg_dump/pg_backup.h3
-rw-r--r--src/include/storage/pmsignal.h4
-rw-r--r--src/include/storage/procsignal.h4
5 files changed, 10 insertions, 8 deletions
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c
index 3c72e437f73..5765ef49b4c 100644
--- a/contrib/pg_stat_statements/pg_stat_statements.c
+++ b/contrib/pg_stat_statements/pg_stat_statements.c
@@ -126,10 +126,10 @@ typedef enum pgssStoreKind
*/
PGSS_PLAN = 0,
PGSS_EXEC,
-
- PGSS_NUMKIND /* Must be last value of this enum */
} pgssStoreKind;
+#define PGSS_NUMKIND (PGSS_EXEC + 1)
+
/*
* Hashtable key that defines the identity of a hashtable entry. We separate
* queries by user and by database even if they are otherwise identical.
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 7d0877c95ec..dc3cf87abab 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -247,9 +247,10 @@ typedef enum
{
AutoVacForkFailed, /* failed trying to start a worker */
AutoVacRebalance, /* rebalance the cost limits */
- AutoVacNumSignals, /* must be last */
} AutoVacuumSignal;
+#define AutoVacNumSignals (AutoVacRebalance + 1)
+
/*
* Autovacuum workitem array, stored in AutoVacuumShmem->av_workItems. This
* list is mostly protected by AutovacuumLock, except that if an item is
diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h
index fbf5f1c515e..68ae2970ade 100644
--- a/src/bin/pg_dump/pg_backup.h
+++ b/src/bin/pg_dump/pg_backup.h
@@ -74,9 +74,10 @@ enum _dumpPreparedQueries
PREPQUERY_DUMPTABLEATTACH,
PREPQUERY_GETCOLUMNACLS,
PREPQUERY_GETDOMAINCONSTRAINTS,
- NUM_PREP_QUERIES /* must be last */
};
+#define NUM_PREP_QUERIES (PREPQUERY_GETDOMAINCONSTRAINTS + 1)
+
/* Parameters needed by ConnectDatabase; same for dump and restore */
typedef struct _connParams
{
diff --git a/src/include/storage/pmsignal.h b/src/include/storage/pmsignal.h
index 87ac91848bc..e5be0f121c2 100644
--- a/src/include/storage/pmsignal.h
+++ b/src/include/storage/pmsignal.h
@@ -40,10 +40,10 @@ typedef enum
PMSIGNAL_BACKGROUND_WORKER_CHANGE, /* background worker state change */
PMSIGNAL_START_WALRECEIVER, /* start a walreceiver */
PMSIGNAL_ADVANCE_STATE_MACHINE, /* advance postmaster's state machine */
-
- NUM_PMSIGNALS /* Must be last value of enum! */
} PMSignalReason;
+#define NUM_PMSIGNALS (PMSIGNAL_ADVANCE_STATE_MACHINE+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 f94c11a9a84..221073def38 100644
--- a/src/include/storage/procsignal.h
+++ b/src/include/storage/procsignal.h
@@ -47,10 +47,10 @@ typedef enum
PROCSIG_RECOVERY_CONFLICT_BUFFERPIN,
PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
PROCSIG_RECOVERY_CONFLICT_LAST = PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
-
- NUM_PROCSIGNALS /* Must be last! */
} ProcSignalReason;
+#define NUM_PROCSIGNALS (PROCSIG_RECOVERY_CONFLICT_LAST + 1)
+
typedef enum
{
PROCSIGNAL_BARRIER_SMGRRELEASE, /* ask smgr to close files */