システムカタログとは
システムカタログとはPostgreSQLの内部情報を管理するための特殊なテーブルやVIEWの事です。各種システム設定、各種メタ情報などが保持されているようです。具体的な名前は何れもpg_から始まる名前でpg_catalogスキーマに作成されています。つまりはデータベース毎に保持しています。(同一クラスター内に複数データベースが存在する場合それぞれのデータベースで保持しています)
pg_catalogスキーマは特別で、サーチパスへの指定がなくても検索パスに含まれます。そのためスキーマ修飾不要で利用する事ができます。
pg_catalogと同じようなテーブルやビューを保持しているinformation_schemaスキーマが存在しますがこちらはANSI SQL標準に準拠したメタデータテーブルやビューの集合です。異なるデータベースとの互換性を保つ意味もあるようです。
システムカタログが確認できるSQL
select table_catalog,table_schema,table_name,table_type from information_schema.tables t where t.table_schema ='pg_catalog' ;
実行例
myposdb=# select table_catalog,table_schema,table_name,table_type
myposdb-# from information_schema.tables t
myposdb-# where t.table_schema ='pg_catalog'
myposdb-# order by 3
myposdb-# ;
table_catalog | table_schema | table_name | table_type
---------------+--------------+---------------------------------+------------
myposdb | pg_catalog | pg_aggregate | BASE TABLE
myposdb | pg_catalog | pg_am | BASE TABLE
myposdb | pg_catalog | pg_amop | BASE TABLE
myposdb | pg_catalog | pg_amproc | BASE TABLE
myposdb | pg_catalog | pg_attrdef | BASE TABLE
myposdb | pg_catalog | pg_attribute | BASE TABLE
myposdb | pg_catalog | pg_auth_members | BASE TABLE
myposdb | pg_catalog | pg_authid | BASE TABLE
myposdb | pg_catalog | pg_available_extension_versions | VIEW
myposdb | pg_catalog | pg_available_extensions | VIEW
myposdb | pg_catalog | pg_cast | BASE TABLE
myposdb | pg_catalog | pg_class | BASE TABLE
myposdb | pg_catalog | pg_collation | BASE TABLE
myposdb | pg_catalog | pg_config | VIEW
myposdb | pg_catalog | pg_constraint | BASE TABLE
myposdb | pg_catalog | pg_conversion | BASE TABLE
myposdb | pg_catalog | pg_cursors | VIEW
myposdb | pg_catalog | pg_database | BASE TABLE
myposdb | pg_catalog | pg_db_role_setting | BASE TABLE
myposdb | pg_catalog | pg_default_acl | BASE TABLE
myposdb | pg_catalog | pg_depend | BASE TABLE
myposdb | pg_catalog | pg_description | BASE TABLE
myposdb | pg_catalog | pg_enum | BASE TABLE
myposdb | pg_catalog | pg_event_trigger | BASE TABLE
myposdb | pg_catalog | pg_extension | BASE TABLE
myposdb | pg_catalog | pg_file_settings | VIEW
myposdb | pg_catalog | pg_foreign_data_wrapper | BASE TABLE
myposdb | pg_catalog | pg_foreign_server | BASE TABLE
-- More --