Documentation PostgreSQL 9.1.24 > Administration du serveur > Configuration du serveur > Options personnalisées | |
Options préconfigurées | Options pour les développeurs |
Cette fonctionnalité a été conçue pour permettre l'ajout de paramètres habituellement inconnus de PostgreSQL™ par des modules complémentaires (comme les langages procéduraux). Cela permet de configurer ces modules de façon standard.
Cette variable indique les noms de classe à utiliser pour les variables personnalisées, sous la forme d'une liste séparée par des virgules. Une variable personnalisée est une variable habituellement inconnue de PostgreSQL™ mais utilisée par certains modules complémentaires. Les noms de ces variables doivent être constitués d'un nom de classe, d'un point et d'un nom de variable. custom_variable_classes indique tous les noms de classe utilisés dans une installation particulière. Ce paramètre ne peut être configuré que dans le fichier postgresql.conf ou indiqué sur la ligne de commande.
La difficulté de configurer des variables personnalisées dans postgresql.conf se situe dans le fait que le fichier doit être lu avant que les modules complémentaires ne soient chargés. De ce fait, les variables sont habituellement rejetées parce qu'inconnues. Lorsque custom_variable_classes est initialisé, le serveur accepte les définitions de variables arbitraires à l'intérieur de chaque classe indiquée. Ces variables sont traitées comme des emplacements et n'ont aucune fonction tant que le module qui les définit n'est pas chargé. Quand un module d'une classe spécifique est chargé, il ajoute les bonnes définitions de variables pour son nom de classe, convertit les valeurs des emplacements en fonction de leurs définitions et émet des messages d'avertissement pour tout emplacement non reconnu de la classe restant.
Exemple de ce que peut contenir postgresql.conf lorsque les variables personnalisées sont utilisées :
custom_variable_classes = 'plpgsql,plperl' plpgsql.variable_conflict = use_variable plperl.use_strict = true plruby.use_strict = true # generates error, unknown class name