[プログラミング][PostgreSQL] 比較演算子の型チェックについて
ちょっとPostgreSQLの関数の挙動について分からないことがあったのでメモ。
通常、比較演算子を使うとき、両者の型が同じでないとエラーになる。
# select '0.0' = 0; ERROR: invalid input syntax for integer: "0.0" #
しかし、関数の返り値については型チェックがうまく働いていないようで、比較処理が実行されてしまう。
# select return_str0() = 0; ?column? ---------- f (1 row) # select return_str0() = 0.0; ?column? ---------- t (1 row) #
定義した関数は以下になります。返り値の型も明示的に宣言しているのにチェックが働いていないっぽい。今回確認したのはPostgreSQL8.2.4でした。
create function return_str0() returns character as $_$ begin return '0.0'; end; $_$ language plpgsql;
これは仕様なのかな?これってPostgreSQL9でも再現するのか気になる。
[その他] 部屋から
夕日が綺麗だったので写真を撮ってみた。そろそろ山登りを再開しようかと思っている。
送信者 2011/04/24 |
[その他] 玉川上水
今日は玉川上水を散歩してきた。昨日雨が降ったせいか虫がちょっと元気良くて大変だった。
送信者 2011/04/24 |