mirror of https://github.com/postgres/postgres
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.pull/1/head
parent
d3c1265443
commit
cc1ed40d57
@ -0,0 +1,46 @@ |
||||
/*
|
||||
* objectaccess.h |
||||
* |
||||
* Object access hooks. |
||||
* |
||||
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group |
||||
* Portions Copyright (c) 1994, Regents of the University of California |
||||
*/ |
||||
|
||||
#ifndef OBJECTACCESS_H |
||||
#define OBJECTACCESS_H |
||||
|
||||
/*
|
||||
* Object access hooks are intended to be called just before or just after |
||||
* performing certain actions on a SQL object. This is intended as |
||||
* infrastructure for security or logging pluggins. |
||||
* |
||||
* OAT_POST_CREATE should be invoked just after the the object is created. |
||||
* Typically, this is done after inserting the primary catalog records and |
||||
* associated dependencies. |
||||
* |
||||
* Other types may be added in the future. |
||||
*/ |
||||
typedef enum ObjectAccessType |
||||
{ |
||||
OAT_POST_CREATE, |
||||
} ObjectAccessType; |
||||
|
||||
/*
|
||||
* Hook, and a macro to invoke it. |
||||
*/ |
||||
|
||||
typedef void (*object_access_hook_type)(ObjectAccessType access, |
||||
Oid classId, |
||||
Oid objectId, |
||||
int subId); |
||||
|
||||
extern PGDLLIMPORT object_access_hook_type object_access_hook; |
||||
|
||||
#define InvokeObjectAccessHook(access,classId,objectId,subId) \ |
||||
do { \
|
||||
if (object_access_hook) \
|
||||
(*object_access_hook)((access),(classId),(objectId),(subId)); \
|
||||
} while(0) |
||||
|
||||
#endif /* OBJECTACCESS_H */ |
Loading…
Reference in new issue