43.9. Fonctions outils
Le module plpy fournit aussi les
fonctions plpy.debug(msg), plpy.log(msg), plpy.info(msg), plpy.notice(msg), plpy.warning(msg), plpy.error(msg) et plpy.fatal(msg). plpy.error et plpy.fatal("msg") lèvent une exception Python
qui, si non attrapée, se propage à la requête appelante causant
l'annulation de la transaction ou sous-transaction en cours.
raise plpy.Error(msg) et raise plpy.Fatal(msg) sont équivalent à
appeler, respectivement, plpy.error
et plpy.fatal. Les autres fonctions
génèrent uniquement des messages de niveaux de priorité
différents. Que les messages d'une priorité particulière soient
reportés au client, écrit dans les journaux du serveur ou les
deux, cette configuration est contrôlée par les variables
log_min_messages
et client_min_messages.
Voir le Chapitre 18,
Configuration du serveur pour plus d'informations.
Voici un autre ensemble de fonctions outils : plpy.quote_literal(string), plpy.quote_nullable(string) et plpy.quote_ident(string). Elles sont
équivalentes aux fonctions internes de mise entre guillemets
décrites dans Section 9.4,
« Fonctions et opérateurs de chaînes ». Elles
sont utiles lors de la construction de requêtes. Un équivalent
PL/Python d'une requête SQL dynamique pour
Exemple 40.1, « Mettre entre guillemets des valeurs
dans des requêtes dynamiques » serait :
plpy.execute("UPDATE tbl SET %s = %s WHERE key = %s" % (
plpy.quote_ident(colname),
plpy.quote_nullable(newvalue),
plpy.quote_literal(keyvalue)))