Peter Eisentraut <peter.eisentr...@2ndquadrant.com> wrote: > On 2020-02-25 08:30, Antonin Houska wrote: > > I'm trying to figure out what's specific about RS_EPHEMERAL and RS_TEMPORARY > > slot kinds. The following comment (see definition of the > > ReplicationSlotPersistency enumeration) tells when each kind is dropped > > The general idea is that an "ephemeral" slot is a future persistent slot that > is not completely initialized yet. If there is a crash and you find an > ephemeral slot, you can clean it up. The name is perhaps a bit odd, you can > think of it as an uninitialized one. A temporary slot is one that behaves > like a temporary table: It is removed at the end of a session. > > Perhaps the implementation differences are not big or are none, but it's > relevant for reporting. For example, the pg_replication_slots view shows > which slots are temporary. You wouldn't want to show an ephemeral slot as > temporary.
ok, so only comments seem to be the problem. Anyway, the reason I started to think about it was that I noticed an Assert() statement I considered inaccurate. Does this patch make sense? -- Antonin Houska Web: https://www.cybertec-postgresql.com
@@ -682,7 +682,7 @@ ReplicationSlotPersist(void) ReplicationSlot *slot = MyReplicationSlot; Assert(slot != NULL); - Assert(slot->data.persistency != RS_PERSISTENT); + Assert(slot->data.persistency == RS_EPHEMERAL); SpinLockAcquire(&slot->mutex); slot->data.persistency = RS_PERSISTENT;