codecamp

PostgreSQL 外部数据包装器函数

FDW的作者需要实现一个处理器函数,并且可以有选择地实现一个验证器函数。两个函数都必须被用一种编译语言(如 C)来编写,并使用版本-1接口。关于 C 语言调用规范和动态载入的细节,请见第 37.10 节

处理器函数简单地返回一个函数指针结构给回调函数,回调函数将被规划器、执行器和多种维护命令调用。编写一个FDW的大部分工作量都在实现这些回调函数上。处理器函数必须被注册在PostgreSQL中,并且注册为不需要参数并且返回特殊的伪类型fdw_handler。回调函数则是普通的 C 函数并且对于 SQL 层是不可见的或者不可调用的。回调函数在第 56.2 节中描述。

验证器函数负责验证CREATEALTER命令中对它的外部数据包装器给出的选项,以及使用该包装器的外部服务器、用户映射和外部表。验证器函数必须被注册为要求两个参数:一个包含需要被验证的选项的文本数组,以及一个表示与这些选项相关联的对象类型的OID(以该对象可能被存储的系统目录的OID的形式,可以是ForeignDataWrapperRelationIdForeignServerRelationIdUserMappingRelationIdForeignTableRelationId)。如果没有提供验证器函数,在对象创建或修改时选项不会被检查。


PostgreSQL 编写一个外部数据包装器
PostgreSQL 外部数据包装器回调例程
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }