libpq++は、Postgresのための C++ APIで、Postgresバックエンドサーバへの接続手段を クライアントプログラムに与えるクラスの集合です。これらのバックエンドへの 接続は二つの形態を取ります。ひとつは「データベースクラス」、 もうひとつは「ラージオブジェクトクラス」です。
「データベースクラス」の目的はデータベースの操作にあります。あらゆる種類の SQLの問い合わせをPostgresバックエンドサーバへ 送信し、そしてサーバの応答を取り出すことができます。
「ラージオブジェクトクラス」の目的はデータベース内のラージオブジェクトの 操作にあります。ラージオブジェクトクラスのインスタンスも、 Postgresバックエンドサーバへ通常の問い合わせを 送ることはできます。しかしこれは、何もデータを返さない簡単な問い合わせを することだけが目的です。ラージオブジェクト自体はファイルストリームのように 見えるべきものなので、いずれはC++のファイルストリーム、 cin、cout及びcerr とほぼ同じような動作になるはずです。
この章は、Cライブラリlibpqのドキュメントをベースにしています。 このセクションの最後にlibpq++プログラミングの例として、 三つの短いプログラムが書かれています。(必ずしもいいプログラム例とは言えませんが) またlibpq++アプリケーションの例として、 src/libpq++/examplesにいくつか収録しています。 この中には本章のサンプル三つも含まれています。
以下の環境変数は動作環境のデフォルト値を設定し、アプリケーションプログラム にデータベース名をハードコーディングすることを避けるために使われます。
Note: 使用できる接続オプションの全リストは Section 1.9を参照して下さい。
PQconnectdbまたはPQsetdbLoginを呼び出すプログラムが 接続パラメータの値を直接指定しなかった場合、PQconnectdbと PQsetdbLoginは以下の環境変数を使って接続パラメータのデフォルト値を 決定します。簡単なアプリケーションプログラムにデータベース名を ハードコーディングすることを避けるのに便利です。
Note: libpq++が使用するのは環境変数、あるいは libpqのPQconnectdbのconninfo形式文字列のみです。
PGHOSTはデフォルトサーバ名を設定します。 スラッシュで始まる場合は、TCP/IP接続ではなく、UNIXドメインソケットを 使用します。値はソケットファイルが格納されているディレクトリ名です。 (デフォルトでは"/tmp"です。)
PGPORTはPostgresバックエンドと 通信するためのデフォルトTCPポート、またはUNIX ドメインソケットファイルの 拡張子を設定します。
PGDATABASEはデフォルトの Postgresデータベース名を設定します。
PGUSERはデータベースへの接続と認証に使われる ユーザ名を設定します
PGPASSWORDはバックエンドがパスワード認証を要求した場合に 使われるパスワードを設定します。
PGREALMはPostgresと共に使う Kerberosの領域がローカルのものと異なる場合に、その領域を設定します。 PGREALMが設定されると、Postgres アプリケーションは、設定された領域のサーバと認証を行おうとし、 別のチケットファイルを使って、ローカルのチケットファイルと 競合しないようにします。この環境変数は、バックエンドがKerberosによる 認証を選択した場合にのみ使われます。
PGOPTIONSはPostgres バックエンドに対する付加のランタイムオプションを設定します。
PGTTYはバックエンドサーバのデバッグメッセージを出力する ファイル、あるいはttyを設定します。
以下の環境変数は各Postgresのセッションに対しての、ユーザレベルの デフォルト動作を設定する時に使います。
PGDATESTYLEはデフォルトの日時表示スタイルを設定します。
PGTZはデフォルトのタイムゾーンを設定します。
以下の環境変数は各Postgresのセッション対しての、 デフォルトの内部動作を設定するのに使います。
PGGEQOは遺伝的アルゴリズムによるオプティマイザの 動作モードを設定します。
これらの環境変数の正しい設定値に関してはSQLの SETコマンドを参照して下さい。