On 2020-Jun-17, Kyotaro Horiguchi wrote:

> @@ -342,7 +351,14 @@ pg_get_replication_slots(PG_FUNCTION_ARGS)
>               else
>                       nulls[i++] = true;
>  
> -             walstate = GetWALAvailability(slot_contents.data.restart_lsn);
> +             /* use last_invalidated_lsn when the slot is invalidated */
> +             if (XLogRecPtrIsInvalid(slot_contents.data.restart_lsn))
> +                     targetLSN = slot_contents.last_invalidated_lsn;
> +             else
> +                     targetLSN = slot_contents.data.restart_lsn;
> +
> +             walstate = GetWALAvailability(targetLSN, last_removed_seg,
> +                                                                       
> slot_contents.active_pid != 0);

Yeah, this approach seems better overall.  I'll see if I can get this
done after lunch.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to