他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

1.9. libpq 制御関数

バックエンドからの注意メッセージを、libpqはデフォルトでstderrに出力します。同様に、わずかですが libpq自身が生成するメッセージも、同じように出力されます。この動作は、メッセージに対して何らかの処理をするコールバック関数を用意すれば、置き換えることができます。このコールバック関数には、エラーメッセージのテキスト(末尾に改行を含む)と、PQsetNoticeProcessorに渡された void型のポインタがそのまま渡されます(必要であれば、このポインタをアプリケーション固有の状態を知るために使います)。デフォルトの警告プロセッサは、以下のような単純なものです。

static void
defaultNoticeProcessor(void * arg, const char * message)
{
    fprintf(stderr, "%s", message);
}

特殊な警告プロセッサを使うには、PGconn オブジェクトを生成した直後に、PQsetNoticeProcessorを呼び出します。

返り値は直前の警告プロセッサへのポインタです。NULLのコールバック関数ポインタを与えた場合は、何のアクションも得られませんが、現在のポインタを得ることができます。

一旦警告プロセッサをセットしたら、PGconnオブジェクトか、それから生成されたPGresultオブジェクトが存在している間は、その関数が呼び出される可能性があると考えておくべきです。 PGresultの生成時には、PGconnの現在の警告プロセッサのポインタが、PQgetvalueのようなルーチンで使用可能であるように、PGresultへコピーされます。