[pgsql-jp: 32409] 埋め込みSQL(ECPG)でのbytea型の列へのinsertについて

手嶋修一 teshima.shuichi @ jp.panasonic.com
2004年 3月 3日 (水) 18:10:37 JST


手嶋です。初投稿です。
PostgreSQL 7.4.1を使っています。OSはMiracle linux V2.1です。

埋め込みSQL(ECPG)でのbytea型の列へのinsertを行うため、

PQescapeByteでバイナリ文字列変換 --> bytea 型の列に insert 

で、処理を行なっていますが、例えば頭3バイトが文字列 ABC で
後ろ3バイトがnullといった値をinsertした場合、ログを見ると次の
ようなSQLコマンドで実行されています。

INSERT INTO T1 VALUES ('ABC\\\\000\\\\000\\\\000')   ※テーブル名:T1

本来であれば

INSERT INTO T1 VALUES ('ABC\\000\\000\\000')

となるのが正しいと思うのですが、2回エスケープ変換されているような感じです。
なぜこのようになるのか教えていただけないでしょうか?

ちなみにソースの流れは以下のような内容です。

(void)sprintf(add_sql, "INSERT INTO T1 VALUES (?)");

EXEC SQL prepare ST_ADD from :add_sql;

t1 = PQescapeBytea( t1_data, 6, &data_len);

EXEC SQL execute ST_ADD using :t1;


以上よろしくお願いします。



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