减少 plpgsql 中的麻烦通知



我有一个使用临时表的函数,如果存在,则必须删除该函数。

drop table if exists t_xy;
create temp table t_xy on commit drop as select ...;

随后,我在视图中使用此函数。在选择过程中多次调用该函数。我喜欢使用"引发通知"命令,因为它几乎是报告函数中任何变量以进行调试的唯一可靠方法。问题是我必须在大量不需要的行中搜索它们,例如:

注意:表"t_xy"不存在,跳过上下文:SQL 语句"如果存在t_xy则删除表PL/pgSQL 函数 f_pending_operations(uuid( line5 in SQL 命令

有没有办法抑制此类不是由raise notice命令生成的通知,而是通过drop table if exists或删除其他对象生成的通知?将"client_min_messages"选项设置为"调试"会使问题变得更糟。

您可以使用本地设置为 client_min_messages 的任何命令将通知从客户端静音:

SET LOCAL client_min_messages = warning;  -- "debug" would have opposite effect
DROP TABLE if exists t_xy;
-- RESET client_min_messages;

如果您不发布RESET则实际上使交易其余部分的通知保持沉默。手册:

SET LOCAL的影响仅持续到当前事务结束

或者,您可以在从命令行的调用中设置client_min_messages(在会话期间(:

  • 如何在运行 psql 脚本时禁止显示 INFO 消息

您还可以使用 GUC 参数降低消息的详细程度:

set log_error_verbosity='terse';

当然可以在功能级别设置。

最新更新