v2-0001-Use-macro-to-define-the-number-of-enum-values.patch
application/octet-stream
Filename: v2-0001-Use-macro-to-define-the-number-of-enum-values.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v2-0001
Subject: Use macro to define the number of enum values
| File | + | − |
|---|---|---|
| contrib/pg_stat_statements/pg_stat_statements.c | 2 | 2 |
| src/backend/postmaster/autovacuum.c | 2 | 1 |
| src/bin/pg_dump/pg_backup.h | 2 | 1 |
| src/include/storage/pmsignal.h | 2 | 2 |
| src/include/storage/procsignal.h | 2 | 2 |
From 68373f77c42cc9cae6e7872abaa131fc6697cb91 Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <aleksander@timescale.com>
Date: Fri, 19 Apr 2024 12:33:52 +0300
Subject: [PATCH v2] 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
---
contrib/pg_stat_statements/pg_stat_statements.c | 4 ++--
src/backend/postmaster/autovacuum.c | 3 ++-
src/bin/pg_dump/pg_backup.h | 3 ++-
src/include/storage/pmsignal.h | 4 ++--
src/include/storage/procsignal.h | 4 ++--
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 67cec865ba..0a3f569abf 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 9a925a10cd..a9eb4967aa 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -246,9 +246,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 fbf5f1c515..1f43891a7d 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 029b720109..88726ea4ae 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 7d290ea7d0..c2b025b956 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 */
--
2.45.0