I wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> Specifically, I'm wondering if we couldn't get away with rearranging
>> things so that the root line pointer (which has index entries) points
>> to the actual tuple, and the other line pointer (which can't have any
>> index entries) gets marked UNUSED.
> This would amount to changing the TID of the live row.
Another issue, quite independent from race conditions against other
observers of the row, is what if the tuple is part of an update chain?
You have no way to find the predecessor row version and update its
t_ctid forward link.
regards, tom lane