受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

55.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);

这个函数为具有给定外部表 OID 和属性号的列返回 FDW 选项,形式为一个DefElem列表。如果该列没有选项则返回 NIL。

某些对象类型除了基于OID的查找函数之外,还具有基于名称的查找函数:

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

这个函数为一个具有给定名称的外部数据包装器返回ForeignDataWrapper对象。如果找不到该包装器,则在 missing_ok 为真时返回 NULL,否则抛出错误。

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

这个函数为一个具有给定名称的外部服务器返回ForeignServer对象。如果找不到该服务器,则在 missing_ok 为真时返回 NULL,否则抛出错误。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。