カタログpg_shdependは、データベースオブジェクトとロールなどの共有オブジェクトとの間の依存関係を記録します。 この情報では、PostgreSQLを使用して、オブジェクトを削除する前に参照しないようにします。
ほとんどのシステムカタログとは異なり、pg_shdependはクラスターのすべてのデータベースで共有されます。pg_shdependのコピーはクラスターごとに1つだけで、データベースごとに1つではありません。
列 | データ型 | 説明 |
|
| 依存オブジェクトが存在するデータベースのOID、または共有オブジェクトまたは |
|
| 依存オブジェクトが存在するシステムカタログのOID、または |
|
| 特定の依存オブジェクトのOID、または |
|
| テーブル列の場合、これは列番号です ( |
|
| 参照オブジェクトが存在するシステムカタログのOID (共有カタログである必要があります) 。 |
|
| 特定の参照オブジェクトのOID。 |
|
| この依存関係の特定のセマンティクスを定義するコード。 |
いずれの場合も、pg_shdependエントリは、依存オブジェクトもドロップしないと参照オブジェクトをドロップできないことを示します。 ただし、deptypeによって識別されるいくつかのサブフレーバーがあります。
SHARED_DEPENDENCY_OWNER(o) 参照オブジェクト (ロールである必要があります) は、依存オブジェクトの所有者です。SHARED_DEPENDENCY_ACL(a) 参照されるオブジェクト (ロールでなければならない) は、依存オブジェクトのACL (アクセス制御リスト、すなわち特権リスト) に記載される。 (オブジェクトの所有者はとにかくaSHARED_DEPENDENCY_OWNERentryを持つため、ASHARED_DEPENDENCY_ACLentryは作成されません。)SHARED_DEPENDENCY_POLICY(r) 参照されるオブジェクト (ロールでなければならない) は、依存ポリシーオブジェクトのターゲットとして言及される。SHARED_DEPENDENCY_PIN(p) 依存オブジェクトは存在しない。このタイプのエントリは、システム自体が参照されるオブジェクトに依存していることを示す信号であり、そのオブジェクトは決して削除されてはならない。 このタイプのエントリはbyinitdbのみ作成されます。 依存オブジェクトの列にはゼロが含まれます。