Utility Functions

The plpy module also provides the functions plpy.debug( msg ) , plpy.log( msg ) , plpy.info( msg ) , plpy.notice( msg ) , plpy.warning( msg ) , plpy.error( msg ) , and plpy.fatal( msg ) . plpy.error and plpy.fatal actually raise a Python exception which, if uncaught, propagates out to the calling query, causing the current transaction or subtransaction to be aborted. raise plpy.Error( msg ) and raise plpy.Fatal( msg ) are equivalent to calling plpy.error and plpy.fatal , respectively. The other functions only generate messages of different priority levels. Whether messages of a particular priority are reported to the client, written to the server log, or both is controlled by the log_min_messages and client_min_messages configuration variables. See Chapter 18 for more information.

Another set of utility functions are plpy.quote_literal( string ) , plpy.quote_nullable( string ) , and plpy.quote_ident( string ) . They are equivalent to the built-in quoting functions described in Section 9.4 . They are useful when constructing ad-hoc queries. A PL/Python equivalent of dynamic SQL from Example 40-1 would be:

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