Est-ce la correspondance entre les tables système PostgreSQL et vues information_schema documenté?

dba.stackexchange https://dba.stackexchange.com/questions/5509

Question

Si vous vous connectez pgAdminIII à un serveur PostgreSQL 9.x, vous trouverez deux catalogues exposés dans l'interface utilisateur: ANSI (schéma de l'information) et PostgreSQL (pg_catalog).

Je suis à la recherche de la documentation décrivant la correspondance entre

  • les objets de base de données et les tables système
  • les tables système et les vues information_schema

Par exemple, je voudrais être en mesure de prendre un nom de séquence à partir d'une base de données, et être en mesure de dire rapidement où la séquence elle-même, de nom de la séquence et la séquence ACL (des états grant et revoke) seraient trouvé dans les deux tables système et dans les vues information_schema.

Est-ce que documenté nulle part? Je suis dans la documentation en ligne de PostgreSQL, et je l'ai trouvé les détails à la fois ANSI et PostgreSQL catalogues, mais je ne documentation trouvée des correspondances.

Mise à jour

On dirait que l'information est probablement dans le fichier source information_schema.sql, mais ce fichier ne semble pas être dans le code source en ligne. (Voir, par exemple, initdb.c http://doxygen.postgresql.org/ .)

Était-ce utile?

La solution

Les tables système sont la mise en œuvre des objets de base de données. Donc, si vous dites, appelez un foo() de fonction, l'apparence de SGBD dans pg_proc pour voir s'il y a une foo fonction et quels sont les arguments et le code source et ainsi de suite sont. La disposition et la disposition des catalogues système ne sont que la façon dont les implémenteurs de diverses fonctions au fil du temps les faits. Vous avez déjà signalé la documentation des catalogues. Dans de nombreux cas, il y a une cartographie simple, par exemple, entre une fonction et pg_proc. Mais dans d'autres cas, comme pour un index, il est un peu plus compliqué. Vous devrez creuser cette information sur la documentation ou peut-être les nombreux exemples de requêtes de catalogue système qui volent autour.

Le schéma d'information est spécifiée par la norme SQL. Le principe il y a, si vous entrez ces commandes SLDDTC, une requête du schéma d'information devrait donner ces résultats. Dans de nombreux cas, il y a encore un mappage simple entre les objets et les vues de schéma d'information, mais ce n'est pas simple dans tous les cas. Ainsi, le maintien d'une documentation séparée de l'application de ces informations serait fastidieux et probablement inutile. Le principe est ddl in, schéma d'information, non pas ce qui se passe dans les catalogues système de PostgreSQL.

En fin de compte, si vous voulez savoir si une séquence serait trouvée dans une table de catalogue ou une vue de schéma d'informations, vous devez interroger ces tables. La réalité est trop complexe pour que cela soit plus simple. (Je pense. Envoyer un patch si vous avez une meilleure idée.)

Autres conseils

Comme la plupart du schéma d'information est sous forme de vues contre pg_catalog vous pouvez obtenir une grande partie de l'aide psql:

psql -U postgres -c "\d information_schema.*" > information_schema.sql
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top