pgx_shdependカタログは、PGXNODEのような共有オブジェクト間のリレーション依存関係を保持します。 この情報はPostgreSQLが依存関係を削除しようとする前に、これらのオブジェクトを参照されないように保証することを許可します。
多くのシステムカタログと異なり、pgx_shdependはクラスタのすべてのデータベースに共有されています。 データベースごとではなく、クラスタごとにただ1つのpgx_shdependのコピーがあります。
列 | 型 | 参照先 | 制約 | 説明 |
---|---|---|---|---|
dbid | oid | pg_database.oid | 依存するオブジェクトが格納されたデータベースのOIDです。共有オブジェクトでは0です。 | |
classid | oid | pg_class.oid | 依存するオブジェクトを含んだシステムカタログのOIDです。 | |
objid | oid | いずれかのOID列 | 特定の依存するオブジェクトのOIDです。 | |
objsubid | int4 | テーブルの列の場合、これは列番号です(objidとclassidはテーブル自身を参照します)。 他のすべての種類のオブジェクトでは、この列は0になります。 | ||
refclassid | oid | pg_class.oid | 参照されるオブジェクトが入っているシステムカタログのOIDです(共有カタログである必要があります)。 | |
refobjid | oid | 特定の参照されるオブジェクトのOIDです。 | ||
deptype | char | この依存関係の特定のセマンティクスを定義するコードです。 |
すべての場合において、pgx_shdepend項目は依存するオブジェクトも削除しない限り、参照されるオブジェクトを削除できないことを示します。 もっとも、deptypeによって指定される以下のようなオプションもあります。
SHARED_DEPENDENCY_OWNER (n) 参照されるオブジェクト(PGXNODEである必要があります)が依存する、オブジェクトが紐づけられているPGXNODEです。
他の依存関係のオプションが将来必要になる可能性があります。 現状の定義は、参照されるオブジェクトとしてPGXNODEのみをサポートしていることに特に注意してください。