such that this slot
is not in danger of getting in state "lost". It is NULL for lost
slots, as well as if <varname>max_slot_wal_keep_size</varname>
is <literal>-1</literal>.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>two_phase</structfield> <type>bool</type>
</para>
<para>
True if the slot is enabled for decoding prepared transactions. Always
false for physical slots.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>two_phase_at</structfield> <type>pg_lsn</type>
</para>
<para>
The address (<literal>LSN</literal>) from which the decoding of prepared
transactions is enabled. <literal>NULL</literal> for logical slots
where <structfield>two_phase</structfield> is false and for physical slots.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>inactive_since</structfield> <type>timestamptz</type>
</para>
<para>
The time when the slot became inactive. <literal>NULL</literal> if the
slot is currently being streamed. If the slot becomes invalid,
this value will never be updated.
For standby slots that are being synced from a
primary server (whose <structfield>synced</structfield> field is
<literal>true</literal>), the <structfield>inactive_since</structfield>
indicates the time when slot synchronization (see <xref
linkend="logicaldecoding-replication-slots-synchronization"/>)
was most recently stopped. <literal>NULL</literal> if the slot
has always been synchronized. This helps standby slots track when
synchronization was interrupted.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>conflicting</structfield> <type>bool</type>
</para>
<para>
True if this logical slot conflicted with recovery (and so is now
invalidated). When this column is true, check
<structfield>invalidation_reason</structfield> column for the conflict
reason. Always <literal>NULL</literal> for physical slots.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>invalidation_reason</structfield> <type>text</type>
</para>
<para>
The reason for the slot's invalidation. It is set for both logical and
physical slots. <literal>NULL</literal> if the slot is not invalidated.
Possible values are:
<itemizedlist spacing="compact">
<listitem>
<para>
<literal>wal_removed</literal> means that the required WAL has been
removed.
</para>
</listitem>
<listitem>
<para>
<literal>rows_removed</literal> means that the required rows have
been removed. It is set only for logical slots.
</para>
</listitem>
<listitem>
<para>
<literal>wal_level_insufficient</literal> means that the
primary doesn't have a <xref linkend="guc-wal-level"/> sufficient to
perform logical decoding. It is set only for logical slots.
</para>
</listitem>
<listitem>
<para>
<literal>idle_timeout</literal> means that the slot has remained
idle longer than the configured
<xref linkend="guc-idle-replication-slot-timeout"/> duration.
</para>
</listitem>
</itemizedlist>
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>failover</structfield> <type>bool</type>
</para>
<para>
True if this