Re: Control your disk usage in PG: Introduction to Disk Quota Extension

Поиск
Список
Период
Сортировка
От Haozhou Wang
Тема Re: Control your disk usage in PG: Introduction to Disk Quota Extension
Дата
Msg-id CAL_NLpKf6HzgGzWriuSW2U3CEykEXA9Z5vyEqBW0Hk5btr6Liw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Control your disk usage in PG: Introduction to Disk Quota Extension  (Robert Haas <robertmhaas@gmail.com>)
Ответы Re: Control your disk usage in PG: Introduction to Disk Quota Extension  (Hubert Zhang <hzhang@pivotal.io>)
Список pgsql-hackers
Thank you very much for your review.
We refactored our patch with new names and comments.

For ReadBufferExtended hook, yes, Readbuffer with P_NEW will then call smgrextend.

But in smgrextend, we cannot get the oid of a relation, and it will take some time to get the oid via smgrrelation.
We would like to add a hook just before the smgrextend to get the oid and avoid use RelidByRelfilenode().

New patch is attached in the attachment.
Thank a lot!

Regards,
Haozhou


On Wed, Nov 21, 2018 at 10:48 PM Robert Haas <robertmhaas@gmail.com> wrote:
On Tue, Nov 20, 2018 at 2:20 AM Haozhou Wang <hawang@pivotal.io> wrote:
> We prepared a patch that includes the hook points. And such hook points are needed for disk quota extension.
> There are two hooks.
> One is SmgrStat_hook. It's used to perform ad-hoc logic in storage when doing smgr create/extend/truncate in general. As for disk quota extension, this hook is used to detect active tables(new created tables, tables extending new blocks, or tables being truncated)
> The other is BufferExtendCheckPerms_hook. It's used to perform ad-hoc logic when buffer extend a new block. Since ReadBufferExtended is a hot function, we call this hook only when blockNum == P_NEW. As  for disk quota extension, this hook is used to do query enforcement during the query is loading data.
>
> Any comments are appreciated.

+1 for adding some hooks to support this kind of thing, but I think
the names you've chosen are not very good.  The hook name should
describe the place from which it is called, not the purpose for which
one imagines that it will be used, because somebody else might imagine
another use.  Both BufferExtendCheckPerms_hook_type and
SmgrStat_hook_type are imagining that they know what the hook does -
CheckPerms in the first case and Stat in the second case.

For this particular purpose, I don't immediately see why you need a
hook in both places.  If ReadBuffer is called with P_NEW, aren't we
guaranteed to end up in smgrextend()?

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Вложения

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

Предыдущее
От: Paul Guo
Дата:
Сообщение: Re: A WalSnd issue related to state WALSNDSTATE_STOPPING
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: ToDo: show size of partitioned table