diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml new file mode 100644 index f88b16e..3120e1f *** a/doc/src/sgml/mvcc.sgml --- b/doc/src/sgml/mvcc.sgml *************** *** 150,162 **** transaction isolation level ! The four transaction isolation levels and the corresponding ! behaviors are described in . ! Standard <acronym>SQL</acronym> Transaction Isolation Levels ! --- 150,162 ---- transaction isolation level ! The SQL standard and PostgreSQL-implemented transaction isolation levels ! are described in .
! Transaction Isolation Levels ! *************** *** 171,182 **** Phantom Read ! Read uncommitted Possible --- 171,206 ---- Phantom Read + + Serialization Anomalies + ! Read uncommitted (SQL Standard) ! ! ! Possible ! ! ! Possible ! ! ! Possible ! ! ! Possible ! ! ! ! ! ! Read uncommitted (PostgreSQL) ! ! ! Not possible Possible *************** *** 202,212 **** Possible ! Repeatable read Not possible --- 226,260 ---- Possible + + Possible + ! Repeatable read (SQL Standard) ! ! ! Not possible ! ! ! Not possible ! ! ! Possible ! ! ! Possible ! ! ! ! ! ! Repeatable read (PostgreSQL) ! ! ! Not possible Not possible *************** *** 232,258 **** Not possible
! In PostgreSQL, you can request any of the ! four standard transaction isolation levels. But internally, there are ! only three distinct isolation levels, which correspond to the levels Read ! Committed, Repeatable Read, and Serializable. When you select the level Read ! Uncommitted you really get Read Committed, and phantom reads are not possible ! in the PostgreSQL implementation of Repeatable ! Read, so the actual ! isolation level might be stricter than what you select. This is ! permitted by the SQL standard: the four isolation levels only ! define which phenomena must not happen, they do not define which ! phenomena must happen. The reason that PostgreSQL ! only provides three isolation levels is that this is the only ! sensible way to map the standard isolation levels to the multiversion ! concurrency control architecture. The behavior of the available ! isolation levels is detailed in the following subsections. --- 280,309 ---- Not possible + + Not possible + ! In PostgreSQL, you can request any of ! the four standard transaction isolation levels, but internally only ! three distinct isolation levels are implemented, i.e. PostgreSQL's ! Read Uncommitted mode behaves like Read Committed. This is because ! it is the only sensible way to map the standard isolation levels to ! PostgreSQL's multiversion concurrency control architecture. ! ! ! ! The table also shows that PostgreSQL's Repeatable Read implementation ! does not allow phantom reads. Stricter behavior is permitted by the ! SQL standard: the four isolation levels only define which phenomena ! must not happen, not which phenomena must happen. ! The behavior of the available isolation levels is detailed in the ! following subsections.