★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

53.48. pg_shdepend #

pg_shdependカタログは、データベースオブジェクトとロールのような共有オブジェクト間のリレーション依存関係を保持します。 この情報はPostgreSQLが依存関係を削除しようとする前に、これらのオブジェクトを参照されないようにすることを保証することを許可します。

pg_dependも参照してください。 pg_dependは単一のデータベース内のオブジェクトに関する依存関係について同じような機能を実行します。

多くのシステムカタログと異なりpg_shdependはクラスタの全てのデータベースに共有されています。 データベース毎ではなく、クラスタ毎にただ1つのpg_shdependのコピーがあります。

表53.48 pg_shdependの列

列 型

説明

dbid oid (参照先 pg_database.oid

依存オブジェクトが属するデータベースのOID。 共有オブジェクトの場合はゼロ

classid oid (参照先 pg_class.oid

依存するオブジェクトが存在するシステムカタログのOID

objid oid (いずれかのOID列)

特定の依存するオブジェクトのOID

objsubid int4

テーブル列の場合、これは列番号です(objidclassidはテーブル自身を参照します)。 他のすべての種類のオブジェクトでは、この列はゼロになります。

refclassid oid (参照先 pg_class.oid

参照されるオブジェクトが入っているシステムカタログのOID(共有カタログである必要があります)

refobjid oid (いずれかのOID列)

特定の参照されるオブジェクトのOID

deptype char

この依存関係の特定のセマンティクスを定義するコード(後述)


すべての場合において、pg_shdepend項目は依存するオブジェクトも削除しない限り、参照されるオブジェクトを削除できないことを示します。 もっとも、deptypeによって指定される以下のようないくつかのオプションもあります。

SHARED_DEPENDENCY_OWNER (o)

参照されるオブジェクト(ロールである必要があります)が依存するオブジェクトの所有者です。

SHARED_DEPENDENCY_ACL (a)

参照されたオブジェクト(ロールである必要があります)が、依存するオブジェクトのACL(アクセス制御リスト。権限リストのこと)内で述べられています。 (所有者はSHARED_DEPENDENCY_OWNER項目を持つため、SHARED_DEPENDENCY_ACL項目は、オブジェクトの所有者に対して作成されません。)

SHARED_DEPENDENCY_POLICY (r)

参照されたオブジェクト(ロールである必要があります)が、依存するポリシーオブジェクトのターゲットとして述べられています。

SHARED_DEPENDENCY_TABLESPACE (t)

参照されているオブジェクト(テーブル空間でなければなりません)は格納を持たないリレーションのためのテーブル空間として言及されています。

他の依存関係のオプションが将来必要になる可能性があります。 現状の定義は、参照されるオブジェクトとしてロールとテーブル空間のみをサポートしていることに特に注意してください。

pg_dependカタログと同様に、initdb時に作成されるほとんどのオブジェクトは固定(pinned)と見なされます。 pg_shdependには、参照オブジェクトまたは依存オブジェクトとして固定されたオブジェクトを持つエントリは作成されません。