postgresql extracting function source

不羁的心 提交于 2019-12-31 04:48:08

问题


Need to extract the source of a PostgreSQL function using SQL.

I am seeing this odd behavior with one of the function, all other functions (around 200+ ) work absolutely fine.

When I run the following statement, it works:

select prosrc  from pg_proc where proname= 'accounts_count';

However when I run the following, it returns an empty string:

select  routine_definition
from    information_schema.routines
where   specific_name = 'accounts_count_66243'

PostgreSQL version 8.3. I have tried using both pgAdmin III and psql.

Not a show stopper, but would be useful to know why this might be.

Any ideas anyone?


回答1:


if you look on definition of information_schema.routines, then you can find following filter:

FROM pg_namespace n, pg_proc p, pg_language l, pg_type t, pg_namespace nt
 WHERE n.oid = p.pronamespace AND p.prolang = l.oid AND p.prorettype = t.oid 
   AND t.typnamespace = nt.oid AND (pg_has_role(p.proowner, 'USAGE'::text) 
    OR has_function_privilege(p.oid, 'EXECUTE'::text));

so my theory:

  • there are some issue in rights and ownership of related function (probably) - try to use different account for validation of this theory (postgres is best)


来源:https://stackoverflow.com/questions/12656205/postgresql-extracting-function-source

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!