Chapitre 38. PL/Tcl - Langage de procédures Tcl

Table des matières
38.1. Aperçu
38.2. Fonctions et arguments PL/Tcl
38.3. Valeurs des données avec PL/Tcl
38.4. Données globales avec PL/Tcl
38.5. Accès à la base de données depuis PL/Tcl
38.6. Procédures pour déclencheurs en PL/Tcl
38.7. Les modules et la commande unknown
38.8. Noms de procédure Tcl

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.

La bonne restriction est que tout est exécuté dans un interpréteur Tcl sûr. En plus de l'ensemble limité de commandes d'un Tcl sûr, seules quelques commandes sont disponibles pour accéder à la base de données via SPI et pour envoyer des messages via elog(). Il n'existe aucun moyen d'accéder aux valeurs internes du serveur de bases de données ou pour gagner un accès niveau système d'exploitation avec les droits du processus serveur PostgreSQL comme les fonctions C vous le permettent. Du coup, un utilisateur non privilégié de la base de données pourrait avoir le droit d'utiliser ce langage.

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.

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/Tk 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.