Hi,
On 2026-03-13 16:01:40 +0100, Antonin Houska wrote:
> Andres Freund <andres@anarazel.de> wrote:
>
> > Probably need to update the comments a bit. What about something like
> >
> >
> > /*
> > * Is the snapshot implemented as an MVCC snapshot (i.e. it uses
> > * SNAPSHOT_MVCC). If so, there will be at most be one visible row in a chain
> > * of updated tuples, and each visible tuple will be seen exactly once.
> > */
> > #define IsMVCCSnapshot(snapshot) \
>
> The ", and each visible tuple ..." part seemed to me redundant, so I omitted
> it. If you think I'm wrong, please add it yourself when committing the patch.
It's relevant in that many non-mvcc scan types do *not* guarantee that (i.e. a
tuple may never be seen, e.g. because the new version of the tuple is placed
before the current scan position of a scan and the old version of the tuple is
not considered visible anymore).
> I also added a comment to the IsHistoricMVCCSnapshot(), trying to explain what
> "historic" means.
Good idea.
Pushed with slightly revised comments and a different commit message (I
thought it was important to explain that this fixes breakage during logical
decoding, even if currently hard to reach).
Thanks for the report and patch!
- Andres