Tom DalPozzo wrote: > Hi, > so let's suppose that the WAL is: > LSN 10: start transaction 123 > LSN 11: update tuple 100 > checkpoint position here (not a record but just for understanding) > LSN 12: update tuple 100 > LSN 13: update tuple 100 > LSN 14: checkpoint record ( postion=11) > LSN 15: update tuple 100 > and that the system crashes now, before ending to write all the > transaction's recs to the WAL (other updates and commit record missing). > > At the replay, starting from LSN 12, the entire page we had at LSN 11 is > written to the disk, though carrying inconsistent data. > Then we can even replay up to the end of WAL but always getting > inconsistent data. > BUT, you say, as the tuple is not commited in the WAL, only the old version > of the tuple will be visible? Right? Yes -- all the updated tuples are invisible because the commit record for transaction 123 does not appear in wal. A future VACUUM will remove all those tuples. Note that precisely for this reason, the original version of the tuple had not been removed yet. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general