On 2016-08-10 19:28, Alvaro Herrera wrote:
Umm.  AFAICS HeapTupleSatisfiesUpdate() only returns SelfUpdated after
already calling HeapTupleHeaderGetCmax() (which obviously hasn't caught
the same assertion).  Something is odd there ...

HeapTupleSatisfiesUpdate() returns HeapTupleBeingUpdated in this case. HeapTupleSelfUpdated comes from here (line 4749):

    /* if there are updates, follow the update chain */
    if (follow_updates && !HEAP_XMAX_IS_LOCKED_ONLY(infomask))
        HTSU_Result res;
        res = heap_lock_updated_tuple(relation, tuple, &t_ctid,
        if (res != HeapTupleMayBeUpdated)
            result = res;
            /* recovery code expects to have buffer lock held */
            LockBuffer(*buffer, BUFFER_LOCK_EXCLUSIVE);
            goto failed;

Can you share the test case?

Not at this time, sorry.


Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to