2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2

58.3. 外部資料包裝器輔助函式 #

核心伺服器匯出了幾個輔助函式,以便外部資料包裝器 (FDW) 的作者可以方便地訪問 FDW 相關物件的屬性,例如 FDW 選項。要使用這些函式中的任何一個,您需要將標頭檔案 foreign/foreign.h 包含到您的原始檔中。該標頭檔案還定義了這些函式返回的結構體型別。

ForeignDataWrapper *
GetForeignDataWrapperExtended(Oid fdwid, bits16 flags);

此函式返回具有給定 OID 的外部資料包裝器的 ForeignDataWrapper 物件。ForeignDataWrapper 物件包含 FDW 的屬性(有關詳細資訊,請參見 foreign/foreign.h)。flags 是一個按位或運算的位掩碼,表示一組額外的選項。它可以取值為 FDW_MISSING_OK,在這種情況下,將向呼叫者返回 NULL 結果,而不是對未定義物件的錯誤。

ForeignDataWrapper *
GetForeignDataWrapper(Oid fdwid);

此函式返回具有給定 OID 的外部資料包裝器的 ForeignDataWrapper 物件。ForeignDataWrapper 物件包含 FDW 的屬性(有關詳細資訊,請參見 foreign/foreign.h)。

ForeignServer *
GetForeignServerExtended(Oid serverid, bits16 flags);

此函式返回具有給定 OID 的外部伺服器的 ForeignServer 物件。ForeignServer 物件包含伺服器的屬性(有關詳細資訊,請參見 foreign/foreign.h)。flags 是一個按位或運算的位掩碼,表示一組額外的選項。它可以取值為 FSV_MISSING_OK,在這種情況下,將向呼叫者返回 NULL 結果,而不是對未定義物件的錯誤。

ForeignServer *
GetForeignServer(Oid serverid);

此函式返回具有給定 OID 的外部伺服器的 ForeignServer 物件。ForeignServer 物件包含伺服器的屬性(有關詳細資訊,請參見 foreign/foreign.h)。

UserMapping *
GetUserMapping(Oid userid, Oid serverid);

此函式返回給定角色在給定伺服器上的使用者對映的 UserMapping 物件。(如果不存在特定使用者的對映,則返回 PUBLIC 的對映,如果兩者都不存在,則丟擲錯誤。)UserMapping 物件包含使用者對映的屬性(有關詳細資訊,請參見 foreign/foreign.h)。

ForeignTable *
GetForeignTable(Oid relid);

此函式返回具有給定 OID 的外部表的 ForeignTable 物件。ForeignTable 物件包含外部表的屬性(有關詳細資訊,請參見 foreign/foreign.h)。

List *
GetForeignColumnOptions(Oid relid, AttrNumber attnum);

此函式以 DefElem 列表的形式返回具有給定外部表 OID 和屬性編號的列的每個列 FDW 選項。如果該列沒有選項,則返回 NIL。

除基於 OID 的查詢函式外,某些物件型別還具有基於名稱的查詢函式。

ForeignDataWrapper *
GetForeignDataWrapperByName(const char *name, bool missing_ok);

此函式返回具有給定名稱的外部資料包裝器的 ForeignDataWrapper 物件。如果找不到該包裝器,則當 missing_ok 為 true 時返回 NULL,否則丟擲錯誤。

ForeignServer *
GetForeignServerByName(const char *name, bool missing_ok);

此函式返回具有給定名稱的外部伺服器的 ForeignServer 物件。如果找不到該伺服器,則當 missing_ok 為 true 時返回 NULL,否則丟擲錯誤。

提交更正

如果您在文件中發現任何不正確之處、與您對特定功能的體驗不符之處或需要進一步澄清之處,請使用 此表單 報告文件問題。