↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。

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

核心服务器导出了若干辅助函数,使外部数据包装器作者能够方便地访问 FDW 相关对象的属性,例如 FDW 选项。要使用这些函数中的任意一个,需要在源码文件中包含头文件 foreign/foreign.h。该头文件也定义了这些函数返回的结构体类型。

ForeignDataWrapper *
GetForeignDataWrapperExtended(Oid fdwid, uint16 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, uint16 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,否则抛出错误。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.