2010-04-19 52 views
1

我有一個prolang爲16386的過程,它不對應於pg_lang中的任何條目;我可以找什麼其他可能的地方來找到這是什麼語言?在沒有pg_lang條目的情況下在Postgresql中查找存儲過程語言的策略

我應該使用哪些其他策略來查找語言?

+1

你的意思是[「pg_language」](http://www.postgresql.org/docs/current/static/catalog-pg-language.html)? – 2010-04-19 23:29:10

+3

您確定該語言不存在嗎?當語言不存在時,您不能依賴它的功能。所以你必須有一個損壞的數據庫(從備份中恢復)或者查看錯誤的地方。 SELECT oid,* FROM pg_language; – 2010-04-20 08:33:18

回答

0

如果語言存在:

最簡單的方法是用psql和類型登錄:

\df+ function_name 

這將列出所有的函數具有相同的名字,他們的論點,模式,源代碼和語言。

可以直接在系統目錄(pg_proc和pg_language)中查看,但這裏有一個問題是它們有時會在主版本之間進行更改,所以最好依賴與相同主版本綁定的psql info函數作爲你的db服務器。

如果語言不存在:

select * from pg_proc where .... 

爲您提供有關語言的一切(它的源代碼,鏈接符號等)

從你應該能夠找出語言它是。 16386不是內置的,所以它一定是用戶定義的,你將不得不做一些挖掘工作。

例如,指向.jar的東西會提示pl/java。源代碼可能會被識別爲一種語言(您應該能夠看到它是否是pl/ruby​​等)。

一種可能性是,這可能來自僵化的升級和不再維護的語言處理程序。

相關問題