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 の結果は予測
できないものになります。