[PHP-users 6734] Re: FRC: New PostgreSQL function for PHP (pg_convert)

Yasuo Ohgaki php-users@php.gr.jp
Mon, 08 Apr 2002 11:37:57 +0900


大垣です。

フィードバックありがとうございます。
PostgreSQLの型を定義されているかたは、ほとんど
いないようなのでユーザー定義型は当面サポートしない
事にしました。

最低限のドキュメントはCVSのext/pgsql/READMEを
見て頂けるようお願いします。しかし、READMEにはほ
とんど何も書いていないのでext/pgsql/tests/にあ
るテストスクリプトを見て頂くと使い方が解ると思いま
す。

http://cvs.php.net/cvs.php/php4/ext/pgsql

今のところPostgreSQL関連のバグはDBAをPostgreSQL
モジュールが同時使えないバグを除けば、既知のバグは
ありません。

バグレポートは大歓迎します。

Naofumi Kondoh wrote:
> ソフト工房の近藤です。
> 
> Yasuo Ohgaki wrote:
> 
>>大垣です。
> 
> 
> ---- snip ----
> 
> pg_convert() について。
> 
> (1) データーエラーの場合は、どのような形でエラーを返す
>     のでしょうか?。

単純にFALSEを返します。

> 
> (2) 引数にDB列(column)がありませんが、列の指定はどの
>     ようにするのでしょうか。

連想配列のキーを列名に使っています。

pg_convert(とその他の関数も)は連想配列のみ受け付けます。
ハッシュキーが数値の場合はエラーになります。

# PostgreSQLは列名に日本語をサポートしていたので
# 困る方もいるかもしれません。PHPが日本語をサポート
# すれば良い話ですが、、、

> 
> (3) 日付型の場合、SET DATESTYLE 指定のスタイルに対応
>     した日付チェックになると思いますが、ISO 指定の
>     場合、YYYY/MM/DD はエラーとするのか、YYYY-MM-DD
>     にconvertするのか。ISO 指定で、xx/yy/YYYY 形式
>     の場合、エラーとするか、US とみなすか、それとも
>     European とみなすかなど、難しいですね。

先ほどCVSのHEADブランチにコミットしたのですが、個人的に必要
なISOのみサポートしています。(これも完全ではありませんが、、)

# PHP 4.3.0がリリースされる頃には、もう少し賢くチェック
# する用にしたいのですが、、、

そのうち、PostgreSQLのソースから実際に使っているチェック
と同じ動作をするように変更します。

> 
>     個人的には自動変換なしで、少しでも形式が違えば
>     エラーというのが好きです。

了解しました。私もそう思います。

> 
>     必要なら、2/1 と入力したら 2002-02-01 00:00:00
>     などに変換するルーチンを自分で書く方が融通がきい
>     てわかりやすい。

私もそう思います。

> -------
> 
> この ML で言ってもしかたないことですが、PostgreSQLも
> エラー内容がわかるようなまともな SQLSTATUS/SQLCODE を
> 返すようになってほしいものです。

PHP4.2.0からpg_result_status()がサポートされています。
この関数を使う事により、PHPではほぼ無理であったトランザク
ション処理の回復ができるようになります。
(pg_last_notice()は半分しか実装されていませでした。
この関数も仕様通りに動作するように先日コミットしたので
PHP4.3.0から仕様通りに動作します。ちなみに、中途半端
にコミットしたのは私ではありません。念の為。)

> 話はかわりますが、個人的には、単一の SQL 文しか実行
> できない pg_exec_xxx が欲しいです。それで、初心者や
> エンドユーザーには、複数 SQL文が実行可能な pg_exec 
> を使用禁止にして、単一 SQL 文のみ実行可能な関数を
> 使わせたい。

基本的にlibpqのPQexecにそのまま文字列を送信している
だけなので、この機能をサポートするには送信する前にパー
スする必要があります、、、、

PS:CVS版のPostgreSQLモジュールは新しい関数/機能を
除けばリリース版とほぼ同じ安定性です。4.1.0以降のPHP
であれば、モジュールソースを置き換えるだけで新しい関数
機能は使えます。

--
Yasuo Ohgaki


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/