Re: Corrupt database? 8.1/FreeBSD6.0

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jeff Amiel <becauseimjeff(at)yahoo(dot)com>, Alvaro Herrera <alvherre(at)commandprompt(dot)com>, pgsql-general(at)postgresql(dot)org, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Corrupt database? 8.1/FreeBSD6.0
Date: 2007-01-14 04:22:49
Message-ID: 3445.1168748569@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

I wrote:
> ... but I suddenly fear that we've missed a fundamental point about
> pg_clog truncation. And WAL wraparound for that matter. To wit, a
> sufficiently long-lived temp table could contain old XIDs, and there's
> no way for anyone except the owning backend to clean them out, or even
> guarantee that they're marked committed.

After further thought I believe this is OK as of 8.2, because a temp
table's relfrozenxid is tracked independently of any other's. (This
problem puts a stake through the heart of the recently-discussed idea
that a temp table might be able to get along without a globally visible
pg_class entry, however.)

But it seems that we need a band-aid for 8.1 and earlier. The simplest
fix I can think of is for vacuum not to attempt to advance the
datvacuumxid/datfrozenxid fields if it skipped over any temp tables of
other backends. That's a bit nasty, since in a database making heavy
use of temp tables, you might do a whole lot of vacuums without ever
meeting that condition. Anyone have a better idea?

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Sim Zacks 2007-01-14 09:15:52 like query backslash
Previous Message Devrim GUNDUZ 2007-01-14 00:05:54 Re: installing 8.2 on solaris 10?

Browse pgsql-hackers by date

  From Date Subject
Next Message Marko Kreen 2007-01-14 11:21:37 Re: [PATCHES] vcbuild optional packages
Previous Message Dave Cramer 2007-01-14 03:08:57 Re: Performance of Parser?