From cc1ed40d57aa68322e43a7b0a3320a6c5aff010a Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Thu, 25 Nov 2010 11:48:49 -0500 Subject: Object access hook framework, with post-creation hook. After a SQL object is created, we provide an opportunity for security or logging plugins to get control; for example, a security label provider could use this to assign an initial security label to newly created objects. The basic infrastructure is (hopefully) reusable for other types of events that might require similar treatment. KaiGai Kohei, with minor adjustments. --- src/backend/commands/foreigncmds.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/backend/commands/foreigncmds.c') diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index 4e6367c5268..71ba806851b 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -18,6 +18,7 @@ #include "catalog/catalog.h" #include "catalog/dependency.h" #include "catalog/indexing.h" +#include "catalog/objectaccess.h" #include "catalog/pg_foreign_data_wrapper.h" #include "catalog/pg_foreign_server.h" #include "catalog/pg_proc.h" @@ -415,6 +416,10 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt) recordDependencyOnOwner(ForeignDataWrapperRelationId, fdwId, ownerId); + /* Post creation hook for new foreign data wrapper */ + InvokeObjectAccessHook(OAT_POST_CREATE, + ForeignDataWrapperRelationId, fdwId, 0); + heap_close(rel, NoLock); } @@ -696,6 +701,9 @@ CreateForeignServer(CreateForeignServerStmt *stmt) recordDependencyOnOwner(ForeignServerRelationId, srvId, ownerId); + /* Post creation hook for new foreign server */ + InvokeObjectAccessHook(OAT_POST_CREATE, ForeignServerRelationId, srvId, 0); + heap_close(rel, NoLock); } @@ -967,6 +975,9 @@ CreateUserMapping(CreateUserMappingStmt *stmt) /* Record the mapped user dependency */ recordDependencyOnOwner(UserMappingRelationId, umId, useId); + /* Post creation hook for new user mapping */ + InvokeObjectAccessHook(OAT_POST_CREATE, UserMappingRelationId, umId, 0); + heap_close(rel, NoLock); } -- cgit v1.2.3