SPI_prepare

Name

SPI_prepare -- ユーザ定義のプロシージャをSPIマネージャに接続します。

Synopsis

SPI_prepare(query, nargs, argtypes)

入力

query

問い合わせ文字列。

nargs

入力パラメータ( SQL 関数における $1 ... $nargs )の数。

argtypes

入力引数を示す OID 型のポインタのリスト。

出力

void *

実行計画(パーサ+プランナ+オブティマイザ)を示すポインタ。

Description

SPI_prepare は、実行プラン(パーサ+プランナ+オブティマイザ)を生成し、それを返 します。問い合わせを実行しません。接続済みのプロシージャからのみ呼 び出して下さい。

使い方

引数 nargs はパラメータ( SQL 関数の $1 ... $nargs )の数であり、 問い合わせに $1 が存在しない場合にのみ 0 となります。

生成済み実行計画の実行は非常に高速な場合がありますので、同じ問い 合わせを何回も実行するような場合に、この機能は有益です。

SPI_prepare で返される計画は、 SPI_finish がそれに割り当てたメモリ領域を開放しま すので、現在処理中のプロシージャ中でのみで使用できます。 SPI_saveplan を参照して下さい。

成功した場合、非 NULL のポインタが返ります。失敗した時には NULL の プランが返ります。どちらにしても SPI_exec の戻り値同様、SPI_result が設定されます。ただし引数 query が NULL、または、nargs < 0、または、 nargs > 0 かつ 引数 argtypes が NULL の場合は SPI_ERROR_ARGUMENT が設定されます。