Hi, On 2026-03-13 16:01:40 +0100, Antonin Houska wrote: > Andres Freund <[email protected]> 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
