Chapter 17. libpq C++ バインディング

Table of Contents
制御と初期化
libpq++ のクラス
データベース接続関数
問い合わせ実行関数
非同期通知
COPY コマンドに関連した関数
注意点

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

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

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

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

制御と初期化

環境変数

以下の環境変数は動作環境のデフォルト値を設定し, システムデフォルトのデータベース名がアプリケーションプログラムに影響することを防ぎます.

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

PQconnection または PQsetdbLogin を呼び出すプログラムが,接続パラメータの値を直接指定しなかった場合, PQconnection と PQsetdbLogin は以下の環境変数を使って接続パラメータのデフォルト値を決定します. システムデフォルトのデータベース名が簡単なアプリケーションプログラムに影響することを防ぐのに便利です.

Note: libpq++ が使うのは環境変数, あるいは PQconnect の conninfo 形式の文字列のみです.

  • PGHOST はデフォルトサーバ名を設定します. 長さが 0 でない文字列を設定した場合は TCP/IP による接続が使われます. ホスト名がない場合,libpq はローカルの UNIX ドメインソケットを使って接続します.

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

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

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

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

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

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

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

以下の環境変数は個々の Postgres とのセッションにおける,ユーザレベルの デフォルト動作を設定するのに使います.

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

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

以下の環境変数は個々の Postgres とのセッションにおける, デフォルトの内部動作を設定するのに使います.

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

  • PGRPLANS はオプティマイザにおける右優先 プランニングをデフォルトで使用するかどうかを設定します.

  • PGCOSTHEAP はオプティマイザに対して ヒープサーチのデフォルトコストを設定します.

  • PGCOSTINDEX はオプティマイザに対して インデックスサーチのデフォルトコストを設定します.

これらの環境変数に対する正しい設定値に関しては SQLSET コマンドを参照してください.

Notes

[1]

訳注:実際には「三つのサンプル」はこのドキュメントに含まれていません