Стратегии поиска языка хранимой процедуры в Postgresql без записи pg_lang - PullRequest
1 голос
/ 20 апреля 2010

У меня есть процедура с пролангом 16386, который не соответствует ни одной из записей в pg_lang; в каких еще возможных местах я могу найти этот язык?

Какие еще стратегии я должен использовать, чтобы найти язык?

1 Ответ

0 голосов
/ 11 марта 2013

Если язык существует:

Самый простой подход - войти в систему с помощью psql и набрать:

\df+ function_name

В этом списке будут перечислены все функции с одинаковыми именами, их аргументы, схемы, исходный код и языки.

Можно было бы посмотреть непосредственно в системных каталогах (pg_proc и pg_language), но одна проблема здесь заключается в том, что они иногда меняются между основными версиями, поэтому, вероятно, лучше полагаться на информационные функции psql, которые связаны с той же основной версией ваш дб сервер.

Если языка не существует:

select * from pg_proc where .... 

дает вам все о языке (его исходный код, символ компоновщика и т. Д.)

Исходя из этого, вы сможете узнать, на каком языке это написано. 16386 не является одним из встроенных, поэтому он должен быть определен пользователем, и вам придется немного покопаться.

Например, что-то, указывающее на .jar, может предложить pl / java. Исходный код, вероятно, будет идентифицирован как язык (вы должны увидеть, является ли он pl / ruby ​​или подобным).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...