PL/Tcl est un langage de procédures chargeable pour le système de
bases de données PostgreSQL™,
activant l'utilisation du
langage
Tcl
pour l'écriture de fonctions de procédures déclencheurs.
38.1. Aperçu
PL/Tcl offre un grand nombre de fonctionnalités qu'un codeur de
fonctions dispose avec le langage C, avec quelques restrictions et
couplé à de puissantes bibliothèques de traitement de chaînes de
caractères disponibles pour Tcl.
Une
bonne
restriction est
que tout est exécuté dans le contexte de l'interpréteur Tcl. En
plus de l'ensemble sûr de commandes limitées de Tcl, seules
quelques commandes sont disponibles pour accéder à la base via SPI
et pour envoyer des messages via elog().
PL/Tcl ne fournit aucun moyen pour accèder aux internes du serveur
de bases ou pour gagner un accès au niveau système d'exploitation
avec les droits du processus serveur PostgreSQL™ comme le fait une fonction
C. Du coup, les utilisateurs de la base, sans droits, peuvent
utiliser ce langage en toute confiance ; il ne leur donne pas une
autorité illimitée.
L'autre restriction d'implémentation est que les fonctions Tcl ne
peuvent pas être utilisées pour créer des fonctions
d'entrées/sorties pour les nouveaux types de données.
Quelques fois, il est préférable d'écrire des fonctions Tcl non
restreintes par le Tcl sûr. Par exemple, vous pourriez vouloir une
fonction Tcl pour envoyer un courrier électronique. Pour gérer ces
cas, il existe une variante de PL/Tcl appelée PL/TclU (Tcl non accrédité). C'est exactement le
même langage sauf qu'un interpréteur Tcl complet est utilisé.
Si PL/TclU est utilisé, il doit être installé
comme langage de procédures non accrédité
de façon à ce
que seuls les superutilisateurs de la base de données puissent
créer des fonctions avec lui. Le codeur d'une fonction PL/TclU doit faire attention au fait que la
fonction ne pourra pas être utilisé pour faire autre chose que son
but initial, car il sera possible de faire tout ce qu'un
administrateur de la base de données peut faire.
Le code de l'objet partagé pour les gestionnaires d'appel
PL/Tcl et PL/TclU est automatiquement construit et
installé dans le répertoire des bibliothèques de PostgreSQL™ si le support de Tcl est
spécifié dans l'étape de configuration de la procédure
d'installation. Pour installer PL/Tcl et/ou PL/TclU dans une base de données particulière,
utilisez le programme
createlang
, par exemple
createlang pltcl
nom_base
ou createlang pltclu
nom_base
.