While re-reading heap_update() in connection with that PANIC we're
chasing, my attention was drawn to this comment:

    /*
     * Note: beyond this point, use oldtup not otid to refer to old tuple.
     * otid may very well point at newtup->t_self, which we will overwrite
     * with the new tuple's location, so there's great risk of confusion if we
     * use otid anymore.
     */

This seemingly sage advice is being ignored in one place:

        CheckForSerializableConflictIn(relation, otid, 
BufferGetBlockNumber(buffer));

I wonder whether that's a mistake.  There'd be only a low probability
of our detecting it through testing, I fear.

                        regards, tom lane


Reply via email to