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.

Schéma

z_asgard_admin

Seuls g_admin[5] et ses membres sont habilités à utiliser cette fonction.

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

  1. [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"'] ;

  2. [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.

1
2
SELECT z_asgard_admin.asgard_initialisation_gestion_schema(
3
    ARRAY['special_1', 'special_2']
4
) ;
1
2
NOTICE: [table de gestion] Mise à jour du bloc pour le schéma c_bibliotheque (c).
3
NOTICE: (schéma c_bibliotheque pré-existant)
4
NOTICE: ... Schéma c_bibliotheque enregistré dans la table de gestion. 
5
NOTICE: [table de gestion] Mise à jour du bloc pour le schéma z_asgard_admin (z).
6
NOTICE: (schéma z_asgard_admin pré-existant)
7
NOTICE: ... Schéma z_asgard_admin enregistré dans la table de gestion.
8
NOTICE: [table de gestion] Mise à jour du bloc pour le schéma z_asgard (z).
9
NOTICE: (schéma z_asgard pré-existant)
10
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é :

1
2
SELECT z_asgard_admin.asgard_initialisation_gestion_schema() ;