SPI_saveplan はSPI_prepare で準備された計画を SPI_finish やトランザクションマネージャによる解放から保護された、安全なメモリ内に保存します。
現在のバージョンの PostgreSQL では、システムカタログ内に準備された計画を保存し、実行時に取り出す能力はありません。将来のバージョンでは実装されます。 代替方法として、現在のセッションにおけるプロシージャを連続して呼び出すことで、準備された計画を再利用することができます。保存された計画を実行するには SPI_execp を使用して下さい。
SPI_saveplan は(SPI_prepare で準備された、)渡された計画をSPI_finish やトランザクションマネージャによる解放から保護された、安全なメモリ内に保存し、保存した計画を指すポインタを返します。返されたポインタをローカル変数に保存することができます。計画を準備する時や準備済みの計画をSPI_execp (後述)で使用する時には、このポインタがNULLかどうかを常に検査して下さい。
Note: 準備された計画によって参照される(リレーションや関数などの)オブジェクトの1つがセッション中に(バックエンドや他のプロセスによって)削除された場合、この計画のSPI_execp結果は予測することができません。