|
|
|
|
@ -20,11 +20,13 @@ |
|
|
|
|
* and logging plugins. |
|
|
|
|
*/ |
|
|
|
|
object_access_hook_type object_access_hook = NULL; |
|
|
|
|
object_access_hook_type_str object_access_hook_str = NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunObjectPostCreateHook |
|
|
|
|
* |
|
|
|
|
* It is entrypoint of OAT_POST_CREATE event |
|
|
|
|
* OAT_POST_CREATE object ID based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectPostCreateHook(Oid classId, Oid objectId, int subId, |
|
|
|
|
@ -46,7 +48,7 @@ RunObjectPostCreateHook(Oid classId, Oid objectId, int subId, |
|
|
|
|
/*
|
|
|
|
|
* RunObjectDropHook |
|
|
|
|
* |
|
|
|
|
* It is entrypoint of OAT_DROP event |
|
|
|
|
* OAT_DROP object ID based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectDropHook(Oid classId, Oid objectId, int subId, |
|
|
|
|
@ -68,7 +70,7 @@ RunObjectDropHook(Oid classId, Oid objectId, int subId, |
|
|
|
|
/*
|
|
|
|
|
* RunObjectTruncateHook |
|
|
|
|
* |
|
|
|
|
* It is the entrypoint of OAT_TRUNCATE event |
|
|
|
|
* OAT_TRUNCATE object ID based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectTruncateHook(Oid objectId) |
|
|
|
|
@ -84,7 +86,7 @@ RunObjectTruncateHook(Oid objectId) |
|
|
|
|
/*
|
|
|
|
|
* RunObjectPostAlterHook |
|
|
|
|
* |
|
|
|
|
* It is entrypoint of OAT_POST_ALTER event |
|
|
|
|
* OAT_POST_ALTER object ID based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectPostAlterHook(Oid classId, Oid objectId, int subId, |
|
|
|
|
@ -107,7 +109,7 @@ RunObjectPostAlterHook(Oid classId, Oid objectId, int subId, |
|
|
|
|
/*
|
|
|
|
|
* RunNamespaceSearchHook |
|
|
|
|
* |
|
|
|
|
* It is entrypoint of OAT_NAMESPACE_SEARCH event |
|
|
|
|
* OAT_NAMESPACE_SEARCH object ID based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
bool |
|
|
|
|
RunNamespaceSearchHook(Oid objectId, bool ereport_on_violation) |
|
|
|
|
@ -131,7 +133,7 @@ RunNamespaceSearchHook(Oid objectId, bool ereport_on_violation) |
|
|
|
|
/*
|
|
|
|
|
* RunFunctionExecuteHook |
|
|
|
|
* |
|
|
|
|
* It is entrypoint of OAT_FUNCTION_EXECUTE event |
|
|
|
|
* OAT_FUNCTION_EXECUTE object ID based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunFunctionExecuteHook(Oid objectId) |
|
|
|
|
@ -143,3 +145,129 @@ RunFunctionExecuteHook(Oid objectId) |
|
|
|
|
ProcedureRelationId, objectId, 0, |
|
|
|
|
NULL); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* String versions */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunObjectPostCreateHookStr |
|
|
|
|
* |
|
|
|
|
* OAT_POST_CREATE object name based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectPostCreateHookStr(Oid classId, const char *objectName, int subId, |
|
|
|
|
bool is_internal) |
|
|
|
|
{ |
|
|
|
|
ObjectAccessPostCreate pc_arg; |
|
|
|
|
|
|
|
|
|
/* caller should check, but just in case... */ |
|
|
|
|
Assert(object_access_hook_str != NULL); |
|
|
|
|
|
|
|
|
|
memset(&pc_arg, 0, sizeof(ObjectAccessPostCreate)); |
|
|
|
|
pc_arg.is_internal = is_internal; |
|
|
|
|
|
|
|
|
|
(*object_access_hook_str) (OAT_POST_CREATE, |
|
|
|
|
classId, objectName, subId, |
|
|
|
|
(void *) &pc_arg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunObjectDropHookStr |
|
|
|
|
* |
|
|
|
|
* OAT_DROP object name based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectDropHookStr(Oid classId, const char *objectName, int subId, |
|
|
|
|
int dropflags) |
|
|
|
|
{ |
|
|
|
|
ObjectAccessDrop drop_arg; |
|
|
|
|
|
|
|
|
|
/* caller should check, but just in case... */ |
|
|
|
|
Assert(object_access_hook_str != NULL); |
|
|
|
|
|
|
|
|
|
memset(&drop_arg, 0, sizeof(ObjectAccessDrop)); |
|
|
|
|
drop_arg.dropflags = dropflags; |
|
|
|
|
|
|
|
|
|
(*object_access_hook_str) (OAT_DROP, |
|
|
|
|
classId, objectName, subId, |
|
|
|
|
(void *) &drop_arg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunObjectTruncateHookStr |
|
|
|
|
* |
|
|
|
|
* OAT_TRUNCATE object name based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectTruncateHookStr(const char *objectName) |
|
|
|
|
{ |
|
|
|
|
/* caller should check, but just in case... */ |
|
|
|
|
Assert(object_access_hook_str != NULL); |
|
|
|
|
|
|
|
|
|
(*object_access_hook_str) (OAT_TRUNCATE, |
|
|
|
|
RelationRelationId, objectName, 0, |
|
|
|
|
NULL); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunObjectPostAlterHookStr |
|
|
|
|
* |
|
|
|
|
* OAT_POST_ALTER object name based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunObjectPostAlterHookStr(Oid classId, const char *objectName, int subId, |
|
|
|
|
Oid auxiliaryId, bool is_internal) |
|
|
|
|
{ |
|
|
|
|
ObjectAccessPostAlter pa_arg; |
|
|
|
|
|
|
|
|
|
/* caller should check, but just in case... */ |
|
|
|
|
Assert(object_access_hook_str != NULL); |
|
|
|
|
|
|
|
|
|
memset(&pa_arg, 0, sizeof(ObjectAccessPostAlter)); |
|
|
|
|
pa_arg.auxiliary_id = auxiliaryId; |
|
|
|
|
pa_arg.is_internal = is_internal; |
|
|
|
|
|
|
|
|
|
(*object_access_hook_str) (OAT_POST_ALTER, |
|
|
|
|
classId, objectName, subId, |
|
|
|
|
(void *) &pa_arg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunNamespaceSearchHookStr |
|
|
|
|
* |
|
|
|
|
* OAT_NAMESPACE_SEARCH object name based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
bool |
|
|
|
|
RunNamespaceSearchHookStr(const char *objectName, bool ereport_on_violation) |
|
|
|
|
{ |
|
|
|
|
ObjectAccessNamespaceSearch ns_arg; |
|
|
|
|
|
|
|
|
|
/* caller should check, but just in case... */ |
|
|
|
|
Assert(object_access_hook_str != NULL); |
|
|
|
|
|
|
|
|
|
memset(&ns_arg, 0, sizeof(ObjectAccessNamespaceSearch)); |
|
|
|
|
ns_arg.ereport_on_violation = ereport_on_violation; |
|
|
|
|
ns_arg.result = true; |
|
|
|
|
|
|
|
|
|
(*object_access_hook_str) (OAT_NAMESPACE_SEARCH, |
|
|
|
|
NamespaceRelationId, objectName, 0, |
|
|
|
|
(void *) &ns_arg); |
|
|
|
|
|
|
|
|
|
return ns_arg.result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RunFunctionExecuteHookStr |
|
|
|
|
* |
|
|
|
|
* OAT_FUNCTION_EXECUTE object name based event hook entrypoint |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
RunFunctionExecuteHookStr(const char *objectName) |
|
|
|
|
{ |
|
|
|
|
/* caller should check, but just in case... */ |
|
|
|
|
Assert(object_access_hook_str != NULL); |
|
|
|
|
|
|
|
|
|
(*object_access_hook_str) (OAT_FUNCTION_EXECUTE, |
|
|
|
|
ProcedureRelationId, objectName, 0, |
|
|
|
|
NULL); |
|
|
|
|
} |
|
|
|
|
|