PostgreSQL Programmer's Guide | ||
---|---|---|
Prev | Next |
Server Programming Interface (SPI) は、ユーザ定義 C 関数の内側で SQL を実 行できるようにするための試みです。 現在の PostgreSQL には Procedural Language(PL)がな いため、SPI は server stored procedure とト リガを実装する唯一の方法です。 将来は SPI は PL の実装機構となる予定です。
実際には、SPI はパーサ、プランナ、オプティマイザ、 問い合わせ実行部 (Executor)へのアクセスを容易にするための 一連の組み込み関数群に過ぎません。 また、SPI はメモリ管理も行います。
誤解を防ぐため、今後は 関数を SPI インターフェイス関数の意味で、 また、手続きを SPI を呼び出すユーザ定義 C 関数の意味で使うことにします。
SPI 手続きは常に(上位の)問い合わせ実行部から呼び出され、 SPI マネージャは 問い合わせ実行部を使ってユーザの問い合わせを実行します。 他の手続きは、手続きを実行中の問い合わせ実行部から呼び出されることもあります。
注意してほしいのは、手続きの中で問い合わせを実行している最中にトランザク ションがアボートすると、その手続きに戻らないということです。 この場合、すべての実行結果がロールバックされてサーバはクライアントから の次のコマンドを待つ状態になります。この仕様は将来の版で変更される予定 です。
この他の制約としては、BEGIN, END, ABORT (いずれもトランザクションの制 御文)とカーソル制御ができないということです。これも将来変更される予定 です。 [1]
[1] 訳注:COPY TO/FROM stdin も実行できないようです。
If successful, SPI functions return a non-negative result (either via a returned integer value or in SPI_result global variable, as described below). On error, a negative or NULL result will be returned.
Prev | Home | Next |
Examples | インターフェイス関数 |