On 5 December 2012 22:49, Dimitri Fontaine <dimi...@2ndquadrant.fr> wrote:
> Simon Riggs <si...@2ndquadrant.com> writes:
>> On 5 December 2012 22:21, Dimitri Fontaine <dimi...@2ndquadrant.fr> wrote:
>>> Simon Riggs <si...@2ndquadrant.com> writes:
>>>>> CREATE EVENT TRIGGER my_event_trigger
>>>>>     ON table_rewrite
>>>>>     EXECUTE PROCEDURE consider_whether_to_throw_an_error();
>>>>
>>>> +1, I was just thinking that myself.
>>>
>>> +1, and I think that can happen for 9.3, as soon as we agree on the list
>>> of code points where we want that event to fire. ALTER TABLE variants
>>> that are rewriting the heap, sure. CLUSTER? VACUUM FULL? TRUNCATE?
>>
>> Events needed
>> * Table rewrite
>> * Index rebuild
>> * Relation scan (index/table/toast etc)
>> * AccessExclusiveLock
>
> For each of those events we need to find the exact code location from
> where to call the registered user defined function, if any. I would like
> us to at least devise which commands are going to fire the events here.
>
>   Table Rewrite:  ALTER TABLE, CLUSTER, VACUUM… ?
>   Index Rebuild:  ALTER TABLE, REINDEX, CLUSTER, VACUUM FULL… ?

yes please

>   Relation scan:  SELECT, ALTER TABLE … ADD CHECK …, etc
>
>                   maybe targeting index/seq scan from the executor code
>                   directly would be enough in that case? I'm not sure I
>                   can call into src/backend/commands/event_trigger.c
>                   from anywhere in the executor though, I need advice

Not SELECT - DDL only - for things like CREATE INDEX, so IndexBuildScan() IIRC

> AccessExclusiveLock on a relation when taken by *any* command? before
> the lock is taken I suppose…

At end of Lock Acquire, same place we already WAL-log the action.

-- 
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to