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-g4cujTGmiz0wzS7DNJi1UasDNcD0ZFoz9xHyfbR34pMQ@mail.gmail.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  (Phil Sorber <phil@omniti.com>)
Список pgsql-hackers
On Mon, Dec 19, 2011 at 1:27 PM, Phil Sorber <phil@omniti.com> wrote:
> 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}.

I've attached the updated version of my patch with the changes
mentioned in the previous email.

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: Review: Non-inheritable check constraints
Следующее
От: Noah Misch
Дата:
Сообщение: Re: ALTER TABLE lock strength reduction patch is unsafe