43.9. 实用函数

plpy模块也提供了函数plpy.debug(msg)plpy.log(msg)plpy.info(msg)plpy.notice(msg)plpy.warning(msg)plpy.error(msg)plpy.fatal(msg)plpy.errorplpy.fatal实际上抛出了一个Python异常,如果没有捕获这个异常, 则会传播到调用的查询,导致当前事务或者子事务退出。raise plpy.Error(msg)raise plpy.Fatal(msg)分别等效于调用plpy.errorplpy.fatal。其他函数只生成不同优先级的消息。特定优先级的消息是被报告给客户端、 写到服务器日志、还是两件事都做,是由log_min_messagesclient_min_messages配置参数控制的。参阅第 18 章获取更多信息。

另一个实用函数集是plpy.quote_literal(string)plpy.quote_nullable(string)plpy.quote_ident(string)。 它们相当于第 9.4 节中描述的内建引用函数。 它们在构造ad-hoc查询的时候是有用的。一个来自例 40-1 的动态SQL的PL/Python等效将是:

plpy.execute("UPDATE tbl SET %s = %s WHERE key = %s" % (
    plpy.quote_ident(colname),
    plpy.quote_nullable(newvalue),
    plpy.quote_literal(keyvalue)))