Alvaro Herrera <alvherre@commandprompt.com> writes:
> However I'm guessing that what actually happens is that heap_update is
> returning HeapTupleSelfUpdated instead, which the code states as
> /* nothing to do */.
Yeah.
> I imagine this is so because of some old fiddling to get semantics just
> right for obscure corner cases, but it feels wrong nevertheless.
I suspect it was reluctance to use the EvalPlanQual semantics (which
are pretty bogus in their own way) for perfectly deterministic
single-transaction cases.
regards, tom lane