• Agreed. I think that's all included in the article.

    But specifically, when the transaction that has made row changes is checkpointed and not committed, and for whatever reason needs to roll back, where does the old version of the row come from? Not the data file - it was updated at checkpoint. Tony said it was a reversing entry - but how is that generated?

    If I change a salary from 53 to 57, and the change is checkpointed, is the data file updated? Yes.

    Is the change recorded in the log? Of course.

    But where is the 53 preserved? We need to keep that value somewhere in case the transaction [which is still running] decides to roll back. I thought it was in the before image of the row recorded in the log, but if I'm wrong about this I need to know.