[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 メーリングリストの案内