检查plpgsql中的当前日志记录级别

时间:2013-08-11 14:51:43

标签: postgresql plpgsql

PostgreSQL 9.2中一个性能关键的plpgsql函数有一个“RAISE DEBUG”语句,它为一个参数调用一个昂贵的函数,即。

RAISE DEBUG 'Details: %', expensive_function(...);

即使禁用DEBUG日志记录,似乎也会调用该函数。有没有办法可以在IF语句中检查当前日志记录级别(log_min_messages和client_min_messages),或者只在需要时才能调用该函数?

1 个答案:

答案 0 :(得分:2)

您可以使用SHOW将调试级别检索到变量中,然后将其作为一段文本进行测试。
plpgsql中的示例:

DECLARE
  dbg_level text;
BEGIN
  SHOW client_min_messages INTO dbg_level;
  IF (dbg_level ilike 'debug%') THEN
    RAISE DEBUG 'details: %', expensive_function();
  END IF;
END;