支援版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2

57.3. 外部資料包裝器輔助函數 #

核心伺服器匯出幾個輔助函數,以便外部資料包裝器的作者可以輕鬆存取與 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,否則引發錯誤。

提交更正

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