elog(ERROR, "cannot initialize logical decoding without a specified plugin");
/* Make sure the passed slot is suitable. These are user facing errors. */
- if (slot->data.database == InvalidOid)
+ if (SlotIsPhysical(slot))
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot use physical replication slot for logical decoding")));
elog(ERROR, "cannot perform logical decoding without an acquired slot");
/* make sure the passed slot is suitable, these are user facing errors */
- if (slot->data.database == InvalidOid)
+ if (SlotIsPhysical(slot))
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
(errmsg("cannot use physical replication slot for logical decoding"))));
continue;
/* we're only interested in logical slots */
- if (s->data.database == InvalidOid)
+ if (!SlotIsLogical(s))
continue;
/* read once, it's ok if it increases while we're checking */
if (!s->in_use)
continue;
- /* not database specific, skip */
- if (s->data.database == InvalidOid)
+ /* only logical slots are database specific, skip */
+ if (!SlotIsLogical(s))
continue;
/* not our database, skip */
if (cmd->slotname)
{
ReplicationSlotAcquire(cmd->slotname);
- if (MyReplicationSlot->data.database != InvalidOid)
+ if (SlotIsLogical(MyReplicationSlot))
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
(errmsg("cannot use a logical replication slot for physical replication"))));
*/
if (MyReplicationSlot && flushPtr != InvalidXLogRecPtr)
{
- if (MyReplicationSlot->data.database != InvalidOid)
+ if (SlotIsLogical(MyReplicationSlot))
LogicalConfirmReceivedLocation(flushPtr);
else
PhysicalConfirmReceivedLocation(flushPtr);
XLogRecPtr candidate_restart_lsn;
} ReplicationSlot;
+#define SlotIsPhysical(slot) (slot->data.database == InvalidOid)
+#define SlotIsLogical(slot) (slot->data.database != InvalidOid)
+
/*
* Shared memory control area for all of replication slots.
*/