59.3. 外部数据包装器帮助器函数#
核心服务器导出了多个帮助器函数,以便外部数据包装器的作者可以轻松访问 FDW 相关对象(例如 FDW 选项)的属性。要使用任何这些函数,您需要在源文件中包含头文件foreign/foreign.h
。该头文件还定义了这些函数返回的结构类型。
ForeignDataWrapper *
GetForeignDataWrapperExtended(Oid fdwid, bits16 flags);
此函数返回一个ForeignDataWrapper
对象,该对象用于具有给定 OID 的外来数据包装器。ForeignDataWrapper
对象包含 FDW 的属性(有关详细信息,请参阅foreign/foreign.h
)。flags
是按位或运算的位掩码,表示一组额外的选项。它可以采用值FDW_MISSING_OK
,在这种情况下,会向调用者返回NULL
结果,而不是为未定义的对象返回错误。
ForeignDataWrapper *
GetForeignDataWrapper(Oid fdwid);
此函数返回一个ForeignDataWrapper
对象,该对象用于具有给定 OID 的外来数据包装器。ForeignDataWrapper
对象包含 FDW 的属性(有关详细信息,请参阅foreign/foreign.h
)。
ForeignServer *
GetForeignServerExtended(Oid serverid, bits16 flags);
此函数返回一个ForeignServer
对象,该对象用于具有给定 OID 的外来服务器。ForeignServer
对象包含服务器的属性(有关详细信息,请参阅foreign/foreign.h
)。flags
是按位或运算的位掩码,表示一组额外的选项。它可以采用值FSV_MISSING_OK
,在这种情况下,会向调用者返回NULL
结果,而不是为未定义的对象返回错误。
ForeignServer *
GetForeignServer(Oid serverid);
此函数返回一个ForeignServer
对象,该对象用于具有给定 OID 的外来服务器。ForeignServer
对象包含服务器的属性(有关详细信息,请参阅foreign/foreign.h
)。
UserMapping *
GetUserMapping(Oid userid, Oid serverid);
此函数返回一个UserMapping
对象,该对象用于给定服务器上给定角色的用户映射。(如果特定用户没有映射,它将返回PUBLIC
的映射,或者如果没有映射,则抛出错误。)UserMapping
对象包含用户映射的属性(有关详细信息,请参阅foreign/foreign.h
)。
ForeignTable *
GetForeignTable(Oid relid);
此函数返回一个ForeignTable
对象,该对象用于具有给定 OID 的外来表。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 为 true,则返回 NULL,否则引发错误。
ForeignServer *
GetForeignServerByName(const char *name, bool missing_ok);
此函数返回一个ForeignServer
对象,该对象用于具有给定名称的外来服务器。如果找不到服务器,如果 missing_ok 为 true,则返回 NULL,否则引发错误。