Postgresql 中文操作指南

59.3. Foreign Data Wrapper Helper Functions #

核心服务器导出了几个帮助器函数,以便外来数据包装器的开发者可以轻松获得外来数据包装器相关对象的属性,例如,外来数据包装器选项。要使用这些函数中的任何一个,需要在你的源文件中包含头文件 foreign/foreign.h。该头文件还定义了这些函数返回的结构类型。

ForeignDataWrapper *
GetForeignDataWrapperExtended(Oid fdwid, bits16 flags);

该函数返回带有给定 OID 的外来数据包装器的 ForeignDataWrapper 对象。ForeignDataWrapper 对象包含外来数据包装器的属性(有关详细信息,请参阅 foreign/foreign.h)。flags 是按位或运算的位掩码,表示一组额外的选项。它可以取值 FDW_MISSING_OK,在这种情况下,NULL 结果会返回给调用者,而不是对未定义对象返回错误。

ForeignDataWrapper *
GetForeignDataWrapper(Oid fdwid);

该函数返回带有给定 OID 的外来数据包装器的 ForeignDataWrapper 对象。ForeignDataWrapper 对象包含外来数据包装器的属性(有关详细信息,请参阅 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);

该函数返回具有给定外来表 OID 和属性编号的列的列外来数据包装器选项,形式为 DefElem 列表。如果列没有选项,则返回 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,否则引发错误。