Name
SPI_saveplan -- 保存一个传入的规划
Synopsis
SPI_saveplan(
plan
)
输出
-
void *
-
执行规划位置.如果不成功则为 NULL.
-
SPI_result
-
如果规划为 NULL 为
SPI_ERROR_ARGUMENT
. |
如果过程未连接则返回
SPI_ERROR_UNCONNECTED
. |
描述
SPI_saveplan
将一个
SPI_prepare
准备的规划保存在
安全的内存中,以保护它不被
SPI_finish
或者
事务管理器释放.
目前的
PostgreSQL
还没有能力在系统
表里存储已准备的规划,并且在它们执行的时候抓取它们.
这个特性将在未来的版本中实现.
一种弥补的办法是我们可以在当前会话过程中的随后的调用中
复用已准备的规划.使用
SPI_execp
执行这样的
已保存好的规划.
用法
SPI_saveplan
把一个传入的规划
(由
SPI_prepare
准备)保存到可以防止
SPI_finish
和事务管理器释放的内存中,
并且返回一个指向这个已保存规划的指针.你可以在一个本地变量中
保存这个返回的指针.不管你是在准备一个规划还是在 SPI_execp(见下文)
里使用一个已准备的规划,你都要检查该指针是否为 NULL.
注意:
如果在你的会话过程中有一个已准备规划引用的对象(一个关系,函数等等)
被删除(由你的后端或者其它进程删除),那么
SPI_execp
执行这个规划所产生的结果将不可预料.
|