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 ,但我不想为我的整个 session 禁用 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 查询窗口中运行上面的代码片段,“这不应该出现”出现在消息选项卡中。怎么了?
更新 2:我也试过 log_min_messages万一。相同的行为。
最佳答案
我在 postgresql-general 邮件列表上询问并收到了 an informative answer : INFO
与 NOTICE
的区别在于 INFO
没有级别:它旨在始终通过,无论 client_min_messages
或任何其他设置,来自您专门为 INFO 输出调用的函数。所以在我的例子中,合适的做法是从我的函数中只输出 NOTICE
。
关于postgresql - 尽管之前有 "SET client_min_messages TO WARNING"信息输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238209/