Subject: Question about MVCC caveats

From: Jim Nasby <[email-masked]>
Date: Thu, 13 Nov 2025 13:30:44 -0600

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

---

From: Laurenz Albe <[email-masked]>
Date: Thu, 13 Nov 2025 23:10:18 +0100

On Thu, 2025-11-13 at 13:30 -0600, Jim Nasby wrote:
> 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?

Snapshots are taken at the start of a statement (or, with REPEATABLE READ and
SERIALIZABLE) at the beginning of the first statement in the transaction.

What do you mean with an "other" situation?

Yours,
Laurenz Albe