On 2020-Apr-30, Kyotaro Horiguchi wrote:
> At Tue, 28 Apr 2020 20:47:10 -0400, Alvaro Herrera <alvherre@2ndquadrant.com> wrote in
> > /*
> > * After the sanity checks in CreateDecodingContext, make sure the
> > * restart_lsn is valid. Avoid "cannot get changes" wording in this
> > * errmsg because that'd be confusingly ambiguous about no changes
> > * being available.
> > */
> > if (XLogRecPtrIsInvalid(MyReplicationSlot->data.restart_lsn))
> > ereport(ERROR,
> > (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
> > errmsg("can no longer get changes from replication slot \"%s\"",
> > NameStr(*name)),
> > errdetail("This slot has never previously reserved WAL, or has been invalidated.")));
> >
> > I hope this is sufficiently clear, but if not, feel free to nudge me and
> > we can discuss it further.
>
> That somewhat sounds odd that 'we "no longer" get changes from "never
> previously reserved" slots'. More than that, I think we don't reach
> there for physical slots, since CreateDecodingContext doesn't accept a
> physical slot and ERRORs out. (That is the reason for the location of
> the checking.)
Oh, right, so we could reword the errdetail to just "This slot has been
invalidated."
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services