第四十八章.服务器编程接口

内容
接口函数
接口支持函数
存储器管理
数据改变的可视性
例子
服务器编程接口(Server Programming Interface)SPI)给我们在用户定义的 C 函数里面运行 SQL查询的能力.可用的过程语言(PL)给我们一个实现这些功能的可选的手段.

实际上,SPI 只是一套用于访问分析器,规划器,优化器和执行器(Parser,Planner,Optimizer and Executor)的本机接口函数.SPI 同样做一些存储器管理工作.

为了避免混淆,我们将使用 函数(function) 来代表 SPI 接口函数,用 过程(procedure) 代表用户用 SPI定义 C 函数.

SPI 过程总是被一些(上层)执行器和 SPI 管理器用执行器调用来运行你的查询.其他过程可以通过执行器从你的过程里运行查询来调用.

注意,如果在你的过程里执行查询时,事务退出了,那么控制不会返回到你的过程中.相反,所有工作都将回卷并且服务器将等待客户端的另一个命令.这一点将在以后的版本中修正.

其他限制是不能执行 BEGIN,END 和 ABORT (交易控制语句)和游标操作.这些同样在将来的版本中要被修改.

如果执行成功了,SPI 函数返回一个非负结果(或者通过返回一个整数值或放在 SPI_result 全局变量,象下面描述的那样).出错时,返回一个负数或 NULL 结果.

接口函数