asgard_initialisation_gestion_schema
fonction de référencement de l'ensemble des schémas pré-existants dans la table de gestion
z_asgard_admin.asgard_initialisation_gestion_schema([ exceptions text[] DEFAULT NULL::text[] [, b_gs boolean DEFAULT false ]] )
La fonction asgard_initialisation_gestion_schema
intègre à la table de gestion[1] l’ensemble des schémas existants dans la base, hors schémas système et ceux qui sont (optionnellement) listés en argument.
Cf. Reprise de l'existant pour plus de précisions sur l’initialisation d’ASGARD après installation.
asgard_initialisation_gestion_schema
peut être lancée à tout moment – elle se préoccupera uniquement des schémas restant à référencer[2].
Si les schémas considérés contiennent des objets, ASGARD mettra automatiquement en cohérence leurs propriétaires avec le celui du schéma. À noter que la fonction peut échouer si g_admin[5]
ne dispose pas de permissions suffisantes sur un schéma ou un objet, par exemple si un super-utilisateur[3] en est propriétaire, ou si le schéma est propriété d'un rôle de connexion[4]. Dans ce cas aucun schéma n’est référencé. Il est possible d'exclure le schéma incriminé du champ d'application de la fonction grâce à l'argument exceptions
(dans ce cas lui n'est pas référencé, mais les autres oui). Cf. Reprise de l'existant pour les mesures à mettre en oeuvre pour référencer effectivement le schéma.
Syntaxe avec des arguments positionnels⚓
SELECT z_asgard_admin.asgard_initialisation_gestion_schema( [%exceptions [, %b_gs ]] ) ;
Les arguments doivent être spécifiés dans l’ordre.
Les arguments optionnels peuvent être omis, mais seulement s’ils sont à la fin de la liste.
Syntaxe avec des arguments nommés⚓
SELECT z_asgard_admin.asgard_initialisation_gestion_schema( [exceptions := %exceptions [, b_gs := %b_gs ]] ) ;
L’ordre des arguments nommés n’a pas d’importance.
Les arguments optionnels peuvent être omis.
Il est bien entendu possible de commencer avec des arguments positionnels (dans l’ordre) et terminer par des arguments nommés.
Arguments⚓
[optionnel]
exceptions
est un tableau de chaînes de caractères (text[]
) contenant les noms des schémas à omettre, le cas échéant (ex : ARRAY['exception_1', 'exception_2']). Les noms des schémas s’écrivent sans les guillemets doubles nécessaires aux identifiants des commandes SQL, même s’il s’agit de noms non normalisés. Par exemple, on veillera bien à indiquer ARRAY['c_Bibliothèque'] et non ARRAY['"c_Bibliothèque"'] ;[optionnel]
b_gs
est un booléen indiquant si, dans l’hypothèse où un schéma serait déjà référencé mais marqué comme inactif dans la table de gestion, c’est le propriétaire du schéma qui doit en devenir le producteur[6] (False
) ou le producteur pré-renseigné dans la table de gestion qui doit devenir le propriétaire du schéma (True
).False
par défaut.
Résultat⚓
« __ FIN INTIALISATION. » si la requête s’est exécutée normalement.
La fonction rend compte de toutes les opérations réalisées par des messages.
Exemple :
Initialisation de la table de gestion après l'installation de l'extension PostgreSQL ASGARD sur une base contenant six schémas : public
, c_bibliotheque
, les deux schémas d’ASGARD et deux schémas special_1
et special_2
que l’administrateur ne souhaite pas gérer avec ASGARD pour le moment.
SELECT z_asgard_admin.asgard_initialisation_gestion_schema(
ARRAY['special_1', 'special_2']
) ;
NOTICE: [table de gestion] Mise à jour du bloc pour le schéma c_bibliotheque (c).
NOTICE: (schéma c_bibliotheque pré-existant)
NOTICE: ... Schéma c_bibliotheque enregistré dans la table de gestion.
NOTICE: [table de gestion] Mise à jour du bloc pour le schéma z_asgard_admin (z).
NOTICE: (schéma z_asgard_admin pré-existant)
NOTICE: ... Schéma z_asgard_admin enregistré dans la table de gestion.
NOTICE: [table de gestion] Mise à jour du bloc pour le schéma z_asgard (z).
NOTICE: (schéma z_asgard pré-existant)
NOTICE: ... Schéma z_asgard enregistré dans la table de gestion.
public
n'apparaît pas dans les messages, car, bien que non listé dans les exceptions, il n'a pas été référencé non plus. En effet, il n'est pas prévu qu'il puisse être pris en charge par ASGARD. Cf. Quid du schéma public ? pour plus de détails.
Si l’administrateur avait voulu référencer la totalité des schémas existants de sa base, y compris special_1
et special_2
, il aurait simplement lancé :
SELECT z_asgard_admin.asgard_initialisation_gestion_schema() ;