SPI_execp

Name

SPI_execp -- SPI_saveplan によって得られる計画を実行します。

Synopsis

SPI_execp(plan,
values,
nulls,
tcount)

入力

void *plan

実行計画。

Datum *values

実パラメータの値。

char *nulls

どのパラメータが NULL を許すかを記述した配列。

'n' は NULL を許すことを示します。
' ' は NULL を許さないことを示します。

int tcount

計画が実行対象とするタプルの数。

出力

int

SPI_exec 同様、次のものを返します。

SPI_ERROR_ARGUMENT 引数 plan が NULL または 引数 tcount < 0の場合。
SPI_ERROR_PARAM 引数 values が NULL かつ、 引数 plan が何かしらの引 数を必要とする場合。

SPI_tuptable

成功すると、SPI_exec と同じように初期化されます。

SPI_processed

成功すると、SPI_exec と同じように初期化されます。

説明

SPI_execp は、SPI_prepare に よって作成された計画を SPI_finish やトランザクショ ンマネージャによって行なわれるメモリの開放の影響を受けない安全なメモリ領 域に保存します。

現状の Postgres では、準備済み計画をシ ステムカタログに保存しておき、実行時にそれを取り出すといった機能は ありません。この機能は将来実装されるでしょう。 代わりに、同じセッションの中で、後から起動されるプロシージャが準備 済み計画を再利用する機能はあります。この保存された計画を実行するに は、SPI_execp を使用して下さい。

使い方

引数 nulls がNULLの場 合、SPI_execpは、(取り得る)全ての値は非 NULL であるものとします。

Note: セッション中に準備済み計画が参照する(リレーション、関数などの)オ ブジェクトが 1 つでも(バックエンドや他のプロセスによって)削除され ると、この計画を使った SPI_execp の結果は予測 できないものになります。