Обсуждение: $libdir not working

Поиск
Список
Период
Сортировка

$libdir not working

От
Scott Geller
Дата:
Hello

Forgive the newb question...

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

I then tried to edit postgresql.conf by adding the line:
dynamic_library_path =  '/usr/lib/postgresql:$libdir'

I then reboot the OS and get the same error when trying to create the
function...

feels like postgres is not picking up the conf file, or at least the
line I added in the conf file.

appreciate any help!

Thanks

Scott

BTW - I'm using pclinuxos, and postgres 8.4

Re: $libdir not working

От
Tom Lane
Дата:
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