他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

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結果は予測することができません。