在没有pg_lang条目的情况下在Postgresql中查找存储过程语言的策略

时间:2010-04-19 21:43:21

标签: sql postgresql schema

我有一个程序,其prolang为16386,与pg_lang中的任何条目都不对应;还有什么其他可能的地方可以找到这是什么语言?

我应该使用哪些其他策略来查找语言?

1 个答案:

答案 0 :(得分:0)

如果语言存在:

最简单的方法是使用psql登录并输入:

\df+ function_name

这将列出具有相同名称,参数,模式,源代码和语言的所有函数。

可以直接查看系统目录(pg_proc和pg_language),但这里的一个问题是主要版本之间有时会发生这些变化,因此最好依赖于与同一主要版本相关的psql信息函数。你的数据库服务器。

如果该语言不存在:

select * from pg_proc where .... 

为您提供有关语言的一切(源代码,链接器符号等)

从那以后你应该能够找出它是什么语言。 16386不是内置的,因此它必须是用户定义的,你必须进行一些挖掘。

例如,指向.jar的东西会建议pl / java。源代码很可能被识别为一种语言(你应该能够看到它是pl / ruby​​之类的东西)。

一种可能性是,这可能来自拙劣的升级和不再维护的语言处理程序。