Skip to content

Commit

Permalink
Add access hook
Browse files Browse the repository at this point in the history
  • Loading branch information
orf committed Nov 18, 2023
1 parent 9e9feb4 commit 0058715
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions pgrx/src/hooks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,24 @@ pub trait PgHooks {
prev_hook(pstate, query, jumble_state)
}

fn object_access_hook(
&mut self,
access: pg_sys::ObjectAccessType,
class_id: pg_sys::Oid,
object_id: pg_sys::Oid,
sub_id: ::std::os::raw::c_int,
arg: *mut ::std::os::raw::c_void,
prev_hook: fn(
access: pg_sys::ObjectAccessType,
class_id: pg_sys::Oid,
object_id: pg_sys::Oid,
sub_id: ::std::os::raw::c_int,
arg: *mut ::std::os::raw::c_void,
) -> HookResult<()>,
) -> HookResult<()> {
prev_hook(access, class_id, object_id, sub_id, arg)
}

/// Called when the transaction aborts
fn abort(&mut self) {}

Expand All @@ -194,6 +212,7 @@ struct Hooks {
prev_process_utility_hook: pg_sys::ProcessUtility_hook_type,
prev_planner_hook: pg_sys::planner_hook_type,
prev_post_parse_analyze_hook: pg_sys::post_parse_analyze_hook_type,
object_access_hook: pg_sys::object_access_hook_type
}

static mut HOOKS: Option<Hooks> = None;
Expand Down Expand Up @@ -237,6 +256,9 @@ pub unsafe fn register_hook(hook: &'static mut (dyn PgHooks)) {
prev_post_parse_analyze_hook: pg_sys::post_parse_analyze_hook
.replace(pgrx_post_parse_analyze),
prev_emit_log_hook: pg_sys::emit_log_hook.replace(pgrx_emit_log),
object_access_hook: pg_sys::object_access_hook_type
.replace(pgrx_object_access_hook)
.or(Some(pgrx_standard_object_access_hook_wrapper)),
});

#[pg_guard]
Expand Down

0 comments on commit 0058715

Please sign in to comment.