PostgreSQL 外部數(shù)據(jù)包裝器助手函數(shù)

2021-08-24 14:36 更新

多個助手函數(shù)被從核心服務(wù)器輸出,這樣外部數(shù)據(jù)包裝器的作者們可以很容易訪問到FDW相關(guān)對象的屬性,例如FDW選項。要使用任何其中一個函數(shù),你需要在你的源文件中包括頭文件foreign/foreign.h。這個頭也定義了被這些函數(shù)返回的結(jié)構(gòu)類型。

ForeignDataWrapper *
GetForeignDataWrapperExtended(Oid fdwid, bits16 flags);

此功能返回具有給定 OID 的外數(shù)據(jù)包裝器的ForeignDataWrapper對象。 ForeignDataWrapper對象包含 FDW 的屬性(詳細信息請參閱foreign/foreign.h)。 flags是一個 bitwise-or'd位掩碼,指示一組外加的選項集。 它可以取值FDW_MISSING_OK,在這種情況下NULL 結(jié)果將返回給調(diào)用方,而不是返回錯誤給未定義的對象。

ForeignDataWrapper *
GetForeignDataWrapper(Oid fdwid);

這個函數(shù)為具有給定 OID 的外部數(shù)據(jù)包裝器返回一個ForeignDataWrapper對象。一個ForeignDataWrapper對象包含該FDW的特性(詳見foreign/foreign.h)。

ForeignServer *
GetForeignServerExtended(Oid serverid, bits16 flags);

此功能返回具有給定 OID 的外數(shù)據(jù)包裝器的ForeignServer對象。 ForeignServer對象包含 FDW 的屬性(詳細信息請參閱foreign/foreign.h)。 flags是一個 bitwise-or'd位掩碼,指示一組外加的選項集。 它可以取值FDW_MISSING_OK,在這種情況下NULL 結(jié)果將返回給調(diào)用方,而不是返回錯誤給未定義的對象。

ForeignServer *
GetForeignServer(Oid serverid);

這個函數(shù)為一個具有給定 OID 的外部服務(wù)器返回ForeignServer對象。一個ForeignServer對象包含該服務(wù)器的特性(詳見foreign/foreign.h)。

UserMapping *
GetUserMapping(Oid userid, Oid serverid);

這個函數(shù)為在給定服務(wù)器上的給定角色的用戶映射返回UserMapping對象(如果指定用戶沒有映射,它將返回PUBLIC的映射,如果也沒有則拋出錯誤)。一個UserMapping對象包含該用戶映射的特性(詳見foreign/foreign.h)。

ForeignTable *
GetForeignTable(Oid relid);

該函數(shù)為一個具有給定 OID 的外部表返回ForeignTable對象。一個ForeignTable對象包含該外部表的特性(詳見foreign/foreign.h)。

List *
GetForeignColumnOptions(Oid relid, AttrNumber attnum);

這個函數(shù)為一個具有給定外部表 OID 和屬性號的列返回針對每一列的FDW選項,形式為一個DefElem列表。如果該列沒有選項則返回 NIL。

某些對象類型除了基于OID的查找函數(shù)之外,還具有基于名稱的查找函數(shù):

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

這個函數(shù)為一個具有給定名稱的外部數(shù)據(jù)包裝器返回ForeignDataWrapper對象。如果包裝器沒有找到,在missing_ok為真時返回 NULL,否則拋出一個錯誤。

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

這個函數(shù)為一個具有給定名稱的外部服務(wù)器返回ForeignServer對象。如果該服務(wù)器沒有被找到,在missing_ok為真時返回 NULL,否則拋出一個錯誤。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號