diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index 2fb7c17..c0b89ec 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -272,12 +272,20 @@ ReplicationSlotCreate(const char *name, bool db_specific, */ Assert(!slot->in_use); Assert(slot->active_pid == 0); + memset(&slot->data, 0, sizeof(ReplicationSlotPersistentData)); slot->data.persistency = persistency; slot->data.xmin = InvalidTransactionId; + slot->data.catalog_xmin = InvalidTransactionId; slot->effective_xmin = InvalidTransactionId; + slot->effective_catalog_xmin = InvalidTransactionId; + slot->candidate_catalog_xmin = InvalidTransactionId; + slot->candidate_xmin_lsn = InvalidXLogRecPtr; + slot->candidate_restart_lsn = InvalidXLogRecPtr; + slot->candidate_restart_valid = InvalidXLogRecPtr; StrNCpy(NameStr(slot->data.name), name, NAMEDATALEN); slot->data.database = db_specific ? MyDatabaseId : InvalidOid; slot->data.restart_lsn = InvalidXLogRecPtr; + slot->data.confirmed_flush = InvalidXLogRecPtr; /* * Create the slot on disk. We haven't actually marked the slot allocated