PostgreSQLLa base de données la plus sophistiquée au monde.

17.14. Options personnalisées

Cette fonctionnalité a été conçue pour permettre l'ajout d'options habituellement inconnues de PostgreSQL™ car ajoutées par des modules supplémentaires (comme les langages de procédures). Ceci autorise les modules à être configuré de la façon standard.

custom_variable_classes (string)

Cette variable spécifie un ou plusieurs noms de classe à utiliser par des variables personnalisées, de la forme d'une liste séparée par des virgules. Une variable personnalisée est une variable habituellement inconnue de PostgreSQL™ lui-même mais utilisée par certains modules supplémentaires. Ces variables doivent avoir des noms consistant en un nom de classe, un point et un nom de variable. custom_variable_classes spécifie tous les noms de classe utilisés dans une installation particulière. Cette option est disponible au lancement du serveur et dans le fichier de configuration postgresql.conf.

La difficulté avec la configuration de variables personnalisées dans postgresql.conf est que le fichier doit être lu avant que les modules supplémentaires ne soient chargés et, du coup, les variables seraient habituellement rejetées comme étant inconnues. Lorsque custom_variable_classes est initialisé, le serveur acceptera les définitions de variables arbitraires à l'intérieur de chaque classe spécifiée. Ces variables sont traitées comme des emplacements vides et n'auront 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 suivant les définitions et émet des messages d'avertissement pour tout emplacement restant dans sa classe (qui seraient à priori des noms de variables mal saisis).

Voici un exemple de ce que pourrait contenir postgresql.conf en utilisant des variables personnalisées :

custom_variable_classes = 'plr,plperl'
plr.path = '/usr/lib/R'
plperl.use_strict = true
plruby.use_strict = true        # generates error, unknown class name