Re: NOLOGGING option, or ?

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@surnet.cl>
Cc: Simon Riggs <simon@2ndquadrant.com>, Bruce Momjian <pgman@candle.pha.pa.us>, Greg Stark <gsstark@mit.edu>, Neil Conway <neilc@samurai.com>, pgsql-hackers@postgresql.org
Date: 2005-06-01T18:24:39Z
Lists: pgsql-hackers
Alvaro Herrera <alvherre@surnet.cl> writes:
> On Wed, Jun 01, 2005 at 06:55:46PM +0100, Simon Riggs wrote:
>> We're holding the table lock and will continue to do so until end of
>> transaction. No transaction with an earlier id will ever see the data we
>> load because of the lock.

> Suppose you load half the tuples and the plug is pulled.  After
> recovery, you have half-load of tuples that are visible to everyone.
> This is a no-no.

Simon is expecting that the loaded tuples are guaranteed to be erased
(by table truncation) during recovery.  As I just noted I'm unconvinced
of the safety of doing truncations during recovery, so I'd prefer not
to depend on that.

The scenario I was thinking of was different: you load pre-frozen
tuples, commit, and thereby release the table lock.  Now the tuples
are visible to transactions that started before you did; that's what
violates MVCC.

			regards, tom lane