postgresql - 尽管之前有 "SET client_min_messages TO WARNING"信息输出

标签 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 ,但我不想为我的整个 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 : INFONOTICE 的区别在于 INFO 没有级别:它旨在始终通过,无论 client_min_messages 或任何其他设置,来自您专门为 INFO 输出调用的函数。所以在我的例子中,合适的做法是从我的函数中只输出 NOTICE

关于postgresql - 尽管之前有 "SET client_min_messages TO WARNING"信息输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238209/

相关文章:

PostgreSQL 服务器启动失败,无法创建锁定文件 : permission denied

postgresql - 重命名 postgresql 数据库中的列名

sql - PostgreSQL 错误 : relation "products" does not exist

ruby-on-rails - 获取 Rails 中最后的相关记录

asp.net-mvc - Azure 上的 ASP.NET MVC 5 应用程序不会记录异常

使用 Logcat 和模拟器进行 Android 调试。可能吗?

logging - Kafka - 多个生产者写入相同的主题和消息顺序很重要

java - 将 HashMap 存储在 java webapp session 中

c# - 将 session 变量转换为 html

node.js - 如果我在嵌套查询函数中设置它,为什么我的 express-session 变量没有被保存?