尽管“SET client_min_messages TO WARNING”之前的INFO输出

时间:2014-01-20 15:45:59

标签: postgresql logging session-variables error-logging postgresql-9.0

在CentOS 6.5上的postgresql-9.0.15。我有一个输出INFO消息的plperlu函数。我想在测试期间抑制它(使用psql,其行为如下),但我甚至无法从pgAdminIII(win2003的1.18.1)查询窗口中执行此操作:

SET client_min_messages TO WARNING;
select my_info_outputting_function('lalala')

我运行它并查看“消息”标签,这是我的INFO消息。

(这可能与How to suppress INFO messages when running psql scripts类似,但我不想为我的整个会话禁用INFO消息,只是其中的一部分,然后将最小值设置为NOTICE。)

上面的代码片段我做错了什么? client_min_messages不适用于pl / perlu函数吗?

更新:经过进一步调查,即使使用plpgsql函数,它似乎也会发生,而不仅仅是plperlu函数:

create or replace function my_info_outputting_function() returns void as $$
begin
    raise INFO 'this should not appear...';
    return;
end;
$$ language plpgsql;
SET client_min_messages TO WARNING;
select my_info_outputting_function();

我在pgAdminIII查询窗口中运行上面的代码段,并且“消息”选项卡中会出现“这不应该出现”。 Quoi?

更新2:我还尝试log_min_messages以防万一。同样的行为。

1 个答案:

答案 0 :(得分:15)

我在postgresql-general邮件列表上询问并收到an informative answerINFONOTICE的区别在于INFO没有级别:它始终是为了从你专门为INFO输出调用的函数中,无论client_min_messages还是其他任何设置,都要经历。所以在我的情况下,适当的事情是只从我的函数输出NOTICE