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