|
Chapter 21. 服务器编程接口
服务器编程接口 ( SPI ) 给我们在用户定义的 C 函数里面运行 SQL 查询的能力.
实际上, SPI 只是一套用于访问分析器,规划器,优化器和执行器 的本机接口函数. SPI 同样做一些存储器管理工作. 为了避免混淆,我们将使用 函数(function) 来代表 SPI 接口函数, 用 过程(procedure) 代表用户用 SPI 定义 C 函数. 使用 SPI 的过程都是由执行器 调用的. SPI 调用随后递归地调用执行器以运行查询. 当执行器被递归地调用的时候,它本身也可以调用那些做了 SPI 调用的过程. 注意,如果在你的过程里执行查询时,事务退出了,那么控制不会返回到你的过程中. 相反,所有工作都将回卷并且服务器将等待客户端的另一个命令. 这一点可能会在以后的版本中修正. 其他限制是不能执行 BEGIN,END 和 ABORT (交易控制语句). 这些同样在将来的版本中要被修改. 如果执行成功了, SPI 函数返回一个非负结果 (或者通过返回一个整数值或放在 SPI_result 全局变量, 象下面描述的那样).出错时,返回一个负数或 NULL 结果. 21.1. 接口函数
|