SPI_saveplan は、SPI_prepare によって作成されたプランを SPI_finish やトランザクション マネージャによって行なわれるメモリの開放の影響を受けない安全なメモリ領域 に保存します。
現状の Postgres では、準備済みプランを システムカタログに保存しておき、実行時にそれを取り出すといった機能はあり ません。この機能は将来実装されるでしょう。 代わりに、同じセッションの中で、 後から起動されるプロシージャが準備済みプランを再利用する機能はあり ます。この保存されたプランを実行するには、 SPI_execp を使用して下さい。
SPI_saveplan は(SPI_prepare によって準備され)渡された実行プランを SPI_finish やトランザクションマネージャによっ て行なわれるメモリの開放の影響を受けない 安全なメモリ領域に保存し、 その保存した実行プランを示すポインタを返します。 返されたポインタをローカル変数に保存することもできます。実行プランを準備する時や (後述の) SPI_execp で既存の準備済み実行プランを使用する時は、常にこのポインタが NULL かどうかを点検して下さい。
Note: セッション中に準備済み実行プランが参照する(リレーション、関数などの)オブ ジェクトが 1 つでも(バックエンドや他のプロセスによって)削除されると、 この実行プランを使った SPI_execp の結果は予測できないもの になります。