Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Chapitre 9. Fonctions et opérateurs | Avance rapide | Suivant |
Tableau 9-35 affiche plusieurs fonctions qui extrait des informations de la session et du système.
Tableau 9-35. Fonctions d'informations de session
Nom | Type de retour | Description |
---|---|---|
current_database() | name | nom de la base de données courante |
current_schema() | name | nom du schéma courant |
current_schemas(boolean) | name[] | nom des schémas dans le chemin de recherche, avec optionnellement les schémas implicites |
current_user | name | nom d'utilisateur du contexte d'exécution courant |
session_user | name | nom de l'utilisateur de la session |
user | name | équivalent à current_user |
version() | text | informations de version de PostgreSQL |
session_user
est l'utilisateur qui a initié la
connexion à la base de données ; il est fixe pour la durée de la
connexion. current_user
est l'identifiant de
l'utilisateur utilisable pour les vérifications de permissions.
Il est habituellement identique à l'utilisateur de la session, mais il
change lors de l'exécution des fonctions avec l'attribut SECURITY
DEFINER. Dans le vocable Unix, l'utilisateur de la session est
l'<< utilisateur réel >> (real
user) et l'utilisateur courant est
l'<< utilisateur effectif >> (effective
user).
Note :
current_user
,session_user
etuser
ont un statut syntaxique spécial en SQL : ils doivent être appelés sans parenthèses à droite.
current_schema
renvoie le premier nom de schéma
du chemin de recherche ou une valeur nulle si le chemin de recherche
est vide. C'est le schéma qui sera utilisé pour toutes les tables ou tous
les autres objets nommés créés sans spécification du schéma cible.
current_schemas(boolean)
renvoie un tableau des noms
de tous les schémas présents dans le chemin de recherche. L'option booléenne
détermine si les schémas systèmes sont inclus implicitement ou non dans le
chemin de recherche renvoyé, par exemple pour pg_catalog.
Note : Le chemin de recherche peut être modifié pendant l'exécution. La commande est :
SET search_path TO schéma1 [, schéma2, ...]
version()
renvoie une chaîne décrivant la version du
serveur PostgreSQL.
Tableau 9-36 affiche les fonctions disponibles pour lancer des requêtes et modifier les paramètres de configuration à l'exécution.
Tableau 9-36. Fonctions de configuration
Nom | Type de retour | Description |
---|---|---|
current_setting
(nom_paramètre)
| text | valeur courante du paramétrage |
set_config(nom_paramètre,
nouvelle_valeur,
est_local)
| text | initialise le paramètre et renvoie la nouvelle valeur |
La fonction current_setting
renvoie la valeur courante
du paramètre nom_paramètre. Cela correspond à la
commande SQL SHOW. Par exemple :
SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row)
set_config
configure le paramètre
nom_paramètre avec
nouvelle valeur. Si
est_local est true, la nouvelle
valeur est seulement appliquée à la transaction actuelle. Si vous voulez que
la nouvelle valeur s'applique pour la session courante, utilisez
false à la place. Cette fonction correspond à la commande
SQL SET. Un exemple :
SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row)
Tableau 9-37 liste les fonctions qui permettent à l'utilisateur de connaître les privilèges d'accès aux objets. Voir Section 5.7 pour plus d'informations sur les privilèges.
Tableau 9-37. Fonctions de consultation des privilèges d'accès
Nom | Type de retour | Description |
---|---|---|
has_table_privilege
(utilisateur,
table,
privilège)
| boolean | utilisateur a-t-il le privilège privilège sur table |
has_table_privilege
(table,
privilège)
| boolean | l'utilisateur courant a-t-il le privilège privilège sur table |
has_database_privilege
(utilisateur,
base_de_données,
privilège)
| boolean | utilisateur a-t-il le privilège privilège sur base |
has_database_privilege
(base_de_données,
privilège)
| boolean | l'utilisateur courant a-t-il le privilège privilège sur base |
has_function_privilege
(utilisateur,
fonction,
privilège)
| boolean | utilisateur a-t-il le privilège privilège sur fonction |
has_function_privilege
(fonction,
privilège)
| boolean | l'utilisateur courant a-t-il e privilège privilège sur fonction |
has_language_privilege
(utilisateur,
langage,
privilège)
| boolean | utilisateur a-t-il le privilège privilège sur langage |
has_language_privilege
(langage,
privilège)
| boolean | l'utilisateur courant a-t-il le privilège privilège sur langage |
has_schema_privilege
(utilisateur,
schéma,
privilège)
| boolean | utilisateur a-t-il le privilège privilège sur schéma |
has_schema_privilege
(schéma,
privilège)
| boolean | l'utilisateur courant a-t-il le privilège privilège sur schéma |
has_table_privilege
vérifie qu'un utilisateur peut
accéder à une table d'une façon particulière. L'utilisateur peut être
spécifié par son nom ou par son identifiant
(pg_user.usesysid). Si cet argument est omis, la fonction
utilise current_user
. La table peut être spécifiée par
son nom ou par son OID. (Du coup, il existe six variantes de
has_table_privilege
, qui sont distinguables par leur
nom et par le type de leurs arguments.) Lors de la spécification par nom,
celui-ci peut être détaillé avec le nom du schéma si nécessaire. Le type de
privilège d'accès désiré est spécifié par une chaîne qui doit correspondre à
une des valeurs suivantes : SELECT,
INSERT, UPDATE,
DELETE, RULE,
REFERENCES ou TRIGGER. (Néanmoins, la
casse de la chaîne n'a pas d'importance.)
Voici un exemple :
SELECT has_table_privilege('mon_schema.mytable', 'select');
has_database_privilege
vérifie si un utilisateur peut
accéder à une base de données d'une façon particulière. Les possibilités sur
les arguments sont analogues à celles de la fonction
has_table_privilege
. Les types de privilèges d'accès
désirés ont les valeurs suivantes :
CREATE,
TEMPORARY ou
TEMP (qui est équivalent à
TEMPORARY).
has_function_privilege
vérifie si un utilisateur peut
accéder à une fonction d'une façon particulière. Les possibilités sur
les arguments sont analogues à celles de la fonction
has_table_privilege
. Lors de la spécification d'une
fonction avec une chaîne de texte plutôt que son OID, l'entrée permise est
la même que pour le type de données regprocedure. Le type de
privilège d'accès désiré doit être EXECUTE.
has_language_privilege
vérifie si un utilisateur peut
accéder à un langage procédural d'une façon particulière. Les possibilités
pour les arguments sont analogues à ceux de
has_table_privilege
. Le type de privilège d'accès
désiré doit être USAGE.
has_schema_privilege
vérifie si un utilisateur peut
accéder à un schéma d'une façon particulière. Les possibilités pour ses
arguments sont analogues à celles de la fonction
has_table_privilege
. Le type de privilège d'accès
désiré doit être parmi CREATE et
USAGE.
Pour évaluer si un utilisateur détient une option << grant >> sur le privilège, ajoutez WITH GRANT OPTION avec la clé de privilège ; par exemple 'UPDATE WITH GRANT OPTION'.
Tableau 9-38 affiche les fonctions qui déterminent si un certain objet est visible dans le chemin de recherche de schémas actuel. Une table est dite visible si son schéma est dans le chemin de recherche et qu'aucune table du même nom apparaît plus tôt dans le chemin de recherche. C'est équivalent à l'instruction dont la table peut être référencée par nom sans qualification explicite de schéma. Par exemple, pour lister les noms de toutes les tables visibles :
SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
Tableau 9-38. Fonctions d'information de visibilité dans le schéma
Nom | Type de retour | Description |
---|---|---|
pg_table_is_visible
(oid_table)
| boolean | la table est-elle visible dans le chemin de recherche |
pg_type_is_visible
(oid_type)
| boolean | le type (ou domaine) est-il visible dans le chemin de recherche |
pg_function_is_visible
(oid_fonction)
| boolean | la fonction est-elle visible dans le chemin de recherche |
pg_opérateur_is_visible
(oid_opérateur)
| boolean | l'opérateur est-il visible dans le chemin de recherche |
pg_opclass_is_visible
(oid_opclass)
| boolean | la classe d'opérateur est-elle visible dans le chemin de recherche |
pg_conversion_is_visible
(oid_conversion)
| boolean | la conversion est-elle visible dans le chemin de recherche |
pg_table_is_visible
effectue une vérification pour les
tables (ou vues ou tout autre type d'entrée dans pg_class).
pg_type_is_visible
,
pg_function_is_visible
,
pg_opérateur_is_visible
,
pg_opclass_is_visible
et
pg_conversion_is_visible
réalisent respectivement les
mêmes sortes de vérification de visibilité pour les types (et domaines),
fonctions, opérateurs, classes d'opérateur et conversions. Pour les
fonctions et opérateurs, un objet dans le chemin de recherche est visible si
aucun objet du même nom et des même types de données pour les
arguments plus tôt dans le chemin. Pour les classes d'opérateurs, à la
fois les noms et les méthodes d'accès aux index associés sont considérés.
Toutes les fonctions requièrent les OID des objets pour identifier l'objet à vérifier. Si vous voulez tester un objet par son nom, il est mieux d'utiliser les types d'alias d'OID (regclass, regtype, regprocedure ou regopérateur), par exemple
SELECT pg_type_is_visible('mon_schema.widget'::regtype);
Notez que cela n'aurait pas de sens de tester un nom non qualifié de cette façon --- si le nom est reconnu, il doit être visible.
Tableau 9-39 liste des fonctions qui
extraient des informations des catalogues système.
pg_get_viewdef
,
pg_get_ruledef
,
pg_get_indexdef
,
pg_get_triggerdef
et
pg_get_constraintdef
reconstruisent respectivement la
commande de création d'une vue, d'une règle, d'un index, d'un déclencheur ou
d'une contrainte. (Notez qu'il s'agit d'une reconstruction décompilée, pas du
texte original de la commande.) La plupart de ces commandes viennent en deux
variantes dont une qui peut optionnellement << afficher joliment >> le
résultat. Le joli format est plus lisible mais le format par défaut a plus de
chances d'être interprété de la même façon par les future versions de
PostgreSQL ; évitez l'utilisation du joli affichage dans
des buts de sauvegarde. Passer faux au paramètre d'affichage
amélioré renvoie le même résultat que la variante sans paramètre.
pg_get_expr
décompile la forme interne d'une expression
individuelle telle que la valeur par défaut d'une colonne. Cela peut être
utile lors de l'examen du contenu du catalogue système.
pg_get_userbyid
extrait un nom d'utilisateur suivant son
numéro d'identifiant.
Tableau 9-39. Fonctions d'informations sur le catalogue système
Nom | Type de retour | Description |
---|---|---|
pg_get_viewdef
(nom_vue) | text | récupère la commande CREATE VIEW d'une vue (obsolète) |
pg_get_viewdef
(nom_vue, joli_affichage) | text | récupère la commande CREATE VIEW d'une vue (obsolète) |
pg_get_viewdef
(oid_vue) | text | récupère la commande CREATE VIEW d'une vue |
pg_get_viewdef
(oid_vue, joli_affichage) | text | récupère la commande CREATE VIEW d'une vue |
pg_get_ruledef
(oid_règle) | text | récupère la commande CREATE RULE d'une règle |
pg_get_ruledef
(oid_règle,
joli_affichage) | text | récupère la commande CREATE RULE d'une règle |
pg_get_indexdef
(oid_index) | text | récupère la commande CREATE INDEX d'un index |
pg_get_indexdef
(oid_index, no_colonne,
joli_affichage) | text | récupère la commande CREATE INDEX d'un index ou la définition d'une seule colonne de l'index si no_colonne est différent de zéro |
pg_get_triggerdef
(oid_déclencheur) | text | récupère la commande CREATE [ CONSTRAINT ] TRIGGER d'un déclencheur |
pg_get_constraintdef
(oid_contrainte) | text | récupère la définition d'une contrainte |
pg_get_constraintdef
(oid_contrainte,
joli_affichage) | text | récupère la définition d'une contrainte |
pg_get_expr
(expression, oid_relation) | text | décompile la forme interne d'une expression, en supposant que toute variable réfère à la relation indiquée dans le second paramètre |
pg_get_expr
(expression, oid_relation,
joli_affichage) | text | décompile la forme interne d'une expression, en supposant que toute variable réfère à la relation indiquée dans le second paramètre |
pg_get_userbyid
(id_utilisateur) | name | obtient le nom de l'utilisateur avec l'identifiant donné |
La fonction affichée dans Tableau 9-40 extrait les commentaires stockés précédemment avec la commande COMMENT. Une valeur nulle est renvoyée si aucun commentaire n'est trouvé avec les paramètres spécifiés.
Tableau 9-40. Fonctions d'informations sur les commentaires
Nom | Type de retour | Description |
---|---|---|
obj_description
(objet,
nom_catalogue) | text | obtenir un commentaire sur une base de données |
obj_description
(oid_objet) | text | obtenir un commentaire sur une base de données (obsolète) |
col_description
(oid_table,
no_colonne) | text | obtenir un commentaire sur la colonne d'une table |
La forme à deux paramètres d'obj_description
renvoie
le commentaire d'un objet de la base de données suivant son OID et le nom du
catalogue système le contenant. Par exemple,
obj_description(123456,'pg_class') retrouvera le
commentaire de la table d'OID 123456. La forme à un paramètre requiert
seulement l'OID de l'objet. Elle est maintenant obsolète car il n'y a pas de
garantie que les OID soient uniques avec différents catalogues
système ; du coup, un mauvais commentaire pourrait être renvoyé.
col_description
renvoie le commentaire d'une colonne
de table, spécifié par l'OID de la table et le numéro de la colonne.
obj_description
ne peut pas être utilisé pour les
colonnes de table car les colonnes n'ont pas leur propre OID.
Précédent | Sommaire | Suivant |
Expressions conditionnelles | Niveau supérieur | Fonctions et opérateurs sur les tableaux |