diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index eccada9..2452eac 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -99,9 +99,16 @@ typedef struct char slot_names[FLEXIBLE_ARRAY_MEMBER]; } SyncStandbySlotsConfigData; + /* * Lookup table for slot invalidation causes. */ +typedef struct SlotInvalidationCauseMap +{ + ReplicationSlotInvalidationCause cause; + const char *cause_name; +} SlotInvalidationCauseMap; + const SlotInvalidationCauseMap InvalidationCauses[] = { {RS_INVAL_NONE, "none"}, {RS_INVAL_WAL_REMOVED, "wal_removed"}, @@ -110,8 +117,8 @@ const SlotInvalidationCauseMap InvalidationCauses[] = { {RS_INVAL_IDLE_TIMEOUT, "idle_timeout"}, }; -/* Maximum number of invalidation causes */ -#define RS_INVAL_MAX_CAUSES (lengthof(InvalidationCauses)-1) +StaticAssertDecl(lengthof(InvalidationCauses) == (RS_INVAL_MAX_CAUSES + 1), + "array length mismatch"); /* size of version independent data */ #define ReplicationSlotOnDiskConstantSize \ diff --git a/src/include/replication/slot.h b/src/include/replication/slot.h index 161784b..56ba48e 100644 --- a/src/include/replication/slot.h +++ b/src/include/replication/slot.h @@ -61,14 +61,8 @@ typedef enum ReplicationSlotInvalidationCause RS_INVAL_IDLE_TIMEOUT = (1 << 3), } ReplicationSlotInvalidationCause; -typedef struct SlotInvalidationCauseMap -{ - int cause; - const char *cause_name; -} SlotInvalidationCauseMap; - -extern PGDLLIMPORT const SlotInvalidationCauseMap InvalidationCauses[]; - +/* Maximum number of invalidation causes */ +#define RS_INVAL_MAX_CAUSES 4 /* * On-Disk data of a replication slot, preserved across restarts. */