XLIII. PostgreSQL 関数

Postgres は元々 UCB(カリフォルニア大学バークレイ校) コンピュ ータ・サイエンス学部で開発されたものですが、これは、いくつか の商用データベースにおいて現在使えるようになりつつある、多く のオブジェクト関連概念の先駆けとなるものです。Postgres では、 SQL92/SQL3 言語サポート、トランザクション機能、および拡張可 能な型といったものを提供しています。Postgres はパブリック・ ドメインのオープンソースで、オリジナルのバークレイ・コードか ら発展してきた子孫にあたります。

PostgreSQL は無料で利用できます。現在のバージョン は www.PostgreSQL.org で入手可能です。

バージョン 6.3 (03/02/1998) からは、PostgreSQL は UNIX ドメイ ンソケットを使用しており、この新しい将来性に対する調理法が 用意されました。 このソケットは/tmp/.s.PGSQL.5432にありま す。このオプションはpostmasterに対して '-i' フラグを指定することで有効となります。これは "Unix ドメインソケッ ト以外の TCP/IP ソケットも listen する" という意味です。

表 1. Postmaster と PHP

PostmasterPHPステータス
postmaster &pg_connect("", "", "", "", "dbname");OK
postmaster -i &pg_connect("", "", "", "", "dbname");OK
postmaster &pg_connect("localhost", "", "", "", "dbname");Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20.
postmaster -i &pg_connect("localhost", "", "", "", "dbname");OK

次のコマンドでも接続を確立することができます。 $conn = pg_Connect("host=localhost port=5432 dbname=chris");

ラージオブジェクト(lo)インターフェースを使用するには、その問 い合わせをトランザクション・ブロックの中に入れてやる必要があ ります。トランザクション・ブロックはbegin で始まり、そのトランザクションが有効な場合はcommit またはendで終わります。トランザ クションが失敗した場合は、そのトランザクションは abortまたはrollbackにより閉じら れなければなりません。

例 1. ラージオブジェクトを使う

  1 
  2 <?php
  3 $database = pg_Connect ("", "", "", "", "jacarta");
  4 pg_exec ($database, "begin");
  5     $oid = pg_locreate ($database);
  6     echo ("$oid\n");
  7     $handle = pg_loopen ($database, $oid, "w");
  8     echo ("$handle\n");
  9     pg_lowrite ($handle, "gaga");
 10     pg_loclose ($handle);
 11 pg_exec ($database, "commit")
 12 pg_exec ($database, "end")
 13 ?>
 14 

目次
pg_Close — PostgreSQL コネクションを閉じる
pg_cmdTuples — 影響を受けたタプルの数を返す
pg_Connect — コネクションを開く
pg_DBname — データベース名の取得
pg_ErrorMessage — エラーメッセージの取得
pg_Exec — 問い合わせを実行する
pg_Fetch_Array — 行を配列として取得する
pg_Fetch_Object — 行をオブジェクトとして得る
pg_Fetch_Row — 数字をインデックスとする配列として行を得る
pg_FieldIsNull — フィールドが NULL かどうか調べる
pg_FieldName — フィールドの名前を返す
pg_FieldNum — カラム番号を返す
pg_FieldPrtLen — 表示された長さを返す
pg_FieldSize — 指定フィールドにおける内部記憶領域のサイズを返す
pg_FieldType — フィールド番号に対応する型名を返す
pg_FreeResult — メモリを開放する
pg_GetLastOid — 最終オブジェクト ID を返す
pg_Host — ホスト名を返す
pg_loclose — ラージオブジェクトをクローズする
pg_locreate — ラージオブジェクトを生成する
pg_loopen — ラージオブジェクトをオープンする
pg_loread — ラージオブジェクトを読み込み
pg_loreadall — ラージオブジェクト全体を読み込む
pg_lounlink — ラージオブジェクトを削除する
pg_lowrite — ラージオブジェクトを書く
pg_NumFields — フィールド数を返す
pg_NumRows — 行数を返す
pg_Options — オプションを返す
pg_pConnect — 持続的なデータベース接続を行う
pg_Port — ポート番号を返す
pg_Result — 結果 ID から実際の値を返す
pg_tty — tty 名を返す