hooks not working in postgresql 9.3 (building from source)
hi,
I need to use the hook feature of planner in postgresql 9.3 to perform a
task. I am building postgresql from source.
To start with, I wanted to know how to create a hook and attach that shared
libray to postgresql. Hence i tried the examples given in "
wiki.postgresql.org/images/e/e3/Hooks_in_postgresql.pdf" and
"
https://github.com/gleu/Hooks-in-PostgreSQL/tree/master/examples/my_client_auth
".
I have copied the "my_client_auth.c" file and Makefile into
contrib/client_auth folder. make and make install is working fine.
This is the output of make install.
/bin/mkdir -p '/home/rajmohan/projects/lib/postgresql'
/usr/bin/install -c -m 755 my_client_auth.so
'/home/rajmohan/projects/lib/postgresql/'
after that i have added shared_preload_libraries = 'my_client_auth' to
postgresql.conf
Then i added the line
ClientAuthentication_hook_type client_auth_hook = NULL; at the top of a
file say planner.c in postgresql code
and inside a method im checking client_auth_hook value. When i rebuild and
run the project,
client_auth_hook value is always zero. It seems my_client_auth.so file is
not linked properly to my postgresql project.
Am i missing any step? how to access methods in my_client_auth.so from
postgresql. Kindly help
On Thu, May 1, 2014 at 12:33 AM, Rajmohan C <csrajmohan@gmail.com> wrote:
I need to use the hook feature of planner in postgresql 9.3 to perform a
task. I am building postgresql from source.
This hook is called planner_hook_type and is present in planner.c.
To start with, I wanted to know how to create a hook and attach that shared
libray to postgresql. Hence i tried the examples given in
"wiki.postgresql.org/images/e/e3/Hooks_in_postgresql.pdf" and
"https://github.com/gleu/Hooks-in-PostgreSQL/tree/master/examples/my_client_auth".
I have copied the "my_client_auth.c" file and Makefile into
contrib/client_auth folder. make and make install is working fine.
This is the output of make install./bin/mkdir -p '/home/rajmohan/projects/lib/postgresql'
/usr/bin/install -c -m 755 my_client_auth.so
'/home/rajmohan/projects/lib/postgresql/'
after that i have added shared_preload_libraries = 'my_client_auth' to
postgresql.conf
This is fine.
Then i added the line
ClientAuthentication_hook_type client_auth_hook = NULL; at the top of a file
say planner.c in postgresql code
and inside a method im checking client_auth_hook value. When i rebuild and
run the project,
client_auth_hook value is always zero.
Well, you are trying to create a new hook here, and not to use an
existing one. You do not need to modify the source code of PostgreSQL
when using hooks, that's what make their strength.
It seems my_client_auth.so file is
not linked properly to my postgresql project.
Am i missing any step? how to access methods in my_client_auth.so from
postgresql. Kindly help
Are you sure that you set up properly shared_preload_libraries =
'my_client_auth' and then restarted the PostgreSQL server. If the hook
library is properly loaded by server, you should see a message similar
to that if of course server is pretty verbose when logging things:
LOG: loaded library "my_client_auth"
You can as well try a hook on an existing session by using LOAD.
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers