Re: WIP patch: Improve relation size functions such as pg_relation_size() to avoid producing an error when called against a no longer visible relation

From: Phil Sorber <phil(at)omniti(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Cc: OmniTI DBA <dba(at)omniti(dot)com>
Subject: Re: WIP patch: Improve relation size functions such as pg_relation_size() to avoid producing an error when called against a no longer visible relation
Date: 2011-12-19 18:27:06
Message-ID: CADAkt-hka60SsdgmXAzPb0kFcoE4skvFginjXyKz_2iZ9viQ3Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Dec 17, 2011 at 3:52 PM, Phil Sorber <phil(at)omniti(dot)com> wrote:
> Attached is a patch that addresses the todo item "Improve relation
> size functions such as pg_relation_size() to avoid producing an error
> when called against a no longer visible relation."
>
> http://archives.postgresql.org/pgsql-general/2010-10/msg00332.php
>
> Instead of returning an error, they now return NULL if the OID is
> found in pg_class when using SnapshotAny. I only applied it to 4
> functions: select pg_relation_size, pg_total_relation_size,
> pg_table_size and pg_indexes_size. These are the ones that were using
> relation_open(). I changed them to using try_relation_open(). For
> three of them I had to move the try_relation_open() call up one level
> in the call stack and change the parameter types for some support
> functions from Oid to Relation. They now also call a new function
> relation_recently_dead() which is what checks for relation in
> SnapshotAny. All regression tests passed.
>
> Is SnapshotAny the snapshot I should be using? It seems to get the
> correct results. I can drop a table and I get NULL. Then after a
> vacuumdb it returns an error.

Something I'd like to point out myself is that I need to be using
ObjectIdAttributeNumber instead of Anum_pg_class_relfilenode. Probably
just luck that I got the intended results before. This will also
change the logic in a few other places.

Still not clear on the semantics of Snapshot{Any|Self|Now|Dirty}.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2011-12-19 18:31:43 Re: Autonomous subtransactions
Previous Message Greg Smith 2011-12-19 18:25:38 Re: Command Triggers