これらの関数はlibpqの動作の各種詳細を制御します。
PQclientEncoding
クライアント符号化方式を返します。
int PQclientEncoding(const PGconn *conn);
これがEUC_JPなどのシンボル文字列ではなく符号化方式IDを返すことに注意してください。 符号化方式IDを符号化方式名に変換するためには以下を使用してください。
char *pg_encoding_to_char(int encoding_id);
PQsetClientEncoding
クライアント符号化方式を設定します。
int PQsetClientEncoding(PGconn *conn, const char *encoding);
connはサーバへの接続、encodingは使用したい符号化方式です。
この関数は符号化方式の設定に成功すると、0を返します。
さもなくば-1を返します。
この接続における現在の符号化方式はPQclientEncoding
を使用して決定することができます。
PQsetErrorVerbosity
PQerrorMessage
とPQresultErrorMessage
で返されるメッセージの冗長度を決定します。
typedef enum { PQERRORS_TERSE, PQERRORS_DEFAULT, PQERRORS_VERBOSE } PGVerbosity; PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
PQsetErrorVerbosity
は冗長度モードを設定し、接続における以前の状態を返します。
TERSEモードでは、返されるメッセージには深刻度、主テキスト、位置のみが含まれます。
これは通常単一行に収まります。
デフォルトモードでは、上に加え、詳細、ヒント、文脈フィールドが含まれるメッセージが生成されます。
(これは複数行に跨るかもしれません。)
VERBOSEモードでは、全ての利用可能なフィールドが含まれます。
冗長度の変更は、既に存在するPGresultオブジェクト内から取り出せるメッセージには影響を与えません。
その後に作成されたオブジェクトにのみ影響を与えます。
PQtrace
クライアント/サーバ間の通信トレースを有効にし、デバッグ用のファイルストリームに書き出します。
void PQtrace(PGconn *conn, FILE *stream);
注意: Windowsにおいて、libpqライブラリとアプリケーションを異なるフラグでコンパイルすると、この関数呼び出しでFILEポインタの内部表現のちがいによりアプリケーションはクラッシュするでしょう。 特に、ライブラリを使用するアプリケーションでは、マルチスレッド/シングルスレッド、リリース/デバッグ、静的リンク/動的リンクに関して、ライブラリと同じフラグを使わなければなりません。
PQuntrace
PQtrace
によって起動されたトレース処理を無効にします。
void PQuntrace(PGconn *conn);