> > If we move tuples in already committed state, a page with new
> > tuple position goes to disk and backend crashes before page with
> > old tuple position updated then we'll have two version of tuple
> > after restart (new tuple with HEAP_MOVED_IN is valid and there is
> > no HEAP_MOVED_OFF in old tuple version).
>
> That's not good. Perhaps VACUUM still needs to fsync the file before
> its internal commit?
Ops, sorry - this case is not relevant to 7.1: WAL guarantees that
both pages will be updated on restart. Seems we are safe now.
Vadim