pgsql: Repair problems with VACUUM destroying t_ctid chains too soon,

From: tgl(at)svr1(dot)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Repair problems with VACUUM destroying t_ctid chains too soon,
Date: 2005-08-20 00:40:50
Message-ID: 20050820004050.0757F52ED6@svr1.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Repair problems with VACUUM destroying t_ctid chains too soon, and with
insufficient paranoia in code that follows t_ctid links. (We must do both
because even with VACUUM doing it properly, the intermediate state with
a dangling t_ctid link is visible concurrently during lazy VACUUM, and
could be seen afterwards if either type of VACUUM crashes partway through.)
Also try to improve documentation about what's going on. Patch is a bit
bulky because passing the XMAX information around required changing the
APIs of some low-level heapam.c routines, but it's not conceptually very
complicated. Per trouble report from Teodor and subsequent analysis.
This needs to be back-patched, but I'll do that after 8.1 beta is out.

Modified Files:
--------------
pgsql/src/backend/access/heap:
heapam.c (r1.197 -> r1.198)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/heapam.c.diff?r1=1.197&r2=1.198)
pgsql/src/backend/commands:
async.c (r1.123 -> r1.124)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/async.c.diff?r1=1.123&r2=1.124)
trigger.c (r1.191 -> r1.192)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/trigger.c.diff?r1=1.191&r2=1.192)
vacuum.c (r1.312 -> r1.313)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c.diff?r1=1.312&r2=1.313)
pgsql/src/backend/executor:
execMain.c (r1.253 -> r1.254)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c.diff?r1=1.253&r2=1.254)
pgsql/src/backend/utils/time:
tqual.c (r1.89 -> r1.90)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/time/tqual.c.diff?r1=1.89&r2=1.90)
pgsql/src/include/access:
heapam.h (r1.103 -> r1.104)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/heapam.h.diff?r1=1.103&r2=1.104)
htup.h (r1.75 -> r1.76)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/htup.h.diff?r1=1.75&r2=1.76)
pgsql/src/include/executor:
executor.h (r1.118 -> r1.119)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h.diff?r1=1.118&r2=1.119)
pgsql/src/include/utils:
tqual.h (r1.57 -> r1.58)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/tqual.h.diff?r1=1.57&r2=1.58)

Browse pgsql-committers by date

  From Date Subject
Next Message Tatsuo Ishii 2005-08-20 01:26:44 pgsql: Add BackendXidGetPid().
Previous Message User Bklawans 2005-08-19 19:21:00 bizgres - bizgres: Added support for detecting and using the version of