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
От | Phil Sorber |
---|---|
Тема | 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 |
Дата | |
Msg-id | CADAkt-hka60SsdgmXAzPb0kFcoE4skvFginjXyKz_2iZ9viQ3Q@mail.gmail.com обсуждение исходный текст |
Ответ на | WIP patch: Improve relation size functions such as pg_relation_size() to avoid producing an error when called against a no longer visible relation (Phil Sorber <phil@omniti.com>) |
Ответы |
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
|
Список | pgsql-hackers |
On Sat, Dec 17, 2011 at 3:52 PM, Phil Sorber <phil@omniti.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}.
В списке pgsql-hackers по дате отправления: