PostgreSQL结构函数表示return一个查询

PostgreSQL structure of function that return a query

给定一个 return 查询的 PostgreSQL 函数:

CREATE OR REPLACE FUNCTION word_frequency(_max_tokens int)
  RETURNS TABLE (
    txt   text   -- visible as OUT parameter inside and outside function
  , cnt   bigint
  , ratio bigint) AS
$func$
BEGIN
   RETURN QUERY
   SELECT t.txt
        , count(*) AS cnt  -- column alias only visible inside
        , (count(*) * 100) / _max_tokens  -- I added brackets
   FROM  (
      SELECT t.txt
      FROM   token t
      WHERE  t.chartype = 'ALPHABETIC'
      LIMIT  _max_tokens
      ) t
   GROUP  BY t.txt
   ORDER  BY cnt DESC;  -- note the potential ambiguity 
END
$func$  LANGUAGE plpgsql;

如何检索此函数的结构?我的意思是,我知道此函数将 return txtcntratio 列,但我如何查询 return 这些列名字?我试图在 information_schema 架构中找到这些列名称,但找不到。

这个假设查询的预期结果是这样的:

3 results found:
---------------------------------
?column_name?  |  ?function_name?
---------------------------------
txt                word_frequency
cnt                word_frequency
ratio              word_frequency

此信息存储在pg_proc

SELECT unnest(p.proargnames) as column_name,
       p.proname as function_name
FROM pg_proc p 
   JOIN pg_namespace n ON p.pronamespace = n.oid 
WHERE n.nspname = 'public' 
  AND p.proname = 'word_frequency'

根据a_horse_with_no_name的回答,我得出了这个最终版本:

SELECT
  column_name,
  function_name
FROM
(
  SELECT 
    unnest(p.proargnames) as column_name,
    unnest(p.proargmodes) as column_type,
    p.proname as function_name
FROM pg_proc p 
   JOIN pg_namespace n ON p.pronamespace = n.oid  
WHERE n.nspname = 'public' 
  AND p.proname = 'my_function'
) as temp_table
WHERE column_type = 't';

我只是省略了参数,只返回函数 returns