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