PS_topup_for_v740001.txt

text/plain

Filename: PS_topup_for_v740001.txt
Type: text/plain
Part: 0
Message: Re: Introduce XID age and inactive timeout based replication slot invalidation
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.
  */