At [1], the docs state that table rewrite ALTERs result in the relation
appearing empty after the ALTER if another transaction had already taken a
snapshot before the ALTER. A simple test with a repeatable read (or
serializable) transaction confirms this... but is there any other situation
where a snapshot would be taken?
1: https://www.postgresql.org/docs/current/mvcc-caveats.html