Then i added the line ClientAuthentication_hook_type client_auth_hook = NULL; at the top of a file say planner.c
Why are you doing that?
If you want to use a hook from an extension, you must define a _PG_init
function that sets the hook within the extension when it gets loaded at shared_preload_libraries
time.
There is no need to modify the PostgreSQL source code its self. Only your extension. Take a look at the existing examples, like contrib/auth_delay
in the PostgreSQL source tree, for how to do this correctly.
Your extension doesn't get "linked ... to the postgresql project" at compile/link time, either. It's a loadable module that PostgreSQL links to at runtime when you ask it to with create extension
or by listing it in shared_preload_libraries
. At that time it runs whatever code is in _PG_init
, which is your opportunity to install hook functions etc.