2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2

58.3. 外部数据包装器辅助函数 #

核心服务器导出了几个辅助函数,以便外部数据包装器 (FDW) 的作者可以方便地访问 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,否则抛出错误。

提交更正

如果您在文档中发现任何不正确之处、与您对特定功能的体验不符之处或需要进一步澄清之处,请使用 此表单 报告文档问题。