↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

SPI_saveplan

SPI_saveplan — 保存传入的计划

大纲

SPI_saveplan(plan)

输入

void *query

传入的计划

输出

void *

执行计划的位置。不成功时为 NULL。

SPI_result
→ SPI_ERROR_ARGUMENT plan 为 NULL 时
→ SPI_ERROR_UNCONNECTED 过程未连接时

描述

SPI_saveplan 把由 SPI_prepare 准备的计划存储在安全内存中, 使其不会被 SPI_finish 或事务管理器释放。

在当前版本的 Postgres 中,还无法把预备 计划存储在系统目录中并在执行时从那里取出。这一点将在未来的版本中 实现。 作为替代,可以在当前会话中该过程的后续调用里复用预备计划。 使用 SPI_execp 执行这个保存的计划。

用法

SPI_saveplan 把传入的计划(由 SPI_prepare 准备)保存在受保护的内存中,使其 不会被 SPI_finish 和事务管理器释放,并返回指向 该已保存计划的指针。可以把返回的指针保存在局部变量中。无论是准备 计划时,还是在 SPI_execp 中使用已准备好的计划时(见下文),都请 始终检查该指针是否为 NULL。

注意

如果预备计划所引用的对象(关系、函数等)在会话期间被删除(由你的 后端或另一个进程删除),那么对该计划执行 SPI_execp 的结果将是不可预知的。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。