36.7. Les modules et la commande unknown

PL/Tcl dispose du support de chargement automatique de code Tcl lorsqu'il est utilis�. Il reconna�t une table sp�ciale, pltcl_modules, qui est pr�sum�e contenir les modules de code Tcl. Si cette table existe, le module unknown est r�cup�r� de la table et charg� imm�diatement dans l'interpr�teur Tcl avant la premi�re ex�cution d'une fonction PL/Tcl dans une session. (Ceci survient s�par�ment pour PL/Tcl et PL/TclU, si les deux sont utilis�s, car des interpr�teurs s�par�s sont utilis�s pour les deux langages.)

Alors que le module unknown pourrait r�ellement contenir tout script d'initialisation dont vous avez besoin, il d�finit normalement une proc�dure Tcl unknown qui est appel�e lorsque Tcl ne reconna�t pas le nom de la proc�dure appel�e. La version standard de PL/Tcl essaie de trouver un module dans pltcl_modules qui d�finira la proc�dure requis. Si une proc�dure est trouv�e, elle est charg�e dans l'interpr�teur, puis l'ex�cution est permise avec l'appel original de la proc�dure. Une deuxi�me table pltcl_modfuncs fournit un index des fonctions et des modules qui les d�finissent, de fa�on � ce que la recherche soit rapide.

La distribution PostgreSQL inclut les scripts de support pour maintenir ces tables : pltcl_loadmod, pltcl_listmod, pltcl_delmod ainsi que le source pour le module standard unknown dans share/unknown.pltcl. Ce module doit �tre chargeable dans chaque base de donn�es initialement pour supporter le m�canisme de chargement automatique.

Les tables pltcl_modules et pltcl_modfuncs doivent �tre lisibles par tous mais il est conseill� de les laisser modifiables uniquement par le propri�taire, administrateur de la base de donn�es. Pour des raisons de s�curit�, PL/Tcl ignorera pltcl_modules (et donc n'essaiera pas de charger le module unknown) sauf s'il appartient � un superutilisateur. Cependant, les droits de modification sur cette table peuvent �tre donn�es � d'autres utilisateurs si vous avez suffisamment confiance en eux.