[pgsql-jp: 25549] Re: bytea and multi-byte enabled PostgreSQL?

Yasuo Ohgaki yohgaki @ yahoo.co.jp
2002年 4月 8日 (月) 21:27:24 JST


大垣です。

Tatsuo Ishii wrote:
> 石井です.
> 
> 
>>>大垣です。
*SNIP*
>>>
>>>バイナリデータをEUC-JPテキストとして取り扱っている為、上
>>>記のエラーが発生していると思います。
>>
>>変ですねぇ。EUC-JPとしてのエンコーディングチェックはbyteaには適用され
>>ないはずなのですが.こちらには PHP4.2.0-dev の環境がないのですが,
>>$escapedの内容を教えて頂ければ再現テストできます.
> 
> 
> この件ですが,大垣さんからテストデータをいただき,原因がわかりました.
> その結果,
> 
> (1) INSERT するときに bytea型にcastする
> 
> (2) PostgreSQLのlibpq関数PQespacpeBytea()を修正する
> 
> のどちらかの対処が必要なことが分かりました.現在開発中のcurrentおよび
> 7.2.2では,すでに(2)の対処がされています.

ありがとうございます!

> 
> 必要でしたら,(2)の修正を7.2.1に行うパッチを提供できますが,いかがしま
> しょう? > 大垣さん

(1)の方法をとらせて頂きます。
INSETは正しく行なえました。

FAQのような気がしますが、BYTEA型のデータをSELECTしたした場合
"\000\320"の\OCTAL形式文字列が返ってきますが、これは仕様で戻り
値はユーザーが変換すると言う事でよいのでしょうか?

"SELECT bin FROM table"
"SELECT bin::BYTEA FROM table"
"SELECT CAST (bin AS BYTEA) FROM table"
すべてエスケープ処理された値が返ってきます。

変換関数を別に自分で書いても大した事はないのですが、同じ物を2度実装
しても時間の無駄なのでお聞きします。

# libpq-fe.h、マニュアルを見ても分かりませんでした,

宜しくお願いします。

--
Yasuo Ohgaki





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




pgsql-jp メーリングリストの案内