Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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;否则引发错误。