1.8. libpq制御関数

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

static void
defaultNoticeProcessor(void * arg, const char * message)
{
    fprintf(stderr, "%s", message);
}
特定の警告プロセッサを使うには、PGconnオブジェクトを生成したのちに、 PQsetNoticeProcessorを呼び出すだけです。

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

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