LINUX.ORG.RU

postgres — добавить язык


0

0

вопрос возник. есть уже работающий postgres 8.0 на FC4 и хочется к нему прикрутить tcl или питон, причем без пересборки самого постгреса. нашел линк на то, как питон должен бы работать, да вот у меня не получается... может делаю чего не так, не понятно.

про tcl вообще глухо, либо искать не умею.

может быть есть у кого опыт такого? или может быть есть линки на то, как сабж провернуть?

Ответ на: комментарий от anonymous

и? а дальше что?
create language у меня матерится.

CREATE FUNCTION python_handler() RETURNS LANGUAGE_HANDLER
LANGUAGE C AS '$libdir/libpython2.4.so', 'pl_handler';
ругается: "ERROR: could not access file "$libdir/libpython2.4.so": No such file or directory"

либо в таком варианте:
ERROR: could not find function "pl_handler" in file "/usr/lib/libpython2.4.so"

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

Честно говоря, используемый Вами синтаксис кажется мне каким-то странным. Зачем явно задавать pl_handler (тем более, что такой функции просто нет)?

По идее, должно быть достаточно createlang plpython template1

Более подробно можно почитать здесь http://www.postgresql.org/docs/8.2/interactive/xplang-install.html

anonymous
()
Ответ на: комментарий от anonymous

> Зачем явно задавать pl_handler (тем более, что такой функции просто нет)?

это я уже понял :). а какая есть?

> По идее, должно быть достаточно createlang plpython template1

этого явно мало... должно быть что-то еще.

> Более подробно можно почитать здесь http://www.postgresql.org/docs/8.2/interactive/xplang-install.html

читал. пример там для plsql вроде как живой. однако питон прикрутить таким образом не получается.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

>> Зачем явно задавать pl_handler (тем более, что такой функции просто нет)? > это я уже понял :). а какая есть?

Насколько я помню, не нужно вообще явно указывать имя функции.

>> По идее, должно быть достаточно createlang plpython template1

>этого явно мало... должно быть что-то еще.

Если PostgreSQL и его языковые компоненты установлены правильно, то этого достаточно.

Собственно, в неправильной установке особых сомнений нет хотя бы потому, что libdir указывается куда-то не туда. Нужно либо аккуратно разобраться в происходящем (помочь это сделать через конференцию довольно затруднительно), либо поставить PostgreSQL заново из согласующихся друг с другом пакетов.

anonymous
()
Ответ на: комментарий от anonymous

anonymous (*) (05.06.2007 11:16:47) совершенно прав

anonymous
()
Ответ на: комментарий от anonymous

> Если PostgreSQL и его языковые компоненты установлены правильно, то этого достаточно.

языковые компоненты, на сколько я понял, собираются вместе с ним. указывается это опциями --with-python, например. у меня же этого явно нет. собсно вопрос в том, как это дело добавить, не пересобирая питон :)

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

>у меня же этого явно нет

Что значит "нет"?

Если бы PostgreSQL в Вашем дистрибутиве был собран без --with-python, то и соответствующего пакета не было бы. Точнее говоря, в нем бы не было питона, потому что пакет общий.

anonymous
()
Ответ на: комментарий от anonymous

> Если бы PostgreSQL в Вашем дистрибутиве был собран без --with-python, то и соответствующего пакета не было бы. Точнее говоря, в нем бы не было питона, потому что пакет общий.

питон у меня отдельно стоит, постгрес отдельно. я спрашиваю -- как слить воедино? :)

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

друг, бросай курить план.

зайди в БД через psql и напиши:
CREATE LANGUAGE plpython;

Сообщи нам о результатах.

anonymous
()
Ответ на: комментарий от anonymous

[mpk3@cards rastafarra]$ pg_config --configure '--build=i386-redhat-linux' '--host=i386-redhat-linux' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-rpath' '--with-perl' '--with-tcl' '--with-tclconfig=/usr/lib' '--with-python' '--with-openssl' '--with-pam' '--with-krb5' '--enable-nls' '--enable-thread-safety' '--sysconfdir=/etc/sysconfig/pgsql' '--datadir=/usr/share/pgsql' '--with-docdir=/usr/share/doc' 'CFLAGS=-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -m32 -march=i386 -mtune=pentium4 -fasynchronous-unwind-tables' 'build_alias=i386-redhat-linux' 'host_alias=i386-redhat-linux' 'target_alias=i386-redhat-linux-gnu'

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от anonymous

> Дальнейшие комментарии требуются или все понятно?

Вы только не стесняйтесь: коль скоро почти весь день прожит под знаком Вашего питона, было бы как-то обидно не довести дело до успешного завершения.

anonymous
()
Ответ на: комментарий от anonymous

требуются, как это не странно.

CREATE LANGUAGE plpython;

такая конструкция меня материт последними словами, прям даже не знаю что делать...

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

Посмотрите, из каких пакетов состоит PostgreSQL в Вашем дистрибутиве. Не на машине, а именно в дистрибутиве.

Установите недостающие (кажется, в название входит слово lang) и повторите Ваши эксперименты.

anonymous
()
Ответ на: комментарий от anonymous

... и не нужно подсовывать команде CREATE LANG библиотеку настоящего питона - добра от этого не будет ;)

anonymous
()
Ответ на: комментарий от anonymous

>требуются, как это не странно. >CREATE LANGUAGE plpython; >такая конструкция меня материт последними словами, прям даже не знаю что делать...

Для начала сообщить нам, что именно говорит PostgreSQL.

anonymous
()
Ответ на: комментарий от Rastafarra

вы это в psql пишите ? приведите весь листинг.

anonymous
()
Ответ на: комментарий от Rastafarra

Хватит изображать идиота. Поставь rpm, входящий в состав дистрибутива, и содержащий нужную библиотеку. То, что ты нашел в /usr/lib, таковой не является - постгресу нужен специальный врапер.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.