PostgreSQL | ||
---|---|---|
Prev | Next |
SPI_saveplan(plan)
渡されたプラン
実行プランへのポインタ。失敗すると NULL が返ります。
SPI_ERROR_ARGUMENT プランがNULL |
SPI_ERROR_UNCONNECTED 手続きが未接続 |
SPI_saveplan は SPI_prepare が準備したプランを、 SPI_finish やトランザクションマネージャに よって開放されない安全なメモリ領域に保存します。
現状の Postgres には、 準備したプランをシステムカタログに保存しておいて実行時に 取り出す機能はありません。 この機能は将来実装されるでしょう。 代わりに、同じセッションの中で、後から起動される手続きがプランを再利用 することは可能です。 保存しておいたプランを実行するには、 SPI_execp を御使い下さい。
SPI_saveplan は (SPI_prepareが準備した)プランを SPI_finish やトランザクションが開放しない メモリに保存して、そこへのポインタを返します。 返却されたポインタはローカル変数に保存しても構いません。 プランを準備するときや、すでに用意されているプランを SPI_execp で利用するときには、必ずこのポインタが NULL かどうか チェックして下さい(下記参照)。
NOTE: もしセッション中に(バックエンドや他のプロセスによって)、 用意されているプランが参照するオブジェクト(リレーション、関数など) が削除されると、SPI_execp がこのプランを実行した結果は予測できないものになります。
Prev | Home | Next |
SPI_prepare | Up | SPI_execp |