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 super-utilisateurs 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 la commande CREATE EXTENSION
, par exemple
CREATE EXTENSION pltcl
ou
CREATE EXTENSION pltclu
.