Re: 9.2 won't load C-language function

Поиск
Список
Период
Сортировка
От Craig James
Тема Re: 9.2 won't load C-language function
Дата
Msg-id CAFwQ8rfoyVY-kJ2mPEo4HFzJm-6WdqFasyMfyHuDUQ9Chdj2pg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: 9.2 won't load C-language function  (Craig Ringer <ringerc@ringerc.id.au>)
Список pgsql-admin
On Wed, Oct 10, 2012 at 10:08 PM, Craig Ringer <ringerc@ringerc.id.au> wrote:
On 10/11/2012 02:22 AM, Craig James wrote:
I have a C-language function I've been using on 8.4 for a long time.  On
9.2 it won't load:

test=# set search_path = public;
SET
test=# CREATE OR REPLACE FUNCTION chmoogle_session_id() RETURNS integer
AS '/usr/local/pgsql/lib/libchmoogle.so', 'chmoogle_session_id'
LANGUAGE c VOLATILE;
ERROR:  could not load library "/usr/local/pgsql/lib/libchmoogle.so":
libopenbabel.so.4: cannot open shared object file: No such file or directory

What does `ldd /usr/local/pgsql/lib/libchmoogle.so` say? What about when run under the PostgreSQL user account?

Too late ... after reading up on LD_LIBRARY_PATH and why ldconfig is better, I just ran ldconfig on the /usr/local/pgsql/lib and /usr/local/openbabel/lib directories.  Problem fixed.
 
You may need to set LD_LIBRARY_PATH in the Pg startup script, or modify ld.so.conf, or re-build your extension with rpath linking enabled.

As for why it worked with 8.4 - I expect you either altered LD_LIBRARY_PATH in the 8.4 startup scripts, or maybe the 8.4 version of the extension was built with -Wl,-rpath so the paths to required libraries were embedded into the extension library.

It is a bit odd ... 8.4 was working, and I just compiled and installed 9.2 on top of it (and created a fresh database).  Oh well, I guess it will remain a mystery.

Craig James
 

--
Craig Ringer

В списке pgsql-admin по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: Pg 8.3.x on RHEL 6.3?
Следующее
От: Arun Padule
Дата:
Сообщение: How to find dependent procdures on a table in postgresql