On Mon, Nov 21, 2022 at 1:34 PM Andres Freund <and...@anarazel.de> wrote: > Hm. But to get to that point we already need to have decided that xmax > is not a normal xid. Unhelpfully we reuse the 'xid' variable for xmax as > well: > xid = HeapTupleHeaderGetRawXmax(tuple); > > I don't really know the HEAP_XMAX_INVALID branch is trying to do. For > one, xid already is set to HeapTupleHeaderGetRawXmax(), why is it > refetching the value?
Right, that detail is correct, but still weird. And suggests that it might not have been super well thought through. > So it looks to me like this path should just test !TransactionIdIsValid(xid)? Agreed. Plus there should be a comment that reminds you that this is a normal regular transaction ID (easy to miss, because the initial "if" block for Multis is rather large). I will push something like that soon. -- Peter Geoghegan