Andres Freund <and...@anarazel.de> writes: > On March 8, 2018 10:46:53 AM PST, Tom Lane <t...@sss.pgh.pa.us> wrote: >> Breaking fundamental invariants like >> "ctid points to this tuple or its update successor" is going to cause >> trouble. There's a lot of code that knows that; more than knows the >> details of what's in xmax, I believe.
> I don't think this is that big a problem. All code already needs to handle > the case where ctid points to an aborted update tuple. Which might long have > been replaced by as an independent role. That's why we have all this > updated.xmax == new.xmin checks. Which will, without any changes, catch the > proposed scheme, no? No. In those situations, the conclusion is that the current tuple is live, which is exactly the wrong conclusion for a cross-partition update. Or at least it might be the wrong conclusion ... I wonder how this patch works if the updating transaction aborted. regards, tom lane