核心服务器导出了若干帮助函数,使外部数据包装器的作者能够方便地
访问与 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,
否则抛出
错误。