PostgreSQL 9.2中一个性能关键的plpgsql函数有一个“RAISE DEBUG”语句,它为一个参数调用一个昂贵的函数,即。
RAISE DEBUG 'Details: %', expensive_function(...);
即使禁用DEBUG日志记录,似乎也会调用该函数。有没有办法可以在IF语句中检查当前日志记录级别(log_min_messages和client_min_messages),或者只在需要时才能调用该函数?
答案 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;