Scott Geller <sgellergsu@gmail.com> writes:
> I'm trying to run the code:
> CREATE FUNCTION plr_call_handler()
> RETURNS LANGUAGE_HANDLER
> AS '$libdir/plr' LANGUAGE C;
> and getting the error:
> An error occurred when executing the SQL command:
> CREATE FUNCTION plr_call_handler()
> RETURNS LANGUAGE_HANDLER
> AS '$libdir/plr' LANGUAGE C
> ERROR: could not access file "$libdir/plr": No such file or directory
> [SQL State=58P01]
> Yet, I'm able to create the function with no problem when I run:
> CREATE FUNCTION plr_call_handler()
> RETURNS LANGUAGE_HANDLER
> AS '/usr/lib/postgresql/plr' LANGUAGE C;
> I found the location by running in bash:
> pg_config --pkglibdir
Huh. "pg_config --pkglibdir" is definitely meant to print the same
directory that is substituted for "$libdir". Are you sure you are
invoking the copy of pg_config that goes with the postgres backend
executable you're using? Also, the path is usually calculated relative
to the location of the program, so putting pg_config in a different
directory than the postgres executable is in could make it give bogus
results.
> I then tried to edit postgresql.conf by adding the line:
> dynamic_library_path = '/usr/lib/postgresql:$libdir'
This setting is not relevant to your problem. The meaning of $libdir
is wired in, for a particular build and installation location.
regards, tom lane