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?
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: