SPI_saveplan

Name

SPI_saveplan -- 渡された計画を保存します。

Synopsis

SPI_saveplan(plan)

入力

void *query

渡される計画です。

出力

void *

実行計画の場所です。失敗した場合はNULLです。

SPI_result

計画が NULL の場合、SPI_ERROR_ARGUMENTです。
プロシージャが未接続の場合は SPI_ERROR_UNCONNECTED です。

説明

SPI_saveplanSPI_prepare で準備された計画を SPI_finish やトランザクションマネージャによる解放から保護された、安全なメモリ内に保存します。

現在のバージョンの PostgreSQL では、システムカタログ内に準備された計画を保存し、実行時に取り出す能力はありません。将来のバージョンでは実装されます。 代替方法として、現在のセッションにおけるプロシージャを連続して呼び出すことで、準備された計画を再利用することができます。保存された計画を実行するには SPI_execp を使用して下さい。

使用方法

SPI_saveplan は(SPI_prepare で準備された、)渡された計画をSPI_finish やトランザクションマネージャによる解放から保護された、安全なメモリ内に保存し、保存した計画を指すポインタを返します。返されたポインタをローカル変数に保存することができます。計画を準備する時や準備済みの計画をSPI_execp (後述)で使用する時には、このポインタがNULLかどうかを常に検査して下さい。

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