我有一个 prolang 为 16386 的过程,它不对应于 pg_lang 中的任何条目;我还可以在哪些其他可能的地方查找这是什么语言?
我应该使用哪些其他策略来查找语言?
最佳答案
如果语言存在:
最简单的方法是使用 psql 登录并键入:
\df+ function_name
这将列出所有具有相同名称的函数、它们的参数、模式、源代码和语言。
可以直接查看系统目录(pg_proc 和 pg_language),但这里的一个问题是它们有时会在主要版本之间发生变化,因此最好依赖与相同主要版本绑定(bind)的 psql 信息函数你的数据库服务器。
如果语言不存在:
select * from pg_proc where ....
为您提供有关该语言的所有信息(其源代码、链接器符号等)
从那里你应该能够找出它是什么语言。 16386 不是内置的之一,因此它一定是用户定义的,您将不得不进行一些挖掘。
例如,指向 .jar 的内容会建议使用 pl/java。源代码可能会被识别为一种语言(您应该能够看到它是 pl/ruby 还是类似语言)。
一种可能是升级失败和不再维护的语言处理程序造成的。
关于sql - 在没有 pg_lang 条目的情况下在 Postgresql 中查找存储过程语言的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671139/