Re: ALTER TABLE ... NOREWRITE option
От | Dimitri Fontaine |
---|---|
Тема | Re: ALTER TABLE ... NOREWRITE option |
Дата | |
Msg-id | m28v9ccdx5.fsf@2ndQuadrant.fr обсуждение исходный текст |
Ответ на | Re: ALTER TABLE ... NOREWRITE option (Simon Riggs <simon@2ndQuadrant.com>) |
Ответы |
Re: ALTER TABLE ... NOREWRITE option
|
Список | pgsql-hackers |
Simon Riggs <simon@2ndQuadrant.com> writes: > On 5 December 2012 22:21, Dimitri Fontaine <dimitri@2ndquadrant.fr> wrote: >> Simon Riggs <simon@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… ? 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 theexecutor though, I need advice AccessExclusiveLock on a relation when taken by *any* command? before the lock is taken I suppose… Regards, -- Dimitri Fontaine 06 63 07 10 78 http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
В списке pgsql-hackers по дате отправления: