サーバプログラミングインタフェース

PostgreSQL 8.4.1文書
前のページ | 巻戻し |  | 早送り | 次のページ

# 第 42章サーバプログラミングインタフェース

サーバプログラミングインタフェース（SPI）は、ユーザ定義のC関数からSQL問い合わせを実行する機能をユーザに提供します。 SPIはパーサ、プランナ、エクゼキュータへのアクセスを単純化したインタフェース関数の集合です。 また、SPIは多少のメモリ管理を行います。

> 注意: 利用可能な手続き言語は、プロシージャからSQLコマンドを実行するための各種手段を提供します。 これらのほとんどは、SPIを元にしていますので、この文書はこれらの言語のユーザにとっても有用な場合があります。

誤解を防ぐために、これ以降、"関数"をSPIインタフェース関数の意味で、"プロシージャ"をSPIを呼び出すユーザ定義のC関数の意味で使うことにします。

コマンドがSPIの失敗を起こした場合、その制御はプロシージャには戻らないことに注意してください。 それどころか、プロシージャを実行していたトランザクションもしくは副トランザクションはロールバックされます （これはSPI関数のほとんどでエラーを返す規約があることから奇妙に思われるかもしれません。 しかし、こうした規約はSPI関数自身でエラーを検知した時にのみ適用されるものです）。 失敗する可能性があるSPI呼び出しを囲む副トランザクションを独自に用意することで、エラーの後の制御を戻すことができます。 要求される機構がまだ流動的であるため、これはまだ文書化されていません。

SPI関数は成功時に非負の結果を（戻り値、もしくは後述の`SPI_result`グローバル変数の中に）返します。 エラー時、負の結果もしくは`NULL`を返します。

SPIを使用するソースコードファイルでは`executor/spi.h`ヘッダファイルをincludeしなければなりません。

前のページ | ホーム | 次のページ
データベースアクセス | 上に戻る | インタフェース関数