FDW 作者需要实现一个处理器函数,还可以选择性地实现一个验证器 函数。 这两个函数都必须用 C 等编译型语言编写,使用 version-1 接口。 关于 C 语言调用约定和动态加载的细节,见 Section 36.10。
处理器函数只是返回一个包含指向回调函数的函数指针的结构,
这些回调函数会被规划器、执行器和各种维护命令调用。
编写 FDW 的大部分工作就在于实现这些回调函数。
处理器函数必须以
PostgreSQL 注册为不接收参数并返回特殊
伪类型 fdw_handler 的函数。
回调函数是普通 C 函数,在 SQL 层面不可见也不可调用。
回调函数在 Section 58.2 中描述。
验证器函数负责验证其外部数据包装器在
CREATE 和 ALTER 命令中给出的
选项,以及使用该包装器的外部服务器、用户映射和外部表的
选项。
验证器函数必须被注册为接收两个参数:一个包含要验证选项的
text 数组,以及一个表示选项所关联对象类型的 OID。
后者对应于该对象将被存入的系统目录的 OID,它是以下之一:
AttributeRelationId
ForeignDataWrapperRelationId
ForeignServerRelationId
ForeignTableRelationId
UserMappingRelationId
如果未提供验证器函数,选项在对象创建和修改时都不会被检查。