Thread: cannot set view triggers to replica
It appears to be an omission that ALTER TABLE ... ENABLE TRIGGER and similar commands don't allow acting on views, even though we now have triggers on views. Similarly, the ALTER TABLE ... ENABLE RULE commands only allow acting on tables, even though rules can also exist on views and materialized views. (Why don't we allow rules on foreign tables? Is that intentional?) Attached is a sample patch. It appears we don't have any regression tests for this.
Attachment
On Sat, May 30, 2015 at 11:47 AM, Peter Eisentraut <peter_e@gmx.net> wrote: > It appears to be an omission that ALTER TABLE ... ENABLE TRIGGER and > similar commands don't allow acting on views, even though we now have > triggers on views. True, now isn't it something that should be as well part of ALTER VIEW? > Similarly, the ALTER TABLE ... ENABLE RULE commands only allow acting on > tables, even though rules can also exist on views and materialized views. I think that ALTER VIEW and ALTER MATERIALIZED VIEW should be able to accept the command as well. > Attached is a sample patch. It appears we don't have any regression > tests for this. This sounds like a mandatory condition for this patch. -- Michael
On 30 May 2015 at 03:47, Peter Eisentraut <peter_e@gmx.net> wrote: > It appears to be an omission that ALTER TABLE ... ENABLE TRIGGER and > similar commands don't allow acting on views, even though we now have > triggers on views. > It was deliberately omitted from the original INSTEAD OF triggers patch because it didn't seem that useful (and to keep the patch size down), see: http://www.postgresql.org/message-id/flat/AANLkTimJw47yZHnxKhMNLCFES=W-sMrqpRe7aj8YBKds@mail.gmail.com#AANLkTimJw47yZHnxKhMNLCFES=W-sMrqpRe7aj8YBKds@mail.gmail.com That said, I have no objection to allowing it if you think it's likely to be useful. I think you will need to work a little harder to make it work properly though. Consider, for example, how view_has_instead_trigger() and its callers, and CheckValidResultRel() should behave if the triggers are disabled. Regards, Dean
Michael Paquier <michael.paquier@gmail.com> wrote:> On Sat, May 30, 2015 at 11:47 AM, Peter Eisentraut <peter_e@gmx.net>wrote: >> the ALTER TABLE ... ENABLE RULE commands only allow acting on>> tables, even though rules can also exist on views andmaterialized views. > > I think that ALTER VIEW and ALTER MATERIALIZED VIEW should be able to > accept the command as well. What would be a use case for disabling the _RETURN rule for a [ MATERIALIZED ] VIEW? -- Kevin Grittner EDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company