Re: pg_relation_size / could not open relation with OID #

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: tv(at)fuzzy(dot)cz
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: pg_relation_size / could not open relation with OID #
Date: 2010-09-20 13:44:02
Message-ID: 8436.1284990242@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

tv(at)fuzzy(dot)cz writes:
> I've run into a strange problem with system catalogs - we're collecting
> database stats periodically (every 10 minutes), and from time to time we
> get the following error:

> --------------------------------------------------
> ERROR: could not open relation with OID 154873708
> --------------------------------------------------

I think you're probably hitting a problem with a table being deleted
while you're scanning pg_class. pg_relation_size() will fail if the
given OID isn't valid "now" --- but the underlying query returns all
OIDs that were valid when the transaction or statement snapshot was
taken. So you have a race condition.

You might consider excluding temp tables from the query, if that's the
most likely source of the problem.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2010-09-20 13:47:46 Re: where does postgres keep the query result until it is returned?
Previous Message Willy-Bas Loos 2010-09-20 13:37:58 Re: where does postgres keep the query result until it is returned?