PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 17.2 » Internes » Vues système » pg_settings

52.24. pg_settings #

La vue pg_settings fournit un accès aux paramètres d'exécution du serveur. C'est essentiellement une interface alternative aux commandes SHOW et SET. Elle fournit aussi un accès à certaines informations des paramètres qui ne sont pas directement accessibles avec SHOW, telles que les valeurs minimales et maximales.

Tableau 52.24. Colonnes de pg_settings

Type

Description

name text

Nom du paramètre d'exécution

setting text

Valeur actuelle du paramètre

unit text

Unité implicite du paramètre

category text

Groupe logique du paramètre

short_desc text

Description brève du paramètre

extra_desc text

Information supplémentaire, plus détaillée, sur le paramètre

context text

Contexte requis pour positionner la valeur du paramètre (voir ci-dessous)

vartype text

Type du paramètre (bool, enum, integer, real ou string)

source text

Source de la valeur du paramètre actuel

min_val text

Valeur minimale autorisée du paramètre (NULL pour les valeurs non numériques)

max_val text

Valeur maximale autorisée du paramètre (NULL pour les valeurs non numériques)

enumvals text[]

Valeurs autorisées pour un paramètre enum (NULL pour les valeurs non enum)

boot_val text

Valeur de paramètre prise au démarrage du serveur si le paramètre n'est pas positionné d'une autre façon

reset_val text

Valeur à laquelle RESET ramènerait le paramètre dans la session courante

sourcefile text

Fichier de configuration dans lequel ce fichier a été positionné (NULL pour les valeurs positionnées ailleurs que dans un fichier de configuration, examiné par un utilisateur qui n'est ni un superutilisateur ni un membre de pg_read_all_settings) ; utile lors de l'utilisation de directives include dans les fichiers de configuration

sourceline int4

Numéro de ligne du fichier de configuration à laquelle cette valeur a été positionnée (NULL pour des valeurs positionnées ailleurs que dans un fichier de configuration, ou quand examiné par un utilisateur qui n'est ni superutilisateur ni un membre de pg_read_all_settings).

pending_restart bool

true si la valeur a été modifiée dans le fichier de configuration mais a besoin d'un redémarrage ; ou false autrement.


Il existe différentes valeurs de context. Les voici, classées dans l'ordre de difficulté décroissante pour la modification d'un paramètre :

internal

Ces paramètres ne peuvent pas être modifiés directement ; ils reflètent des valeurs internes. Certaines sont modifiables en compilant le serveur avec des options différentes pour l'étape de configuration, ou en changeant des options lors de l'étape du initdb.

postmaster

Ces paramètres sont seulement appliqués au démarrage du serveur, donc toute modification nécessite un redémarrage du serveur. Les valeurs sont typiquement conservées dans le fichier postgresql.conf ou passées sur la ligne de commande lors du lancement du serveur. Bien sûr, tout paramètre dont la colonne context est inférieure peut aussi être configuré au démarrage du serveur.

sighup

Les modifications sur ces paramètres peuvent se faire dans le fichier postgresql.conf sans avoir à redémarrer le serveur. L'envoi d'un signal SIGHUP au processus père (historiquement appelé postmaster) le forcera à relire le fichier postgresql.conf et à appliquer les modifications. Ce processus enverra aussi le signal SIGHUP aux processus fils pour qu'ils tiennent compte des nouvelles valeurs.

superuser-backend

Les modifications de ces réglages peuvent être effectuées dans postgresql.conf sans redémarrer le serveur. Ils peuvent également être positionnés pour une session en particulier dans le paquet réseau de demande de connexion (par exemple, via la variable d'environnement PGOPTIONS de libpq), mais seulement si l'utilisateur se connectant est superutilisateur ou s'est vu donné les droits SET appropriés. Cependant, ces réglages ne changent jamais dans une session une fois qu'elle a débutée. Si vous les modifiez dans postgresql.conf, envoyez un signal SIGHUP à postmaster pour le forcer à relire postgresql.conf. Les nouvelles valeurs n'affecteront que les sessions ouvertes après cette relecture.

backend

Les modifications sur ces paramètres peuvent se faire dans le fichier postgresql.conf sans avoir à redémarrer le serveur ; ils peuvent aussi être configurés pour une session particulière dans le paquet de demande de connexion (par exemple, via la variable d'environnement PGOPTIONS gérée par la bibliothèque libpq) ; tous les utilisateurs peuvent faire de telles modifications pour leur session. Néanmoins, ces modifications ne changent jamais une fois que la session a démarré. Si vous les changez dans le fichier postgresql.conf, envoyez un signal SIGHUP à postmaster car ça le forcera à relire le fichier postgresql.conf. Les nouvelles valeurs affecteront seulement les sessions lancées après la relecture de la configuration.

superuser

Ces paramètres sont configurables partir du fichier postgresql.conf ou à l'intérieur d'une session via la commande SET ; mais seuls les superutilisateurs et les utilisateurs qui ont les droits SET appropriés peuvent les modifier avec SET. Les modifications apportées dans le fichier postgresql.conf affecteront aussi les sessions existantes si aucune valeur locale à la session n'a été établie avec une commande SET.

user

Ces paramètres peuvent être configurés à partir du fichier postgresql.conf ou à l'intérieur d'une session via la commande SET. Tout utilisateur est autorisé à modifier la valeur sur sa session. les modifi Any user is allowed to change his session-local value. Les modifications apportées dans le fichier postgresql.conf affecteront aussi les sessions existantes si aucune valeur locale à la session n'a été établie avec une commande SET.

Voir Section 19.1 pour plus d'informations sur les différentes façons de modifier ces paramètres.

La vue pg_settings n'accepte ni insertion ni suppression mais peut être mise à jour. Une requête UPDATE appliquée à une ligne de pg_settings est équivalente à exécuter la commande SET sur ce paramètre. Le changement affecte uniquement la valeur utilisée par la session en cours. Si un UPDATE est lancé à l'intérieur d'une transaction annulée par la suite, les effets de la commande UPDATE disparaissent à l'annulation de la transaction. Lorsque la transaction est validée, les effets persistent jusqu'à la fin de la session, à moins qu'un autre UPDATE ou SET ne modifie la valeur.

Cette vue n'affiche pas les options personnalisées sauf si le module qui les définit a été chargé par le processus exécutant la requête (via une mention dans shared_preload_libraries, un appel à la fonction C dans l'extension, ou la commande LOAD). Par exemple, comme les modules d'archivage sont normalement chargés seulement par le processus d'archivage et non pas par les sessions standards, cette vue n'affichera pas toute option personnalisée définie par ces modules sauf si une action spéciale est réalisée pour les charger dans le processus exécutant la requête.