Les fonctions décrites dans cette section sont utilisées pour obtenir des informations variées sur une installation PostgreSQL.
Tableau 9.67 montre différentes fonctions pour extraire des informations sur les sessions et le systÚme.
En plus des fonctions listées dans cette section, il existe plusieurs fonctions relatives au systÚme de statistiques qui fournissent aussi des informations sur le systÚme. Voir Section 28.2.25 pour plus d'informations.
Tableau 9.67. Fonctions d'information sur la session
Fonction Description |
---|
Renvoie le nom de la base actuelle. (Les bases sont appelées des
« catalogues » dans le standard SQL, donc
|
Renvoie le texte de la requĂȘte en cours d'exĂ©cution telle qu'elle a Ă©tĂ© envoyĂ©e par le client (elle pourrait donc contenir plus d'une requĂȘte). |
Ăquivalent Ă |
Renvoie le nom du premier schéma dans le chemin de recherche (ou une valeur NULL si le chemin de recherche est vide). C'est le schéma qui sera utilisé par toute création de tables ou d'autres objets nommés si un schéma cible n'est pas précisé. |
Renvoie un tableau de noms pour tous les schémas présents dans le
chemin de recherche, dans leur ordre de priorité. (Les éléments dans
le paramĂštre search_path ne correspondant pas Ă
des objets existants et cherchables sont omis.) Si l'argument booléen
vaut |
Renvoie le nom de l'utilisateur dans le contexte d'exécution actuel. |
Renvoie l'adresse IP du client actuel ou |
Renvoie le numéro de port IP du client actuel, ou
|
Renvoie l'adresse IP par laquelle le serveur a accepté la connexion
actuelle, ou |
Renvoie le numéro de port IP par lequel le serveur a accepté la
connexion actuelle, ou |
Renvoie l'identifiant de processus du processus serveur attaché à la session actuelle. |
Renvoie un tableau d'identifiants de processus des sessions bloquant l'accÚs à un verrou pour le processus serveur dont l'identifiant a été donné. Renvoie un tableau vide si aucun processus ne le bloque.
Un processus serveur bloque un autre processus s'il détient un verrou
qui entre en conflit avec la demande de verrou du processus bloqué
(blocage dur) ou s'il est en attente d'un verrou qui rentrerait en
conflit avec la demande de verrou du processus bloqué et est devant
lui dans la queue d'attente (verrou léger). Lors de l'utilisation de
requĂȘtes parallĂ©lisĂ©es, le rĂ©sultat liste toujours les identifiants
des processus visibles du client (autrement dit, le résultat de
Les appels fréquents à cette fonction ont des impacts sur les performances de la base car il est nécessaire d'avoir un accÚs exclusif à l'état partagé du gestionnaire de verrous pour un court moment. |
Renvoie l'horodatage du dernier chargement des fichiers de configuration. Si la session actuelle Ă©tait vivante Ă ce moment, cela sera l'heure quand la session a elle-mĂȘme relu les fichiers de configuration (donc le rĂ©sultat peut lĂ©gĂšrement varier sur les diffĂ©rentes sessions). Sinon c'est le moment oĂč le processus postmater relit les fichiers de configuration. |
Renvoie le chemin du fichier de traces actuellement utilisé par le
collecteur de traces. Le chemin inclut le répertoire log_directory et le nom du fichier de traces individuel. Le
résultat est |
Renvoie l'OID du schéma temporaire de la session en cours, ou zéro si ce schéma n'existe pas (parce que la session n'a pas créé de tables temporaires). |
Renvoie true si l'OID donnĂ© est l'OID du schĂ©ma temporaire d'une autre session. (Ceci peut ĂȘtre utile, par exemple, pour exclure les tables temporaires des autres sessions d'un affichage du catalogue.) |
Renvoie true si l'extension de compilation JIT est
disponible (voir Chapitre 32) et si le paramĂštre de
configuration jit est configurĂ© Ă
|
Renvoie l'ensemble de noms des canaux de notification asynchrone sur lesquels la session actuelle écoute. |
Renvoie la fraction (0â1) de la taille maximale de la queue de notification asynchrone actuellement occupĂ©e par des notifications en attente de traitement. Voir LISTEN et NOTIFY pour plus d'informations. |
Renvoie l'heure de démarrage du serveur. |
Renvoie un tableau d'identifiants de processus des sessions bloquant le processus serveur avec l'identifiant de processus spécifié pour acquérir une image propre. Renvoie un tableau vide si ce processus n'existe pas ou s'il n'est pas bloqué.
Une session exécutant une transaction Les appels fréquents à cette fonction pourraient avoir des impacts sur la performance des bases car elle a besoin d'accéder à l'état partagé du gestionnaire de verrous de prédicats pour un court moment. |
Renvoie le niveau de profondeur actuel des triggers PostgreSQL (0 si non appelé, directement ou indirectement, à partir d'un trigger). |
Renvoie le nom d'utilisateur de la session. |
Renvoie la méthode d'authentification et l'identité (si valide) que
l'utilisateur a présenté lors du cycle d'authentification avant qu'il
ne se voit affecter un rÎle de base. La forme utilisée est
|
Ăquivalent Ă |
Renvoie une chaßne décrivant la version du serveur
PostgreSQL. Vous pouvez aussi obtenir cette
information Ă partir de server_version ou, pour
une version lisible par un logiciel, vous pouvez utiliser server_version_num. Les développeurs de logiciels
devraient utiliser |
current_catalog
,
current_role
,
current_schema
,
current_user
,
session_user
et user
ont un statut syntaxique spécial en
SQL : elles doivent ĂȘtre appelĂ©es sans les
parenthĂšses. Dans PostgreSQL, les parenthĂšses peuvent ĂȘtre utilisĂ©es en
option avec current_schema
, mais pas avec les
autres.
session_user
est habituellement l'utilisateur qui a
initié la connexion à la base de données ; les superutilisateurs
peuvent modifier ce paramĂštre avec SET SESSION AUTHORIZATION.
current_user
est l'identifiant de l'utilisateur
applicable pour les vĂ©rifications de droits. Habituellement, il est Ă©gal Ă
l'utilisateur de la session mais il peut ĂȘtre changĂ© avec SET ROLE. Il peut aussi changer durant l'exĂ©cution d'une
fonction ayant l'attribut SECURITY DEFINER
. Dans la
parlance Unix, l'utilisateur de session est le « real user » et
l'utilisateur courant est le « effective user ».
current_role
et user
sont des
synonymes pour current_user
. (Le standard SQL fait
une distinction entre current_role
et
current_user
, mais
PostgreSQL ne la fait pas car il unifie les
utilisateurs et les rÎles en une seule entité.)
Tableau 9.68 liste les fonctions qui
permettent d'accéder programmatiquement aux droits d'accÚs aux objets.
(Voir Section 5.7 pour plus d'informations sur les droits.)
Dans ces fonctions, l'utilisateur dont les droits sont interrogĂ©s peut ĂȘtre
indiqué par son nom ou son OID
(pg_authid
.oid
), ou si
le nom donné est public
, alors la vérification se fait
sur les droits du pseudo-rĂŽle PUBLIC. De plus, l'argument
user
peut ĂȘtre complĂštement omis, auquel cas la
vérification se fera sur current_user
. L'objet vérifié
peut ĂȘtre indiquĂ© par son nom ou son OID. Dans le cas du nom, le nom du
schĂ©ma peut ĂȘtre inclus si nĂ©cessaire. Le droit d'accĂšs d'intĂ©rĂȘt est
indiqué par une chaßne de caractÚres qui doit correspondre à un des mots
clés approprié pour le type d'objet (par exemple
SELECT
). En option, WITH GRANT OPTION
peut ĂȘtre ajoutĂ© au type de droit pour tester si le droit contient cette
option. De plus, plusieurs types de droits peuvent ĂȘtre listĂ©s en les
séparant par des virgules, auquel cas le résultat sera vrai si un des
droits est détenu (la casse n'est pas significative et les espaces blancs
supplĂ©mentaires sont autorisĂ©s entre les noms des droits, mais pas Ă
l'intérieur des noms.) Quelques exemples :
SELECT has_table_privilege('myschema.mytable', 'select'); SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');
Tableau 9.68. Fonctions d'accĂšs aux droits
Fonction Description |
---|
Est-ce que l'utilisateur a le droit pour une colonne de la table ?
Ceci réussit si le droit est détenu pour la table entiÚre ou s'il est
détenu par au moins une colonne de la table. Les droits autorisés sont
|
Est-ce que l'utilisateur a le droit pour la colonne spécifié de la
table ? Ceci réussit si le droit est détenu pour la table entiÚre
ou s'il est dĂ©tenu par cette colonne de la table. La colonne peut ĂȘtre
spécifiée par son nom ou son numéro d'attribut
( |
Est-ce que l'utilisateur a le droit pour la base ?
Les droits autorisés sont
|
Est-ce que l'utilisateur a le droit pour le foreign data wrapper ?
Le seul droit autorisé est |
Est-ce que l'utilisateur a le droit pour la fonction ?
Le seul droit autorisé est
Lors de la spécification d'une fonction par nom, plutÎt que par OID,
l'entrĂ©e autorisĂ©e est la mĂȘme que pour le type de donnĂ©es
SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');
|
Est-ce que l'utilisateur a le droit pour le langage ?
Le seul droit autorisé est |
Est-ce que l'utilisateur a le droit pour configurer ce paramĂštre ?
Le nom du paramÚtre est insensible à la casse. Les droits autorisés sont
|
Est-ce que l'utilisateur a le droit pour le schéma ?
Les droits autorisés sont
|
Est-ce que l'utilisateur a le droit pour la séquence ?
Les droits autorisés sont
|
Est-ce que l'utilisateur a le droit pour le serveur distant ?
Le seul droit autorisé est |
Est-ce que l'utilisateur a le droit pour la table ?
Les droits autorisés sont
|
Est-ce que l'utilisateur a le droit pour le tablespace ?
Le seul droit autorisé est |
Est-ce que l'utilisateur a le droit pour le type de données ? Le
seul droit autorisé est |
Est-ce que l'utilisateur a le droit pour le rĂŽle ? Les droits
autorisés sont |
Est-ce que la sécurité niveau ligne est active pour la table dans le contexte de l'utilisateur et de l'environnement actuels ? |
Tableau 9.69 montre les opérateurs
disponibles pour le type aclitem
, qui est la représentation
catalogue pour les droits d'accĂšs. Voir Section 5.7 pour des
informations sur la lecture des droits d'accĂšs.
Tableau 9.69. Opérateurs aclitem
Tableau 9.69 montre quelques fonctions
supplémentaires pour la gestion du type aclitem
.
Tableau 9.70. Fonctions aclitem
Fonction Description |
---|
Construit un tableau d' |
Renvoie le tableau the |
Construit un |
Tableau 9.71 montre les fonctions qui dĂ©terminent si un certain objet est visible dans le chelub de recherche de schĂ©mas courant. Par exemple, une table est dite visible si le schĂ©ma qui la contient est dans le chemin de recherche. C'est Ă©quivalent au fait que la table doit ĂȘtre rĂ©fĂ©rencĂ©e par nom sans qualification explicite par d'un schĂ©ma. De ce fait, pour lister les noms des tables visibles :
SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
Pour les fonctions et opĂ©rateurs, un objet dans le chemin de recherche est dit visible si aucun objet du mĂȘme nom et du mĂȘme type se trouve avant dans le chemin. Pour les classes et familles d'opĂ©rateur, le nom et la mĂ©thode d'accĂšs associĂ© de l'index sont considĂ©rĂ©s.
Tableau 9.71. Fonctions de vérification de la visibilité
Toutes ces fonctions requiĂšrent les OID des objets pour identifier l'objet
à vérifier. Si vous voulez tester un objet par son nom, il est préférable
d'utiliser les types d'alias de l'OID (regclass
, regtype
,
regprocedure
, regoperator
, regconfig
ou regdictionary
),
par exemple :
SELECT pg_type_is_visible('myschema.widget'::regtype);
Notez qu'il n'y aurait pas de sens Ă tester un nom de type non qualifiĂ© par son schĂ©ma de cette façon -- si le nom peut ĂȘtre reconnu, c'est qu'il est visible.
Tableau 9.72 liste les fonctions qui extraient des informations des catalogues systĂšmes.
Tableau 9.72. Fonctions d'information sur les catalogues systĂšmes
Fonction Description |
---|
Renvoie le nom SQL pour un type de données identifié par l'OID type et potentiellement par un modifieur de type. Envoyez NULL pour le modifieur si aucun modifieur spécifique n'est connu. |
Convertit le nom d'encodage fourni en un entier représentant l'identifiant
interne utilisé dans certains catalogues systÚmes. Renvoie
|
Convertit l'entier utilisé comme identifiant interne d'encodage pour certains catalogues systÚmes en une chaßne lisible par un humain. Renvoie une chaßne vide si le numéro d'encodage fourni est invalide. |
Retourne un ensemble de lignes décrivant les clés étrangÚres
qui existent dans le catalogue systĂšme
de PostgreSQL.
La colonne |
Reconstruit la commande de création pour une contrainte. (Ceci est une reconstruction décompilée, pas le texte original de la commande.) |
Décompile la forme interne de l'expression stockée dans les catalogues systÚmes, telle que la valeur par défaut pour une colonne. Si l'expression peut contenir Vars, indiquez l'OID de la relation à laquelle elles font référence dans le deuxiÚme paramÚtre ; si aucun Var n'est attendu, indiquer 0 est suffisant. |
Reconstruit la commande de création pour une fonction ou une
procédure. (C'est une reconstruction décompilée, pas le texte original
de la commande.) Le résultat est une instruction complÚte,
|
Reconstruit la liste d'argument d'une fonction ou procédure, dans la
forme oĂč elle devrait apparaĂźtre dans un |
Reconstruit la liste d'arguments nécessaire pour identifier une
fonction ou une procédure, sous la forme nécessaire pour intégrer une
commande telle que |
Reconstruit la clause |
Reconstruit la commande de création pour un index (C'est une
reconstruction décompilée, et non pas le texte original de la
commande.) Si |
Renvoie un ensemble d'enregistrements décrivant les mots clés SQL
reconnus par le serveur. La colonne |
Reconstruit la définition d'une clé de partitionnement pour une table
partitionnée, sous la forme nécessaire pour une clause |
Reconstruit la commande de création pour une rÚgle. (C'est une reconstruction décompilée, et non pas le texte original de la commande.) |
Renvoie le nom de la séquence associée à une colonne ou NULL si aucune
séquence n'est associée à la colonne. Si la colonne est une colonne
identité, la séquence associée est la séquence créée en interne pour
cette colonne. Pour les colonnes créées en utilisant un des types
serial ( Une utilisation typique est la lecture de la valeur actuelle d'une séquence pour une colonne identité ou serial. Par exemple : SELECT currval(pg_get_serial_sequence('sometable', 'id'));
|
Reconstruit le commande de création d'un objet statistique étendu. (Ceci est une reconstruction décompilée, par le texte de la commande originale.) |
Reconstruit la commande de création d'un trigger. (Ceci est une reconstruction décompilée, par le texte de la commande originale.) |
Renvoie le nom d'un rĂŽle d'aprĂšs son OID. |
Reconstruit la commande |
Reconstruit la commande |
Reconstruit la commande |
Teste si une colonne d'index a la propriété nommée. Les propriétés
communes de colonne d'index sont listées dans Tableau 9.73. (Notez que les méthodes
d'accÚs d'extension peuvent définir des noms de propriété
supplémentaires pour leurs index.) |
Teste si un index a la propriété nommée. Les propriétés communes
d'index sont listées dans Tableau 9.74. (Notez que les méthodes
d'accÚs d'extension peuvent définir des noms de propriété
supplémentaires pour leurs index.) |
Teste si une méthode d'accÚs aux index a la propriété nommée. Les
propriétés communes des méthodes d'accÚs aux index sont listées dans
Tableau 9.75.
|
Renvoie l'ensemble d'options de stockage reprĂ©sentĂ© par une valeur Ă
partir de
|
Renvoie un tableau de drapeaux associés avec le paramÚtre donné ou
|
Renvoie l'ensemble d'OID des bases ayant des objets dans le tablespace
indiqué. Si cette fonction renvoie des lignes, le tablespace n'est pas
vide et ne peut pas ĂȘtre supprimĂ©. Pour identifier les objets
spécifiques peuplant le tablespace, vous aurez besoin de vous
connecter aux bases identifiées par
|
Renvoie le chemin du systĂšme de fichiers oĂč ce tablespace est situĂ©. |
Renvoie l'OID du type de données de la valeur qui lui est fournie.
Ceci peut ĂȘtre utile pour dĂ©bogguer ou pour construire dynamiquement
des requĂȘtes SQL. Cette fonction est dĂ©clarĂ©e renvoyer le type
Par exemple : SELECT pg_typeof(33); pg_typeof ----------- integer SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4
|
Renvoie le nom de la collation de la valeur qui lui est fournie. La
valeur est entre guillemet et qualifiée du schéma si nécessaire. Si
aucune collation n'a été dérivée de l'expression de l'argument, alors
Par exemple : SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default" SELECT collation for ('foo' COLLATE "de_DE"); pg_collation_for ------------------ "de_DE"
|
Traduit un nom de relation en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom de collation en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom de schéma en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom d'opérateur en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom d'opérateur en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom de fonction ou procédure en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom de fonction ou procédure en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom de rÎle en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
Traduit un nom de type en son OID. Un résultat similaire est
obtenu en convertissant la chaĂźne dans le type |
La plupart des fonctions qui reconstruisent (décompilent) des objets de
base ont un drapeau pretty
, qui Ă
true
, cause que le résultat soit « joliment
affiché ». Un bel affichage supprime les parenthÚses inutiles et
ajoute des espaces blancs pour la lisibilité. Ce format est plus lisible
mais le format par dĂ©faut a plus de chance d'ĂȘtre interprĂ©tĂ© de la mĂȘme
façon par les versions futures de
PostgreSQL ; pour éviter d'utiliser une
sortie joliment affichée pour les sauvegardes. Configurer
false
pour le paramĂštre pretty
donne le mĂȘme rĂ©sultat que d'omettre le paramĂštre.
Tableau 9.73. Propriétés des colonnes d'un index
Nom | Description |
---|---|
asc | Est-ce que la colonne trie en ordre ascendant sur un parcours en avant ? |
desc | Est-ce que la colonne trie en ordre descendant sur un parcours en avant ? |
nulls_first | Est-ce que la colonne trie les valeurs NULL en premier sur un parcours en avant ? |
nulls_last | Est-ce que la colonne trie les valeurs NULL en dernier sur un parcours en avant ? |
orderable | Est-ce que la colonne possÚde un ordre de tri défini ? |
distance_orderable | Est-ce que la colonne peut ĂȘtre parcourue en ordre par un
opérateur « distance », par exemple
ORDER BY col <-> constant ?
|
returnable | Est-ce que la valeur de la colonne peut ĂȘtre renvoyĂ©e par un parcours d'index seul ? |
search_array | Est-ce que la colonne supporte nativement les recherches
col = ANY(array) ?
|
search_nulls | Est-ce que la colonne supporte les recherches IS
NULL et IS NOT NULL ?
|
Tableau 9.74. Propriétés des index
Nom | Description |
---|---|
clusterable | L'index peut-il ĂȘtre utilisĂ© dans une commande
CLUSTER ?
|
index_scan | L'index supporte-t-il les parcours simples (non bitmap) ? |
bitmap_scan | L'index supporte-t-il les parcours bitmap ? |
backward_scan | Est-ce que la direction du parcours peut ĂȘtre changĂ©e en milieu
de parcours (pour accepter FETCH BACKWARD sur un
curseur sans nécessiter de matérialisation) ?
|
Tableau 9.75. Propriétés des méthodes d'accÚs aux index
Nom | Description |
---|---|
can_order | Est-ce que la méthode d'accÚs supporte ASC ,
DESC et les autres mots-clés dans
CREATE INDEX ?
|
can_unique | Est-ce que la méthode d'accÚs supporte les index d'unicité ? |
can_multi_col | Est-ce que la méthode d'accÚs supporte les index multi-colonnes ? |
can_exclude | Est-ce que la méthode d'accÚs supporte les contraintes d'exclusion ? |
can_include | Est-ce que la méthode d'accÚs supporte la clause
INCLUDE de CREATE INDEX ?
|
Tableau 9.76. Drapeaux des GUC
Drapeau | Description |
---|---|
EXPLAIN | Les paramĂštres disposant de ce drapeau sont inclus dans les commandes
EXPLAIN (SETTINGS) .
|
NO_SHOW_ALL | Les paramĂštres disposant de ce drapeau sont exclus des commandes
SHOW ALL .
|
NO_RESET | Les paramĂštres disposant de ce drapeau n'acceptent pas les
commandes RESET .
|
NO_RESET_ALL | Les paramĂštres disposant de ce drapeau sont exclus des commandes
RESET ALL .
|
NOT_IN_SAMPLE | Les paramÚtres disposant de ce drapeau ne sont pas inclus par défaut
dans postgresql.conf .
|
RUNTIME_COMPUTED | Les paramÚtres disposant de ce drapeau sont calculés à l'exécution. |
Tableau 9.77 liste les fonctions relatives Ă l'identification et l'adressage des objets de la base.
Tableau 9.77. Fonctions d'information et d'adressage des objets
Les fonctions listées dans Tableau 9.78 extraient les commentaires préalablement enregistrés avec la commande COMMENT. Une valeur NULL est renvoyée si aucun commentaire n'a été trouvé pour les paramÚtres donnés.
Tableau 9.78. Fonctions d'informations sur les commentaires
Les fonctions affichĂ©es dans Tableau 9.79 peuvent ĂȘtre utiles pour vĂ©rifier la validitĂ© des donnĂ©es proposĂ©es en entrĂ©e.
Tableau 9.79. Fonctions de vérification de validité des données
Les fonctions listées dans Tableau 9.80 fournissent des informations sur la transaction serveur dans un format exportable. L'utilisation principale de ces fonctions est de déterminer les transactions validées entre deux images de base.
Tableau 9.80. Fonctions d'identifiants de transaction et d'informations sur les images de base
Fonction Description |
---|
Renvoie le nombre de transactions entre l'identifiant de transaction indiqué et le compteur de transaction. |
Renvoie le nombre d'identifiants MultiXact entre l'identifiant MultiXact indiqué et le compteur multixacts. |
Renvoie l'identifiant actuel de la transaction. Il sera affecté si la transaction n'en a pas déjà un (ceci arrive si elle n'a pas encore réalisé d'écritures sur la base) ; voir Section 74.1 pour les détails. Si exécutée dans une sous-transaction, elle renverra l'identifiant de transaction du niveau haut ; voir Section 74.3 pour les détails. |
Renvoie l'identifiant actuel de la transaction ou |
Renvoie le statut de validation d'une transaction récente. Le résultat
fait partie de |
Renvoie un snapshot (image) actuel, une structure de données indiquant les identifiants de transaction actuellement en cours. Seuls les identifiants de transaction de niveau haut sont inclus dans le snapshot ; les identifiants de sous-transaction ne sont pas affochées ; voir Section 74.3 our les détails. |
Renvoie l'ensemble des identifiants de transactions en cours contenu dans un snapshot (image de base). |
Renvoie le |
Renvoie le |
Est-ce que l'identifiant de transaction donné est visible d'aprÚs cette image de base (autrement dit, est-il terminé avant que l'image ne soit réalisée) ? Notez que cette fonction ne renverra pas la bonne réponse pour un identifiant de sous-transaction (subxid) ; voir Section 74.3 pour les détails. |
Renvoie l'identifiant de transaction et le mode de verrou pour chaque
membre de l'identifiant MultiXact indiqué. Les modes de verrou
|
Le type interne des identifiants de transaction, xid
, est sur
32 bits et boucle tous les 4 milliards de transactions. Néanmoins, les
fonctions listées dans Tableau 9.80, sauf
age
, mxid_age
et
pg_get_multixact_members
, utilisent
un type xid8
sur 64 bits qui ne boucle pas sur toute la durée
de vie d'une instance, et qui peut ĂȘtre converti en xid
par
conversion si nécessaire ; voir Section 74.1 pour les détails.
Le type de données pg_snapshot
enregistre des informations sur la visibilité des identifiants de
transaction à un moment particulier. Ses composants sont décrits dans
Tableau 9.81. La représentation textuelle
de pg_snapshot
est
.
Par exemple, xmin
:xmax
:xip_list
10:20:10,14,15
signifie xmin=10,
xmax=20, xip_list=10, 14, 15
.
Tableau 9.81. Composants d'image de base
Nom | Description |
---|---|
xmin |
Plus petit identifiant de transaction toujours actif. Tous les
identifiants de transaction infĂ©rieurs Ă
xmin sont soit validés et visibles, soit
annulés et morts.
|
xmax |
L'identifiant de transaction aprÚs le dernier identifiant terminé.
Tous les identifiants de transaction supĂ©rieurs ou Ă©gals Ă
xmax ne sont pas encore terminés au moment
de la création de l'image, et sont de ce fait invisibles.
|
xip_list |
Transactions en cours au moment de la création de l'image de base.
Un identifiant de transaction qui est
xmin <= et qui n'est pas dans cette liste a déjà été terminé
au moins de la création de l'image et, de ce fait, est soit visible soit
mort suivant son statut de validation. Cette liste n'inclut pas les
identifiants de transaction des sous-transactions (subxids).
|
Dans les versions de PostgreSQL antĂ©rieures Ă
la 13, le type xid8
n'existait pas, donc des variantes de ces
fonctions étaient fournies. Elles utilisaient le type bigint
pour représenter un identifiant sur 64 bits, avec un type de données pour
l'image nommé txid_snapshot
. Ces anciennes fonctions avaient
le mot txid
dans leur nom. Elles sont toujours
acceptées pour des raisons de compatibilité ascendante, mais pourraient
ĂȘtre supprimĂ©es dans une version future. Voir Tableau 9.82.
Tableau 9.82. Fonctions obsolĂštes sur les identifiants de transactions et les informations sur les images de base
Les fonctions montrĂ©es dans Tableau 9.83 fournissent des informations sur le moment oĂč d'anciennes transactions ont Ă©tĂ© validĂ©es. Elles fournissent des informations utiles seulement quand le paramĂštre track_commit_timestamp est activĂ©, et seulement pour les transactions qui ont Ă©tĂ© validĂ©es aprĂšs l'activation du paramĂštre. L'information d'horodatage de la validation est supprimĂ©e au fil du temps pendant un nettoyage (VACUUM).
Tableau 9.83. Fonctions d'informations sur les transactions validées
Les fonctions listées dans Tableau 9.84
affichent des informations initialisées lors de l'exécution de la commande
initdb
, telle que la version du catalogue. Elles
affichent aussi des informations sur les écritures dans les journaux de
transactions et le traitement des checkpoints. Ces informations sont
globales à l'instance, et non pas spécifique à une base. Ces fonctions
fournissent la plupart des informations en utilisant la mĂȘle source que
l'application pg_controldata.
Tableau 9.84. Fonctions des données de contrÎle
Fonction Description |
---|
Renvoie des informations sur l'état du checkpoint en cours, comme indiqué dans Tableau 9.85. |
Renvoie des informations sur l'état du fichier de contrÎle en cours, comme indiqué dans Tableau 9.86. |
Renvoie des informations sur l'état d'initialisation de l'instance, comme indiqué dans Tableau 9.87. |
Renvoie des informations sur l'état de restauration, comme indiqué dans Tableau 9.88. |
Tableau 9.85. Colonnes en sortie de pg_control_checkpoint
Nom de la colonne | Type de données |
---|---|
checkpoint_lsn | pg_lsn |
redo_lsn | pg_lsn |
redo_wal_file | text |
timeline_id | integer |
prev_timeline_id | integer |
full_page_writes | boolean |
next_xid | text |
next_oid | oid |
next_multixact_id | xid |
next_multi_offset | xid |
oldest_xid | xid |
oldest_xid_dbid | oid |
oldest_active_xid | xid |
oldest_multi_xid | xid |
oldest_multi_dbid | oid |
oldest_commit_ts_xid | xid |
newest_commit_ts_xid | xid |
checkpoint_time | timestamp with time zone |
Tableau 9.86. Colonnes en sortie de pg_control_system
Nom de colonne | Type de données |
---|---|
pg_control_version | integer |
catalog_version_no | integer |
system_identifier | bigint |
pg_control_last_modified | timestamp with time zone |
Tableau 9.87. Colonnes en sortie de pg_control_init
Nom de colonne | Type de données |
---|---|
max_data_alignment | integer |
database_block_size | integer |
blocks_per_segment | integer |
wal_block_size | integer |
bytes_per_wal_segment | integer |
max_identifier_length | integer |
max_index_columns | integer |
max_toast_chunk_size | integer |
large_object_chunk_size | integer |
float8_pass_by_value | boolean |
data_page_checksum_version | integer |
Tableau 9.88. Colonnes en sortie de pg_control_recovery
Nom de colonne | Type de données |
---|---|
min_recovery_end_lsn | pg_lsn |
min_recovery_end_timeline | integer |
backup_start_lsn | pg_lsn |
backup_end_lsn | pg_lsn |
end_of_backup_record_required | boolean |