かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

postgresql 9.1 からエスケープ文字の認識が変わってた

postgresql は 9.1 から standard_conforming_strings のデフォルト値が on に変更になり、少しハマったのでメモ。

この変更は、E'...’ 形式でない文字列内の \ が エスケープとして認識されなくなるということです。つまり、自前でゴリゴリエスケープ処理なんかしているとアウトになりかねません。(そんなプログラム書くな。)なので、プリペアドステートメントなり、ライブラリの提供している安全なものを使うようにしましょう。

9.1 以前 (standard_conforming_strings off 設定)

'\'' :OK
E'\’’ : OK

9.1 以降 (standard_conforming_strings on 設定)

'\'' :NG
E'\'' :OK
'''' :OK

詳細は下記参考文献をご覧ください。

参考文献