В PostgreSQL 8.4.x:
SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types",
CASE
WHEN p.proisagg THEN 'agg'
WHEN p.proiswindow THEN 'window'
WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN 'trigger'
ELSE 'normal'
END as "Type"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
ORDER BY 1, 2, 4;
Находит, запустив psql с параметром -E (показать скрытые запросы), а затем выполнив команду \ df.
Также "публичная "схема в PostgreSQL просто названа таким образом.Это не имеет особого значения.Это плохое имя.То, на что вы должны обращать внимание, это роль «PUBLIC» (все заглавные буквы).Хотя для таблиц автоматически не назначается роль PUBLIC, мой опыт показывает, что PUBLIC автоматически получает разрешение на выполнение функций, определенных с помощью SECURITY INVOKER.