57.3. 外部数据包装器帮助程序功能

从核心服务器导出了一些帮助程序功能,以便外部数据包装器的作者可以轻松访问与 FDW 相关的对象的属性,例如 FDW 选项。要使用任何这些功能,您需要在源文件中包含头文件foreign/foreign.h。该 Headers 还定义了这些函数返回的结构类型。

ForeignDataWrapper *
GetForeignDataWrapper(Oid fdwid);

此函数为具有给定 OID 的外部数据包装返回ForeignDataWrapper对象。 ForeignDataWrapper对象包含 FDW 的属性(有关详细信息,请参见foreign/foreign.h)。

ForeignServer *
GetForeignServer(Oid serverid);

此函数为具有给定 OID 的外部服务器返回ForeignServer对象。 ForeignServer对象包含服务器的属性(有关详细信息,请参见foreign/foreign.h)。

UserMapping *
GetUserMapping(Oid userid, Oid serverid);

此函数为给定服务器上给定角色的用户 Map 返回UserMapping对象。 (如果没有特定用户的 Map,它将返回PUBLIC的 Map,如果没有 Map,则将引发错误.)UserMapping对象包含用户 Map 的属性(有关详细信息,请参见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,否则引发错误。