ページの先頭行へ戻る
Enterprise Postgres 10 アプリケーション開発ガイド
FUJITSU Software

1.5.2 システムカタログの参照方法に関する注意

FUJITSU Enterprise Postgresのシステムの情報やデータベースのオブジェクトの情報を取得するために、システムカタログが利用できます。

しかし、システムカタログは、今後のFUJITSU Enterprise Postgresのバージョンアップにともない変更されることがあります。また、システムカタログはFUJITSU Enterprise Postgresに固有の情報を返却するものが多く存在します。

そのため、可能な限り、標準SQLで定義されている情報スキーマ(information_schema)を参照するようにしてください。ただし、列が追加されることもあるため、選択リストに“*”を指定した問い合わせを使用しないようにすることが必要です。

参照

情報スキーマについては、“PostgreSQL文書”の“クライアントインタフェース”の“情報スキーマ”を参照してください。

情報スキーマにはない固有の情報を取得するには、システムカタログを参照する必要がありますが、この場合は、システムカタログを参照するビューを定義し、アプリケーションではシステムカタログを直接参照せずに、ビューを参照するようにしてください。ただし、ビューの定義では、ビュー名の後ろに明示的に列名を指定して定義する必要があります。

以下はビューの定義例と使用例です。

CREATE VIEW my_tablespace_view(spcname) AS SELECT spcname FROM pg_tablespace;
SELECT * FROM my_tablespace_view V1, pg_tables T1 WHERE V1.spcname = T1.tablespace;

これにより、システムカタログに変更が入った場合、アプリケーションを変更することなく、ビューを変更するだけで対応することができます。

以下は、ビューを再定義して変更が入らなかったかのように対処している例です。

列名 spcname がspacename に変更されたことにともない、システムカタログ pg_tablespaceを再定義しています。

DROP VIEW my_tablespace_view;
CREATE VIEW my_tablespace_view(spcname) AS SELECT spacename FROM pg_tablespace;