SPI_cursor_parse_open — 問い合わせ文字列とパラメータを使ってカーソルを設定する
Portal SPI_cursor_parse_open(const char *name
, const char *command
, const SPIParseOpenOptions *options
)
SPI_cursor_parse_open
は特定の問い合わせ文字列を実行するカーソル(内部的にはポータル)を設定します。
これは、問い合わせ文字列内のパラメータ参照がParamListInfo
を与えることで完全に取り扱われることを除いて、SPI_prepare_cursor
に続けてSPI_cursor_open_with_paramlist
を実行するのと似ています。
一度限りの問い合わせの実行に対しては、この関数はSPI_prepare_cursor
に続いてSPI_cursor_open_with_paramlist
を実行するよりも好ましいです。
同じコマンドが多くの異なるパラメータで実行されるのなら、再計画のコストとカスタム計画の利益に依存してどちらかの方法がより速いでしょう。
その問い合わせに対しては一度限りの計画が必ず使われますので、options->params
オブジェクトは通常各パラメータにPARAM_FLAG_CONST
フラグをつけるべきです。
渡されてきたパラメータデータはカーソルのポータルにコピーされますので、カーソルが存在している間に解放できます。
const char * name
ポータルの名前、あるいはシステムに名前を決定させる場合はNULL
const char * command
コマンド文字列
const SPIParseOpenOptions * options
オプションの引数を含む構造体
呼び出し元は、必ずoptions
構造体全体をゼロクリアしてから、設定したいフィールドを埋めるべきです。
構造体に将来追加されるフィールドは、ゼロであれば後方互換性があるように振る舞うよう定義されますので、これはコードの将来の互換性を確実にします。
現在利用可能なoptions
フィールドは以下の通りです。
ParamListInfo params
問い合わせパラメータの型と値を含むデータ構造。なければNULL
int cursorOptions
カーソルオプションの整数ビットマスク。ゼロの場合はデフォルトの動作
bool read_only
読み取りのみの実行の場合true
カーソルを含んだポータルへのポインタ。
エラーを返す規約がないことに注意してください。
すべてのエラーはelog
で報告されます。