MW211 EXIT

devlog
PostgreSQL/9.0と9.1の違い(1)
2012年04月05日
PostgreSQLの9.0と9.1では「standard_conforming_strings」の既定値が変更になった。
┌────┬─────────────────┐
│9.0以前 │standard_conforming_strings = off │
├────┼─────────────────┤
│9.1以降 │standard_conforming_strings = on  │
└────┴─────────────────┘

エスケープ文字の扱いは以下のように違う。
┌──┬───┬───┬───┬───┐
│    │'     │"     │\     │\     │
├──┼───┼───┼───┼───┤
│off │'\''  │'"'   │'\\'  │E'\\' │
├──┼───┼───┼───┼───┤
│on  │''''  │'"'   │'\'   │E'\\' │
└──┴───┴───┴───┴───┘

よって、サニタイズの仕方も以下のように違ってくる。
┌───────┬───────┐
│ 9.0以前(off) │ 9.1以降(on)  │
├───────┼───────┤
│「'」→「\'」 │「'」→「''」 │
├───────┼───────┤
│「"」→「\"」 │  (そのまま)  │
├───────┼───────┤
│「\」→「\\」 │              │
└───────┴───────┘
分類:PostgreSQL