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
