À PostgreSQL, quand j'essaie de courir ALTER TYPE x ADD VALUE y;
Sur un type de données personnalisé, je reçois une erreur indiquant PG::Error: ERROR: must be owner of type x
.
Je sais que cela peut être résolu en fonctionnant ALTER TYPE x OWNER TO <database owner>
Mais ce que je suis curieux de savoir comment je peux vérifier le propriétaire actuel de ce type de données spécifique. \dT+ x
ne me donne pas d'informations sur le propriétaire actuel.
Comment puis-je extraire plus d'informations sur les types de données personnalisés, y compris le propriétaire actuel?
Vous pouvez aller demander aux catalogues système ( pg_type
, être précis):
SELECT rolname
FROM pg_type t
JOIN pg_authid r ON typowner = r.oid
WHERE typname = 'bla';
usename
─────────
dezso
De cette version sur, il y a un nouveau type d'identifiant d'objet appelé regrole
, et il rend la requête un peu plus simple:
SELECT typowner::regrole
FROM pg_type t
WHERE typname = 'bla';
Mais il y en a plus - la nouvelle version 9.5 de psql
affiche déjà le propriétaire lors de l'utilisation \dT+
:
Schema | Name | Internal name | Size | Elements | Owner | ...
-------------------+------+---------------+------+----------+----------+ ...
zel_api_r14_00_09 | bla | bla | 4 | a | postgres | ...