SPI_cursor_parse_open
SPI_cursor_parse_open — 使用查询字符串和参数建立游标
大纲
Portal SPI_cursor_parse_open(const char *name, const char *command, const SPIParseOpenOptions *options)
描述
SPI_cursor_parse_open 建立一个游标(内部即一个
portal),用于执行指定的查询字符串。它相当于先调用
SPI_prepare_cursor 再调用
SPI_cursor_open_with_paramlist,只是查询字符串中的参数引用完全通过提供 ParamListInfo 对象来处理。
对于一次性查询执行,推荐优先使用此函数,而不是
SPI_prepare_cursor 加
SPI_cursor_open_with_paramlist 的组合。如果同一条命令要用很多不同参数执行,两种方法孰快则取决于重新规划的代价与定制计划带来的收益之间的权衡。
options->params 对象通常应当为每个参数都设置
PARAM_FLAG_CONST 标志,因为该查询总是使用一次性计划。
传入的参数数据会被复制到该游标的 portal 中,因此即使该游标仍然存在,也可以释放这些参数数据。
参数
const char *nameportal 的名称,或为
NULL以让系统选择名称const char *command命令字符串
const SPIParseOpenOptions *options包含可选参数的结构体
调用者应始终先将整个 options 结构体清零,然后再填写想设置的字段。这样可以保证代码的前向兼容性,因为未来添加到该结构体中的任何字段,都会被定义为在取零值时保持向后兼容。当前可用的
options 字段如下:
ParamListInfoparams包含查询参数类型和值的数据结构;没有参数时为 NULL
intcursorOptions整数形式的游标选项位掩码,零会导致默认行为
boolread_onlytrue表示只读执行
返回值
指向包含该游标的 portal 的指针。注意这里没有错误返回约定,任何错误都将通过 elog 报告。