XLIV. 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. ラージオブジェクトを使う


<?php
$database = pg_Connect ("", "", "", "", "jacarta");
pg_exec ($database, "begin");
    $oid = pg_locreate ($database);
    echo ("$oid\n");
    $handle = pg_loopen ($database, $oid, "w");
    echo ("$handle\n");
    pg_lowrite ($handle, "gaga");
    pg_loclose ($handle);
pg_exec ($database, "commit")
pg_exec ($database, "end")
?>

目次
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 名を返す