Thread: Re: [COMMITTERS] pgsql: Create a "relation mapping" infrastructure to support changing

I just noticed that this patch

> Create a "relation mapping" infrastructure to support changing the relfilenodes
> of shared or nailed system catalogs.  This has two key benefits:

creates a new function pg_relation_filenode() that only uses the
syscache to fetch the relation's filenode, without locking it.  I wonder
if we could do the same in the pg_relation_size() function and friends,
to avoid having to grab a lock on the relation.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


Alvaro Herrera <alvherre@commandprompt.com> writes:
> I just noticed that this patch

>> Create a "relation mapping" infrastructure to support changing the relfilenodes
>> of shared or nailed system catalogs.  This has two key benefits:

> creates a new function pg_relation_filenode() that only uses the
> syscache to fetch the relation's filenode, without locking it.  I wonder
> if we could do the same in the pg_relation_size() function and friends,
> to avoid having to grab a lock on the relation.

I don't think it's a good idea to try to do physical access to the
relation without any lock.  The filenode function is a bit special
because it doesn't need anything except the pg_class row itself.
(Except in the case of a mapped relationn, but the underlying
mapping entry is unlikely to disappear, too.)
        regards, tom lane