Chapter 3. libpq++ - C++ バインディングライブラリ

Table of Contents
3.1. 制御と初期化
3.2. libpq++のクラス
3.3. データベース接続関数
3.4. 問い合わせ実行関数
3.5. 非同期通知
3.6. COPYコマンドに関連する関数

libpq++は、Postgresのための C++ APIで、Postgresバックエンドサーバへの接続手段を クライアントプログラムに与えるクラスの集合です。これらのバックエンドへの 接続は二つの形態を取ります。ひとつは「データベースクラス」、 もうひとつは「ラージオブジェクトクラス」です。

「データベースクラス」の目的はデータベースの操作にあります。あらゆる種類の SQLの問い合わせをPostgresバックエンドサーバへ 送信し、そしてサーバの応答を取り出すことができます。

「ラージオブジェクトクラス」の目的はデータベース内のラージオブジェクトの 操作にあります。ラージオブジェクトクラスのインスタンスも、 Postgresバックエンドサーバへ通常の問い合わせを 送ることはできます。しかしこれは、何もデータを返さない簡単な問い合わせを することだけが目的です。ラージオブジェクト自体はファイルストリームのように 見えるべきものなので、いずれはC++のファイルストリーム、 cincout及びcerr とほぼ同じような動作になるはずです。

この章は、Cライブラリlibpqのドキュメントをベースにしています。 このセクションの最後にlibpq++プログラミングの例として、 三つの短いプログラムが書かれています。(必ずしもいいプログラム例とは言えませんが) またlibpq++アプリケーションの例として、 src/libpq++/examplesにいくつか収録しています。 この中には本章のサンプル三つも含まれています。

3.1. 制御と初期化

3.1.1. 環境変数

以下の環境変数は動作環境のデフォルト値を設定し、アプリケーションプログラム にデータベース名をハードコーディングすることを避けるために使われます。

Note: 使用できる接続オプションの全リストは Section 1.9を参照して下さい。

PQconnectdbまたはPQsetdbLoginを呼び出すプログラムが 接続パラメータの値を直接指定しなかった場合、PQconnectdbPQsetdbLoginは以下の環境変数を使って接続パラメータのデフォルト値を 決定します。簡単なアプリケーションプログラムにデータベース名を ハードコーディングすることを避けるのに便利です。

Note: libpq++が使用するのは環境変数、あるいは libpqPQconnectdbのconninfo形式文字列のみです。

  • PGHOSTはデフォルトサーバ名を設定します。 スラッシュで始まる場合は、TCP/IP接続ではなく、UNIXドメインソケットを 使用します。値はソケットファイルが格納されているディレクトリ名です。 (デフォルトでは"/tmp"です。)

  • PGPORTPostgresバックエンドと 通信するためのデフォルトTCPポート、またはUNIX ドメインソケットファイルの 拡張子を設定します。

  • PGDATABASEはデフォルトの Postgresデータベース名を設定します。

  • PGUSERはデータベースへの接続と認証に使われる ユーザ名を設定します

  • PGPASSWORDはバックエンドがパスワード認証を要求した場合に 使われるパスワードを設定します。

  • PGREALMPostgresと共に使う Kerberosの領域がローカルのものと異なる場合に、その領域を設定します。 PGREALMが設定されると、Postgres アプリケーションは、設定された領域のサーバと認証を行おうとし、 別のチケットファイルを使って、ローカルのチケットファイルと 競合しないようにします。この環境変数は、バックエンドがKerberosによる 認証を選択した場合にのみ使われます。

  • PGOPTIONSPostgres バックエンドに対する付加のランタイムオプションを設定します。

  • PGTTYはバックエンドサーバのデバッグメッセージを出力する ファイル、あるいはttyを設定します。

以下の環境変数は各Postgresのセッションに対しての、ユーザレベルの デフォルト動作を設定する時に使います。

  • PGDATESTYLEはデフォルトの日時表示スタイルを設定します。

  • PGTZはデフォルトのタイムゾーンを設定します。

以下の環境変数は各Postgresのセッション対しての、 デフォルトの内部動作を設定するのに使います。

  • PGGEQOは遺伝的アルゴリズムによるオプティマイザの 動作モードを設定します。

これらの環境変数の正しい設定値に関してはSQLSETコマンドを参照して下さい。