diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2015-02-23 14:22:42 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2015-02-23 14:22:42 -0300 |
commit | 296f3a6053844089bc533630fffafaba8f016384 (patch) | |
tree | 8ebe070e54f3809f51dd8ff0452934cdf8960127 /src/backend/commands/event_trigger.c | |
parent | 88e982302684246e8af785e78a467ac37c76dee9 (diff) | |
download | postgresql-296f3a6053844089bc533630fffafaba8f016384.tar.gz postgresql-296f3a6053844089bc533630fffafaba8f016384.zip |
Support more commands in event triggers
COMMENT, SECURITY LABEL, and GRANT/REVOKE now also fire
ddl_command_start and ddl_command_end event triggers, when they operate
on database-local objects.
Reviewed-By: Michael Paquier, Andres Freund, Stephen Frost
Diffstat (limited to 'src/backend/commands/event_trigger.c')
-rw-r--r-- | src/backend/commands/event_trigger.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c index a33a5ada1a9..dcf5b987477 100644 --- a/src/backend/commands/event_trigger.c +++ b/src/backend/commands/event_trigger.c @@ -267,8 +267,12 @@ check_ddl_tag(const char *tag) pg_strcasecmp(tag, "REFRESH MATERIALIZED VIEW") == 0 || pg_strcasecmp(tag, "ALTER DEFAULT PRIVILEGES") == 0 || pg_strcasecmp(tag, "ALTER LARGE OBJECT") == 0 || + pg_strcasecmp(tag, "COMMENT") == 0 || + pg_strcasecmp(tag, "GRANT") == 0 || + pg_strcasecmp(tag, "REVOKE") == 0 || pg_strcasecmp(tag, "DROP OWNED") == 0 || - pg_strcasecmp(tag, "IMPORT FOREIGN SCHEMA") == 0) + pg_strcasecmp(tag, "IMPORT FOREIGN SCHEMA") == 0 || + pg_strcasecmp(tag, "SECURITY LABEL") == 0) return EVENT_TRIGGER_COMMAND_TAG_OK; /* @@ -1149,6 +1153,34 @@ EventTriggerSupportsObjectClass(ObjectClass objclass) return true; } +bool +EventTriggerSupportsGrantObjectType(GrantObjectType objtype) +{ + switch (objtype) + { + case ACL_OBJECT_DATABASE: + case ACL_OBJECT_TABLESPACE: + /* no support for global objects */ + return false; + + case ACL_OBJECT_COLUMN: + case ACL_OBJECT_RELATION: + case ACL_OBJECT_SEQUENCE: + case ACL_OBJECT_DOMAIN: + case ACL_OBJECT_FDW: + case ACL_OBJECT_FOREIGN_SERVER: + case ACL_OBJECT_FUNCTION: + case ACL_OBJECT_LANGUAGE: + case ACL_OBJECT_LARGEOBJECT: + case ACL_OBJECT_NAMESPACE: + case ACL_OBJECT_TYPE: + return true; + default: + Assert(false); + return true; + } +} + /* * Prepare event trigger state for a new complete query to run, if necessary; * returns whether this was done. If it was, EventTriggerEndCompleteQuery must |