Actions
Evolution #351
ferméPrise en charge de tous les objets
Début:
24/09/2020
Echéance:
% réalisé:
100%
Temps estimé:
# ref:
Description
... ou plus précisément de tous les objets sur lesquels il y a de la gestion de droits à faire.
- tables
- vues
- vues matérialisées
- tables distantes
- tables partitionnées
- séquences
- fonctions
- agrégats
- types
- domaines
Ceci concerne toutes les actions portant sur les objets, soit en pratique deux actions : le déplacement d'objet (implémenté pour les tables et les vues seulement) et la réinitialisation des droits sur un objet (non implémenté à ce jour).
Récupérer la liste de tous les objets utiles (sans les types créés automatiquement par PostgreSQL et autres machins qu'on ne veut surtout pas voir apparaître), j'utilise la méthode ci-après, adaptée pour l'occasion en python :
typlist = [
["table", "pg_class", "rel", "relkind = 'r'"],
["partitioned table", "pg_class", "rel", "relkind = 'p'"],
["view", "pg_class", "rel", "relkind = 'v'"],
["materialized view", "pg_class", "rel", "relkind = 'm'"],
["foreign table", "pg_class", "rel", "relkind = 'f'"],
["sequence", "pg_class", "rel", "relkind = 'S'"],
["function", "pg_proc", "pro", "proisagg = false"],
["aggregate", "pg_proc", "pro", "proisagg = true"],
["type", "pg_type", "typ", "NOT typtype = 'd'"],
["domain", "pg_type", "typ", "typtype = 'd'"]
]
r = ""
for i in range(len(typlist)):
if not r == "":
r = r + " UNION "
r = r + "SELECT nom_schema, {ref[2]}name AS objname, '{ref[0]}' AS objtype FROM z_asgard.gestion_schema_etr\
LEFT JOIN pg_catalog.{ref[1]} ON oid_schema = {ref[2]}namespace\
LEFT JOIN pg_catalog.pg_depend ON objid = {ref[1]}.oid\
WHERE {ref[3]} AND NOT deptype = 'i'".format(ref=typlist[i])
r = r + " ORDER BY nom_schema, objtype, objname"
Actions