PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

58.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, 否则抛出 错误。