如何使用information_schema上的查询检索函数的search_path集?

时间:2017-09-27 10:34:46

标签: postgresql

对于每个模式,我都有多个函数,以这种方式在创建时定义search_path

CREATE OR REPLACE FUNCTION the_schema.update_complete_url(updateLang bigint) RETURNS boolean AS $$
DECLARE
   tree_row record;
BEGIN
   // body of function
END
$$ LANGUAGE plpgsql SET search_path=the_schema,public,pg_temp;

search_path已定义,因此我不需要在函数体中使用the_schema.为每个表添加前缀,这样我就可以更轻松地维护这些函数。

现在我有一个维护/迁移脚本,用于测试某些功能是否退出并具有正确的设置。检索函数本身不是问题,因为它看起来像这样:

SELECT * FROM "information_schema"."routines" 
    WHERE "routine_type"='FUNCTION' AND "specific_schema"='the_schema';

使用"information_schema"."parameters"查询参数也没问题,但SET search_path=the_schema,public,pg_temp部分存储在哪里?

1 个答案:

答案 0 :(得分:2)

AFAIK在info_schema中不可用。

你可以通过pg_catalog获得它,但它具体是PostgreSQL:

select unnest(proconfig) from pg_proc where proname = 'function_name';