PostgreSQL Programmer's Guide
PrevNext

SPI_saveplan

Name

SPI_saveplan — 渡されたプランを保存する

SPI_saveplan(plan)

入力

void *query

渡されたプラン

出力

void *

実行プランへのポインタ。失敗すると NULL が返ります。

SPI_result

SPI_ERROR_ARGUMENT プランがNULL
SPI_ERROR_UNCONNECTED 手続きが未接続

説明

SPI_saveplanSPI_prepare が準備したプランを、 SPI_finish やトランザクションマネージャに よって開放されない安全なメモリ領域に保存します。

現状の Postgres には、 準備したプランをシステムカタログに保存しておいて実行時に 取り出す機能はありません。 この機能は将来実装されるでしょう。 代わりに、同じセッションの中で、後から起動される手続きがプランを再利用 することは可能です。 保存しておいたプランを実行するには、 SPI_execp を御使い下さい。

使い方

SPI_saveplan は (SPI_prepareが準備した)プランを SPI_finish やトランザクションが開放しない メモリに保存して、そこへのポインタを返します。 返却されたポインタはローカル変数に保存しても構いません。 プランを準備するときや、すでに用意されているプランを SPI_execp で利用するときには、必ずこのポインタが NULL かどうか チェックして下さい(下記参照)。

NOTE: もしセッション中に(バックエンドや他のプロセスによって)、 用意されているプランが参照するオブジェクト(リレーション、関数など) が削除されると、SPI_execp がこのプランを実行した結果は予測できないものになります。


PrevHomeNext
SPI_prepareUpSPI_execp