Chapter 1. libpq - C 言語ライブラリ

Table of Contents
1.1. データベース接続関数
1.2. 問い合わせ実行関数
1.3. 非同期問い合わせ関数
1.4. 近道
1.5. 非同期通知
1.6. COPYコマンドに関連した関数
1.7. libpqトレース関数
1.8. libpq制御関数
1.9. マルチバイトサポート関数
1.10. 環境変数
1.11. スレッドの振る舞い
1.12. サンプルプログラム

libpqC 言語のアプリケー ションプログラマ用の Postgresインタフェー スです。 libpq は クライアントプログラムから Postgres のバックエンドサーバへ 問い合わせを渡し、その結果を受け取るためのライブラリルーチンの集合 です。 libpqlibpq++ (C++)や libpgtcl (Tcl)、 Perlecpgなどを含む、他の Postgresのアプリケーションインタフェース を支えるエンジンでもあります。 ですので、libpq が振る舞う様は、これらのインタフェースパッケージを 使用する人にとって重要なものになります。

このセクションの最後には、 libpq の使い方を示す、三つの短いプログラムを載せ ておきました。 また以下に示すディレクトリに、libpqを利用し たアプリケーションプログラムの完全な例があります。

../src/test/regress
../src/test/examples
../src/bin/psql
   

libpq を使用してフロントエンドプログラムを作成 するには、ヘッダファイル libpq-fe.h のインクル ードと、libpq のライブラリとのリンクが必要 です。

1.1. データベース接続関数

Postgres のバックエンドサーバとの接続を 作成するには、以下のルーチンを使用します。 アプリケーションプログラムは、バックエンドとの接続を一度に複数個開 くことができます。 (一つの理由として、複数のデータベースへのアクセスが挙げられます。) 個々の接続は、PQconnectdb または PQsetdbLogin を呼び出すことで得られる PGconnオブジェクトによって表されます。 なおこれらの関数は、PGconn オブジェクトに割り当てる ほんのわずかなメモリの余裕さえもない場合を除き、NULL ではなく常にオ ブジェクトのポインタを返します。 またこのコネクションオブジェクトを通じて問い合わせを送る前に、 PQstatus を呼び出して、データベースとの接続に成功した かどうかをチェックすべきでしょう。

libpq アプリケーションプログラマは PGconn による抽象化に注意を払うべき です。 PGconn の内容は以下に挙げるアクセッサ関数を使って取り出してくだ さい。 PGconn 構造体中のフィールドは将来予告なく変更されることがありま す。 ですから直接フィールドを参照することは避けてください。 (Postgresリリース 6.4 の初期の段階から、 PGconn 構造体の定義をlibpq-int.hの中から外しまし た。以前作成したプログラムが PGconn のフィールドを直接操作している場合、 libpq-int.h をインクルードすれば使い続けることが できます。しかしそのプログラムは是非とも修正してください。